Retinex是一种常用的建立在科学实验和科学分析基础上的图像增强方法,最早由埃德温•兰德(Edwin. H. Land)于1963年提出。就跟Matlab是由Matrix和Laboratory合成的一样,Retinex也是由两个单词合成的一个词语,他们分别是retina 和cortex,即:视网膜和皮层。Land的retinex模式是建立在以下三个假设之上的:
(1)真实世界是无颜色的,我们所感知的颜色是光与物质的相互作用的结果。我们见到的水是无色的,但是水膜—肥皂膜却是显现五彩缤纷,那是薄膜表面光干涉的结果。
(2)每一颜色区域由给定波长的红、绿、蓝三原色构成的;
(3)三原色决定了每个单位区域的颜色。
Retinex理论的基础理论是物体的颜色是由物体对长波(红色)、中波(绿色)、短波(蓝色)光线的反射能力来决定的,而不是由反射光强度的绝对值来决定的,物体的色彩不受光照非均匀性的影响,具有一致性,即retinex是以色感一致性(颜色恒常性)为基础的。不同于传统的线性、非线性的只能增强图像某一类特征的方法,Retinex可以在动态范围压缩、边缘增强和颜色恒常三个方面打到平衡,因此可以对各种不同类型的图像进行自适应的增强。
一、单尺度SSR(Single Scale Retinex)
根据兰德提出的理论,一幅给定的图像 S ( x , y ) S(x,y) S(x,y)可以分解为两个不同的图像:反射图像 R ( x , y ) R(x,y) R(x,y)和亮度图像(或称之为入射图像) L ( x , y ) L(x,y) L(x,y),其原理如下图所示:
对于给定图像S中的每个点 ( x , y ) (x,y) (x,y),用公式可以表示为:
S ( x , y ) = R ( x , y ) ⋅ L ( x , y ) S(x,y) = R(x,y)⋅L(x,y) S(x,y)=R(x,y)⋅L(x,y)
Retinex理论的基本思想在原始图像中,通过某种方法去除或者降低入射图像的影响,从而保留物体本质的反射属性图像。
单尺度的Retinex算法可以大致概括如下:
- 读取原图像,若原图为彩色图:将颜色分通道处理,每个分量像素值由整数型(int)转换为浮点数(float),并转换到对数域,取对数公式如下:
log S ( x , y ) = log R ( x , y ) + log L ( x , y ) \log S(x,y) = \log R(x,y) + \log L(x,y) logS(x,y)=logR(x,y)+logL