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

   

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

    

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

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

  

1、     SSR(Single Scale Retinex)单尺度Retinex算法3d

它经过估算L来计算R,具体来讲,L能够经过高斯模糊和I作卷积运算求得,用公式表示为:blog

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

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

所以,这个算法的思路就能够归结为如下几步:it

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

二、①计算原始图像按指定尺度进行模糊后的图像 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

 

 

 

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

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

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

二、对每一个尺度下进行累加计算  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效果图)

  

 

3、     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)

       

 

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