Retinex图像增强算法(SSR, MSR, MSRCR)详解

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Julialove102123/article/details/89312058

参考资料:

Retinex理论认为,人眼观测到的图像S是光照图像L和物体反射图像R的乘积。而R才是真实的恒常性的图像,但是怎么从观测图像S中计算R呢?这是个病态问题,根本不可解。研究者就通过加以一定的约束条件,比如光照L具有缓变平滑性、L与S有一定的弱相关性等等,然后估计出光照图像L,进而得到R。

单尺度Retinex:SSR

根据之前对retinex算法的原理分析,我们可以得到:r=s-l=logS-logL,其中原始图像为S(x, y),反射图像为R(x, y),亮度图像为L(x, y),下面我直接贴下SSR的公式部分:

在 SSR 算法中,参数 c 的选择直接影响图像增强的效果:c 越小,SSR 的动态压缩能力越强,图像阴暗部分的细节得到更好的增强,但是由于平均对比度范围较小,结果会产生颜色失真;c 越大,SSR 的颜色保真度越高,但是动态压缩能力会减弱。通常 SSR 是在动态范围压缩和色感一致性之间寻找平衡点。

多尺度Retinex:MSR

SSR 算法可能出现 halo 现象,Jobson等人又提出了多尺度Retinex算法。通过联合多个尺度的滤波结果,补偿 halos 和照射信息的缺失,突出暗区域的细节;

代码请参见:http://download.csdn.net/download/piaoxuezhong/10029685。

带色彩恢复的Retinex:MSRCR

论文:A Multiscale Retinex for Bridging the Gap Between Color Images and the Human Observation of Scenes

从S中如何估计L,就衍生出了各种各样的实现方式,影响较大的有:中心环绕、随机路径、变分、金字塔迭代等等方法。其中,中心环绕算法无疑是影响最大的retinex实现方式,使用高斯尺度算子来估计光照图像,计算速度快。当然,它也有一些缺点:

    1) 在强光阴影过渡区容易出现光晕现象;

         主要是由于高斯算子不能在过渡区很好的估计光照所致。

    2) 对比较亮的图像处理欠佳,比如雾霾图像。

        主要原因有二:retinex不是专门的去雾算法;对数化处理压缩了亮区域的显示范围,导致其细节弱化。

        由于L和R是乘积的关系,为了便于处理,一般对观测图像S先进行对数处理,这样就转换成了加性关系。使用对数处理可以极大的提升暗区域的像素值,以增加对比度,但代价是压缩了亮区图像的显示范围,导致其细节模糊甚至丢失。所以个人认为,retinex适用于处理那些光照不足的图像,对于比较亮的图像,不妨先进行反色处理再retinex。

    3) 色彩保持能力较弱。

        因为对rgb三个颜色通道各自归一化处理的缘故,有论文提到了一些改善方法,但我发现还是不容乐观。

        此外,三通道各自归一化处理后,其颜色均值是接近于128的,如果后面再跟一个指数化操作(对数处理的反操作),将导致图像颜色明显偏暗,所以这是一般retinex算法只有对数处理没有指数处理的缘故。

    一点点改进如下:

        1)使用引导滤波来快速估计光照图像,减少光晕的出现,实验表明,该步骤对色彩保持能力也有一定的提升;

        2)在使用多个尺度算子进行合成的时候,不是简单的做均值处理;

        3)在完成retinex处理之后,再做一次简单的gamma校正,使其均值接近于128。

猜你喜欢

转载自blog.csdn.net/Julialove102123/article/details/89312058