您的位置:首页 > 其它

基于Retinex理论的图像增强

2016-11-03 16:34 197 查看

概念

其实关于Retinex理论的研究很多很多,这里只是简单概述一下,本文更多的是在遥感影像上的处理效果讨论。

根据Retinex理论,人眼感知物体的亮度取决于环境的照明和物体表面对照射光的反射,其数学表达式为:

I(x,y) = L(x,y) * R(x,y)    


                     

其中 I(x,y)代表被观察或照相机接收到的图像信号;L(x,y)代表环境光的照射分量 ;R(x,y)表示携带图像细节信息的目标物体的反射分量 。

将上式两边取对数,则可抛开入射光的性质得到物体的本来面貌,即有关系式 :

Log[R(x,y)] = Log[I(x,y)] - Log[L(x,y)]


也就是,对于一副图像数据I(x, y),要计算出对应的反射分量R(x, y),也可以认为R(x, y)就是增强后的图像。现在的关键是如何得到L(x, y)。L(x, y)是光照分量,可以通过对图像数据I(x, y)进行高斯模糊获得。

算法步骤

具体步骤如下:

1. 输入原始图像数据I(x, y)和尺度(模糊的半径)

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

3. 按照公式的计算方法计算出 Log[R(x, y)]的值

4. 将 Log[R(x, y)]量化到0到255范围的像素值输出

具体实验效果讨论

Retinex算法很关键的一点在于光照分量L(x, y)的计算,目前已经有很多方法,如一维处理(随机路径等),二维处理(中心环绕,变分框架等),通过不同方法得到的L(x, y)不同,最终得到的R(x, y)也不同。这里我并没有做相关对比实验,我使用的是最经典的高斯模糊方法计算L(x, y)。但是高斯模糊这里面也有一个可调参数,即模糊尺度,不同的模糊尺度,计算的结果也不同,如下图所示。分别是原图、尺度为50、100、200。



本文最想说的一点是,Log[R(x,y)]的值怎样量化的问题,不同的量化方法得到最终图像肯定不同,一种最简单的方式就是直接统计出Log[R(x,y)]的最大值Max和最小值Min,然后对每一个值Value,进行线性量化。

R(x,y) = ( Value - Min ) / (Max - Min) * (255-0)


还有一种是利用均值与标准差计算出最大值Max和最小值Min,然后进行线性量化。

Max = Mean + k * SD
Min = Mean - k * SD


或者不进行对数化,直接用I(x,y) -L(x,y)表示R(x,y)。

当然还有很多其他的量化方法~~废话不多说了,看图。分别是原图,无对数化最值,对数化最值,对数化均值与标准差,无对数化均值与标准差。



  

这组里是否对数化差别不大,但在我做其他实验时,差别很大。不能说某种设定一定好,针对不同的影像数据,需要设定不同的参数。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Retinex 图像增强