Retinex 알고리즘은 영상의 contrast를 향상시키거나, sharpness를 증진시킬 때 많이 사용한다. 또한 픽셀값의 dynamic range가 큰 경우에 이것을 압축시켜 영상 데이터 전송에 따른 병목현상의 해소에 이용할 수 있다.

Retinex 알고리즘의 기본원리는 입력영상에 들어있는 배경성분을 제거하는 것이다.
1. 배경영상는  입력영상의 평균적인 영상로 생각할 수 있는데, 이것은 적당한 스케일(필터사이즈)의 가우시안 필터를 적용하여서 얻을 수 있다. 이 필터를 적용하면 입력영상에서 필터사이즈 보다도 작은 스케일은 무시하는 효과를 준다.
2. 입력영상의 반사성분(배경조명에 무관한)은 입력영상을 앞서 구한 배경영상으로 나누면 된다
3. Retinex 출력은 이 반사성분에 로그값을 취한 것이다. 이 로그값을 취하므로써 반사성분이 분포범위(=dynamic range)를 압축하는 효과를 얻는다( 원래 로그함수는 큰 수의 연산을 작은 수의 연산으로 바꾼다)
- 입력영상 = I(x, y) ;
- 가우시안 필터 = G(x, y) = A exp(-(x2 + y2 )/2σ2)
- 배경영상 = G(x, y)* I(x, y) = convolution;
- Retinex 출력 
   R(x, y) = log(반사성분)
             = log(입력영상/배경영상)
             = log(I(x, y)) - log(G(x, y)* I(x, y));


이처럼 하나의 스케일에 대해서 적용하는 경우를 SSR(single-scale retinex)알고리즘이라고 한다. 컬러영상의 경우에는 각각의 RGB채널에 대해서 알고리즘을 적용하면 된다.

Retinex 영상을 구할 때 하나의 스케일이 아니라 여러가지 스케일에 대해서 적용한 retinex 영상을 적절한 가중치를 주어서 합한 결과를 출력영상으로 사용할 수 있다. 이 경우가 MSR(multi-scale retinex)알고리즘이다.

  Rmsr(x,y) = i wiRssr(x,y) = i (가중치) * SSR.

이렇게 얻은  Retinex 영상은 적당한 offset과 stretching을 하여서 픽셀값이 [0,255]구간에 있게 조절한다. 이 과정은 Retinex 출력영상 픽셀의 평균값과 편차를 구하여서 분석할 수 있다.

컬러영상의 경우에 Retinex 출력영상은 전체적으로 그레이화되는 경향이 있어서 이것을 보완하기 위해서 아래의 추가적인 처리과정을 더 거친다.

   R'msr(x,y)_red = log(C* Ir/(Ir + Ig + Ib)) * Rmsr(x,y)_red ;
   R'msr(x,y)_gre = log(C* Ig/(Ir + Ig + Ib)) * Rmsr(x,y)_gre ;
   R'msr(x,y)_ble = log(C* Ib/(Ir + Ig + Ib)) * Rmsr(x,y)_blu ;


여기서, C는 상수값이고, Ir, Ig, Ib는 입력영상의 RGB-채널이다.

*그레이 이미지 처리 결과:


*구현 코드는 다음을 참고: 그레이: http://kipl.tistory.com/33 
                               컬러: http://blog.naver.com/helloktk/80039132534
* 기술적으로  log를 취하므로 입력영상에 +1을 더해서 log(0)이 나오는 것을 방지해야 한다.
* convolution된 영상도 1보다 작은 경우에 1로 만들어야한다.
* 스케일이 큰 경우에 필터사이즈가 매우 크므로 효과적인 convolution 알고리즘을 생각해야 한다. 보통 recursive 필터링을 하여서 빠르게 convolution결과를 얻는다.

저작자 표시 비영리 변경 금지
신고
크리에이티브 커먼즈 라이선스
Creative Commons License

'Image Recognition' 카테고리의 다른 글

Savitzky-Golay smoothing filter  (2) 2010.03.24
Watershed Algorithm Code  (0) 2010.03.19
Retinex 알고리즘  (10) 2010.02.03
Gaussian Mixture Model & KMeans  (4) 2010.01.30
Image Morphing  (0) 2010.01.24
Fant's Algorithm  (0) 2010.01.22
Posted by helloktk


티스토리 툴바