浅谈Retinex

Retinex是上个世纪七十年代由Land提出的色彩理论。我认为其核心思想基于俩点算法

 

(1)在颜色感知时,人眼对局部相对光强敏感程度要优于绝对光强。网络

(2)反射份量R(x,y)储存有无光源物体的真实模样,一幅图像对其光照份量L(x,y)的估计越准确,求得的R(x,y)也就越准确。函数

 

     先来讲明第一点,人对颜色的认知并非基于绝对光强,反应在图像上时能够理解成,人眼对一像素点(X0,Y0)的颜色的认知不是基于其RGB三通道绝对值大小,而是与俩个因素相关。blog

一、(X0,Y0)点三通道值的差别,它会导致色偏。图片

二、(X0,Y0)一个邻域内其他像素的RGB值,它会造成颜色的感受,RGB三通道绝对值主导亮度感受。自动化

 

     我目前没法定量定性分析他们的关系,由于它涉及感受这种玄妙的东西,可是咱们会用就行。基础

 

     再说明第二点,在给定场景的时候,若是场景内无光源,那么R(x,y)应该是一常量。不管光照L(x,y)如何改变,R(x,y)该不变。也就是说,不管我光照是什么颜色什么强度,我都应该能将其矫正到标准光照状况下。这也是色彩恒常性的体现。技巧

 

     那么问题来了,基于上面推理该怎么办去矫正多光照图像。反射

 

     关于Retinex的算法的发展,从最初的随机路径法,到McCann迭代法,到变分法再到中心环绕的。关于他们的说明在网上一找一大堆,这里我不在赘述。自适应

     让咱们从single-scale-Retinex开始,在网上能找到的SSR算法,说实话基本效果不好,根本体现不出其色彩恒常算法的特色。其实若是你查阅过大量资料后,你会发现NASA的原文对SSR说明就不清不楚,网上代码对其的实现能够说是一种无参考复现,你甚至会发现他们对环绕函数地描述都不一致。SSR说到底就是认为光照局部不变,以一个邻域的加权值来估计光照。

    通常SSR会选择高斯函数或者类高斯函数,你能够直接用matlab中的fspesical函数,也能够本身写一个,其实问题不大。通常刚遇到SSR最让人困惑的就是如何明晰何为尺度,当你多看几个SSR的实现,就会发现会有愈来愈多的疑惑。如何肯定尺度,高斯函数的sigma值和尺度之间到底有和数量关系,最后在对数域是否须要返回到指数域,需不须要归一化,最后成像出现色偏问题该怎么解决。这些细节的处理会显著影响图片质量,特别是视觉效果。

 

     在SSR的基础上发展起来的MSR和MSRCR,但说实话,由于他们的实现是基于SSR的,因此若是你SSR都没有写好,那么他们的实现必定也不会尽人意。

     在MSR的基础上,为了实现真正的色彩恒常计算,我对MSR进行了改动。

 

步骤大体分为三步:

一、使用导向滤波代替高斯滤波,与传统MSR算法不一样,这里不分通道处理而是三通道合一来估计光照。这是基于一个认知,天然界中的光是连续,而RGB三通道只是为了方便屏幕显示,用三通道处理与造成割裂。

二、对估计出来的光照进行自适应调整后,计算出对数域中的反射量r(x,y)

三、对r(x,y)进行调整,为了适应不一样的环境,我使用了一个一个小技巧实现色彩保真,在算法中可选是否保真,保真的前提是原图质量足够好,图像中元素足够丰富,若是不知足这俩个前提推算真实颜色的时候就会出严重错误。至于为什么这般,这与Retinex算法实质有关,由于对光照估计的越准确,矫正到标准光源后的质量也就越好。而Retinex对光照的估计是基于空间邻域的。

注意:2是在对数域实现的,而这与MSR类似

附上一些图来讲明效果

 

 原图由来着东南大学的一位朋友提供

 

 未保真计算,能够看出其色彩恒常性的体现很差

 

 进行保真,充分体现色彩恒常性

 

 

 原图,一样由东南大学的朋友提供

 

 

未保真计算

 

 保真计算

 

 原图,来着网络

 

 未保真,可见光照为红光

 

 矫正后,深红光照被削弱,但图中可见的光源被放大,同时由于原图质量不高,导致保真计算后图像质量目视比不保真低

 

 

 

以上是我对Retinex的粗浅认识。

2019年11月7日于北京航空航天大学

自动化科学与电气工程学院 符云松

联系:734345993@qq.com

相关文章
相关标签/搜索