图像处理之Retinex增强算法(SSR、MSR、MSRCR)

   

    视网膜-大脑皮层(Retinex)理论认为世界是无色的,人眼看到的世界是光与物质相互作用的结果,也就是说,映射到人眼中的图像和光的长波(R)、中波(G)、短波(B)以及物体的反射性质有关

    

  其中I是人眼中看到的图像,R是物体的反射分量,L是环境光照射分量,(x, y)是二维图像对应的位置

  基于上面的原理,看下Retinex常见的几种增强算法

  

一、     SSR(Single Scale Retinex)单尺度Retinex算法

它通过估算L来计算R,具体来说,L可以通过高斯模糊和I做卷积运算求得,用公式表示为:

其中F是高斯模糊的滤波器,“ * ”表示卷积运算

其中σ称为高斯周围空间常数(Gaussian Surround Space Constant),也就是算法中所谓的尺度,对图像处理有比较大的影响,对于二维图像对应于图像中位置,即:

因此,这个算法的思路就可以归结为以下几步:

1、输入: 原始图像数据I(x,y),尺度(也就是高斯函数中的σ)

2、①计算原始图像按指定尺度进行模糊后的图像 L(x,y);

②按照log(R)=log(I)-log(L)公式的计算方法计算出 Log[R(x,y)]的值

③将 Log[R(x,y)]量化为0到255范围的像素值,作为最终的输出,量化公式:R(x,y) = ( Value - Min ) / (Max - Min) * (255-0)(注:无需将Log[R(x,y)]进行Exp函数的运算,而是直接利用Log[R(x,y)]进行量化,即上述公式中的value值)

 代码如下:

效果图(左边是原图,右边是SSR效果图):(其中σ=300,即代码中的sigma=300

 

 

 

二、     MSR(Multi-Scale Retinex)多尺度Retinex算法

     多尺度视网膜增强算法(MSR, Multi-Scale Retinex),最为经典的就是3尺度的,大、中、小,既能实现图像动态范围的压缩,又能保持色感的一致性较好。基于单尺度Retinex算法,多尺度Retinex算法描述如下:

1、需要对原始图像进行每个尺度的高斯模糊,得到模糊后的图像Li(x,y),其中小标i表示尺度数。

2、对每个尺度下进行累加计算  Log[R(x,y)] =  Log[R(x,y)] + Weight(i)* ( Log[Ii(x,y)]-Log[Li(x,y)]);  其中Weight(i)表示每个尺度对应的权重,要求各尺度权重之和必须为1,经典的取值为等权重。

如果尺度数为3,则:W1=W2=W3=1/3

代码如下:

效果图(左边是原图,中间是SSR效果图,右边是MSR效果图)

  

 

三、     MSRCR(Multi-Scale Retinex with Color Restoration)具有色彩恢复的多尺度Retinex算法

   在前面的增强过程中,图像可能会因为增加了噪声,而使得图像的局部细节色彩失真,不能显现出物体的真正颜色,整体视觉效果变差。针对这一点不足,MSRCR在MSR的基础上,加入了色彩恢复因子C来调节由于图像局部区域对比度增强而导致颜色失真的缺陷.

先看一组公式:

RMSRCR(x,y)'=G⋅RMSRCR(x,y)+b

RMSRCR (x,y)=C(x,y)RMSR(x,y)

C(x,y)=f[I'(x,y)]=f[I(x,y)/∑I(x,y)]Ci(x,y)=f[Ii′(x,y)]=f[Ii(x,y)∑j=1NIj(x,y)] 

f[I'(x,y)]=βlog[αI'(x,y)]=β{log[αI'(x,y)]−log[∑I(x,y)]}

如果是灰度图像,只需要计算一次即可,如果是彩色图像,如RGB三通道,则每个通道均需要如上进行计算

G表示增益Gain(一般取值:5)

b表示偏差Offset(一般取值:25)

I (x, y)表示某个通道的图像

C表示某个通道的彩色回复因子,用来调节3个通道颜色的比例;

f(·)表示颜色空间的映射函数;

β是增益常数(一般取值:46);

α是受控制的非线性强度(一般取值:125)

MSRCR算法利用彩色恢复因子C,调节原始图像中3个颜色通道之间的比例关系,从而把相对较暗区域的信息凸显出来,达到了消除图像色彩失真的缺陷。 处理后的图像局部对比度提高,亮度与真实场景相似,在人们视觉感知下,图像显得更加逼真;但是MSRCR算法处理图像后,像素值一般会出现负值。所以从对数域r(x, y)转换为实数域R(x, y)后,需要通过改变增益Gain,偏差Offset对图像进行修正。

另外:介绍下什么是颜色的简单白平衡(simplest Color Balance)

白平衡的意思就是:是图片中最亮的部分为白色,最暗的部分为黑色。其余部分进行拉伸

简单的说就是:在RGB三通道上分别统计每个像素值的出现次数。将1%的最大值和最小值设置为255和0。其余值映射到(0,255),这样使得每个值通道的值在RGB中分布较均匀。达到颜色平衡的结果

MSRCR代码如下:

 

效果图(左上:原图,右上:SSR,左下:MSR,右下:MSRCR)

       

 

作为一枚技术小白,写这篇笔记的时候参考了很多博客论文,在这里表示感谢,同时,未经同意,请勿转载....

posted @ 2018-03-28 18:10  勇者归来  阅读(8041)  评论(11编辑  收藏  举报