Retinex theory를 이미지 처리에 활용하여 구현하는 알고리즘으로는,
- SSR (Single-Scale Retinex)
- MSR (Multi-Scale Retinex)
- MSRCR (Multi-Scale Retinex with Color Restoration)
등이 있다. 이 각각을 순서대로 구현해보았는데 결과는 아래와 같이 차이가 있다.

입력 이미지가 이렇게 들어가면

SSR을 하면 (Scale값은 임의선택) 어떠한 값을 Scale로 선언하느냐에 따라 복불복이지만 이러한 이미지가 나오고,

MSR을 하면 이와같이 평균적으로 쓸만한 이미지가 출력된다.

MSRCR을 하면 이렇게 컬러 정보가 살아나는 장점이 있다.

MSRCR에서, 각 R,G,B 픽셀 사이의 Color Information을 Restoration하기 위해서는 여러가지 방법이 사용된다.
간단하게 그 portion을 곱하여도 좋지만, log시켜서 사용해도 된다. 즉,
(1) R값의 결정 = R/(R+G+B)
(2) R값의 결정 = log(R/(R+G+B))
위 이미지 2개는 MSRCR에서 이러한 Color restoration 과정을 다르게 해본 것으로,
같아 보이지만 미묘한 차이가 있긴 하다.

위 2가지의 MSRCR 이미지를 Difference한 것. 검은 이미지는 아니고
미세하게 나타난 무언가(?)를 볼 수 있다.