带色彩恢复的多尺度视网膜增强算法(MSRCR)的原理、实现及应用。

Retinex这个词是由视网膜(Retina)和大脑皮层(Cortex) 两个词组合构成的。Retinex理论主要包含了两个方面的内容:物体的颜色是由物体对长波、 中波和短波光线的反射能力决定的,而不是由反射光强度的绝对值决定的;物体的色彩不受光照 非均匀性的影响,具有一致性 。

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

I(x,y)=L(x,y)*R(x,y)                            (2-1)

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

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

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

对上面的理论的进行一个简单的注释吧。把这个技术运用到图像处理上,就是针对我们现在已经获得的一副图像数据I(x,y),计算出对应的R(x,y),则R(x,y)认为是增强后的图像,现在的关键是如何得到L(X,Y)。Retinex理论的提出者指出这个L(x,y)可以通过对图像数据I(x,y)进行高斯模糊而得到,很多论文中都列出了那个中心/围绕函数以及需要归一化的K值,搞的很多新手都不明白是什么了,其实就是一个模糊而已。从实际运用的角度来说,也可以用均值模糊来代替高斯模糊。

因此这个算法的细路就很简单了,具体步骤如下:

1、输入: 原始图像数据I(x,y),尺度(也就是所谓的模糊的半径)

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

(2) 按照2-2式的计算方法计算出 Log[R(x,y)]的值。

(3) 将 Log[R(x,y)]量化为0到255范围的像素值,作为最终的输出。

可以看得出,算法很简单,其核心的东西还是在于高斯模糊的实现。关于高斯模糊,网上有很多快速优化的文章参考,具体的参考代码可能很少有好人提供的。

注意到一点,似乎在量化的时候没有谁会将 Log[R(x,y)]进行Exp函数的运算而直接得到R(x,y),至于为什么,我无法给出明确的答案。

量化的方式其实有很多种,而这个方法在很大的程度上对处理的效果有着决定性的影响。至今我没看到有哪一篇论文对这一块讲的很清楚,也不知道他们的那些结果是如何取得的,一种最简单的方式就是计算出Log[R(x,y)]的最大值Max和最小值Min,然后对每一个值Value,进行线性量化,公式为:

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

效果测试:

原图 经过Retinex(尺度为10)增强后的图像 经过Retinex(尺度为300)增强后的图像

原图 经过Retinex(尺度为10)增强后的图像 经过Retinex(尺度为300)增强后的图像

论文中说,尺度取值较小时, 能够较好地完成动态范围的压缩,暗区域的细节能得到较好地增强,但输出颜色易失真;取值较大时,色感一致性较好。 我倒是没看出尺度小有什么好处。

以上算法所实现的过程通常倍称作为SSR(Single Scale Retinex,单尺度视网膜增强);

为了得到更好的效果,人们又开发出所谓的多尺度视网膜增强算法(MSR, Multi-Scale Retinex),最为经典的就是3尺度的,大、中、小,既能实现图像动态范围的压缩,又能保持色感的一致性较好。同单尺度相比,该算法有在计算Log[R(x,y)]的值时步骤有所不同:

(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,经典的取值为等权重。

其他的步骤和单尺度的没有区别。

原图 经过SSR(尺度为300)增强后的图像 经过MSR(最大尺度为300,尺度数为3)增强后的图像

原图 经过SSR(尺度为300)增强后的图像 经过MSR(最大尺度为300,尺度数为3)增强后的图像

  SSR和MSR在最大尺度相同的时候谁好谁坏我还真讲不清。

在以上的两幅测试图像中,特别是第二幅,我们看到明显的偏色效果,这就是SSR和MSR普遍都存在的问题。给一段比较经典的论文中的原话供大家参考:

The general effect of retinex processing on images with regional or global gray-world violations is a “graying out” of the image, either globally or in specific regions. This desaturation of color can, in some cases, be severe (see Fig. 4, middle). More rarely, the gray-world violations can simply produce an unexpected color distortion (see Fig. 4,top left).

为此,研究者又开发出一种称之为带色彩恢复的多尺度视网膜增强算法(MSRCR,Multi-Scale Retinex with Color Restoration) ,具体讨论的过程详见 <A Multiscale Retinex for Bridging the Gap Between Color Images and the Human Observation of Scenes>这篇论文,这里要说的是,我认为论文里的方法不起任何作用,并且论文里为了这个又引入了太多的可调参数,增加了算法的复杂性,不利于自动化实现。

从我目前的了解来看,GIMP的contrast-retinex.c文件里使用的算法很好,效果也很好。他直接从量化的方式上入手,引入了均值和均方差的概念,再加上一个控制图像动态的参数来实现无色偏的调节过程,简要描述如下。

(1)分别计算出 Log[R(x,y)]中R/G/B各通道数据的均值Mean和均方差Var(注意是均方差)。

(2)利用类似下述公式计算各通道的Min和Max值。

Min = Mean - Dynamic * Var;

Max = Mean + Dynamic * Var; (3) 对Log[R(x,y)]的每一个值Value,进行线性映射:

R(x,y) = ( Value - Min ) / (Max - Min) * (255-0) ,同时要注意增加一个溢出判断,即:

if (R(x,y) > 255) R(x,y) =255; else if (R(x,y) < 0) R(x,y)=0;

就是经过这么简单的处理,实践证明可以取得非常好的效果,下面贴出一些处理后的效果。

MSR(最大尺度为300,尺度数为3)增强图像 MSRCR(最大尺度为300,尺度数为3,Dynamic=2)增强图像 MSRCR(最大尺度为300,尺度数为6,Dynamic=2)增强图像

MSR(最大尺度为300,尺度数为3)增强图像 MSRCR(最大尺度为300,尺度数为3,Dynamic=2)增强图像 MSRCR(最大尺度为300,尺度数为6,Dynamic=2)增强图像

由以上三幅图的效果得出的结论:

(1)MSRCR效果要比MSR好很多,基本消除了色偏。

(2)对于MSRCR,尺度数对结果的影像不是特别大,但是随着尺度数的增加,算法耗时会线性增加,因此,一般尺度数取3就较为合适了。

继续贴图做比较:

MSRCR(Dynamic=1)增强图像 MSRCR(Dynamic=2)增强图像 MSRCR(Dynamic=5)增强图像

MSRCR(Dynamic=1)增强图像 MSRCR(Dynamic=2)增强图像 MSRCR(Dynamic=5)增强图像

由以上三幅图的效果得出的结论:

(3)Dynamic取值越小,图像的对比度越强。

(4)一般来说Dynamic取值2-3之间能取得较为明显的增强效果,即能取得很自然过渡效果,又能保持图像的清晰度适度增强。

关于最大尺度,个人建议取值以大于100为佳。

retinex算法的效果对于一些正常的图像处理后的效果并不佳,我们可以认为他就是为那些在外界环境不理想的状态下拍摄的图像增强而设计的,特别的,对于航拍的雾天图片,医学上的成像图片等成像条件恶劣的图有很明显的效果,再列出一些照片处理效果。

原始图像 MSRCR增强的效果 NASA的Retinex增强结果

上述照片均使用最大尺度为300,尺度数为3,Dynamic=2时的效果。

由以上几组照片,可以看到,Retinex在图像去雾、宇航图、医学图像、老照片等图像的处理上效果很是明显。

NASA的处理效果要比我这里的MSRCR好一些,这当然无可厚非,人家是什么单位啊。

关于NASA对Retinex技术的应用,可以参考:http://dragon.larc.nasa.gov/retinex/

关于去雾效果,我们在来和美图秀秀、可牛影像、光影魔术手等现有的软件做个简单的比较:

原图 MSRCR 美图秀秀

可牛影像 光影魔术手

原图 MSRCR 美图秀秀

可牛影像 光影魔术手

关于谁是谁非,为避免不必要的口舌之争,这里还是交给给位看管去分辨吧。

同样,提供个编译好的文件给有兴趣研究该算法的朋友看看效果:

http://files.cnblogs.com/Imageshop/Retinex.zip

关于Rentinex,在共享两篇比较经典的英文论文:

Multi-Scale Retinex for Color Image Enhancement

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

关于实现代码,提供GIMP的contrast-retinex.c的下载链接(要像完全看懂其中的所有代码的意思很困难,但是要提取其中的算法部分就不那么复杂了)。

http://files.cnblogs.com/Imageshop/contrast-retinex.rar

***************************作者: laviewpbt 时间: 2013.4.17 联系QQ: 33184777 转载请保留本行信息*************************

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏AI掘金志

商汤科技发布首款 AI 诊疗平台,张少霆深谈其医疗战略

近日,在2018世界人工智能大会上, 商汤科技副总裁、研究院副院长张少霆发表了重要演讲,并公布商汤首款医疗AI产品——SenseCare智慧诊疗平台。

14920
来自专栏相约机器人

十行代码搞定目标检测

计算机视觉是人工智能的一个重要领域,是关于计算机和软件系统的科学,可以对图像和场景进行识别、理解。计算机视觉还包括图像识别、目标检测、图像生成、图像超分辨率重建...

11620
来自专栏VRPinea

8.26 VR扫描:The Void与索尼影业合作一线下VR体验;微软介绍HoloLens 2 HPU 2.0芯片设计细节

据The Void首席创意官Curtis Hickman透露,其已与索尼达成了合作协议:将制作一款全新的线下VR体验。Hickman表示,The Void计划将...

4810
来自专栏AI掘金志

AI 零售“逢三必乱”,如何把握技术整合的平衡点?

雷锋网《AI掘金志》频道:只做 AI +「安防、医疗、零售」三大传统领域的深度采访报道。

9220
来自专栏VRPinea

8.27 VR扫描:京东、高通、KSI投资奥本未来;惠普修复Reverb VR屏幕问题重新发售

近日,恒信东方发布公告:预计向不超过5名符合条件的特定投资者,非公开发行股票不超过1.06亿股,募集资金总额不超过10亿人民币。据悉,该项目募集资金将用于VR开...

11850
来自专栏音视频技术

从编码、网络传输、架构设计揭秘腾讯云高质量、高可用实时音视频技术实践

在互联网飞速发展的时代,视频应用无处不在,各行各业对视频技术的需求开始爆发。伴随视频分辨率的提高,音视频玩法的快速更新以及用户对观看体验需求的不断增加,越来越多...

14230
来自专栏贾志刚-OpenCV学堂

干货 | 英特尔神经网络计算棒实现对象检测加速推理

本文小黄弟要向大家介绍的是用英特尔NCS2加速棒实现对tensorflow物体检测模型的加速,涉及到的内容有tensorflow物体检测模型,OpencvDNN...

39560
来自专栏中科院渣渣博肆僧一枚

Stereo R-CNN based 3D Object Detection for Autonomous Driving

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。

19020
来自专栏AI掘金志

第二届 ISICDM 开幕:10 位国际顶尖专家、20 大名医、80 名优秀学者聚首成都

雷锋网《AI掘金志》频道:只做 AI +「安防、医疗、零售」三大传统领域的深度采访报道。

9010
来自专栏新智元

台积电研发副总裁黄汉森:2050年晶体管能做到0.1纳米,氢原子尺度!

台积电研发负责人Philip Wong(黄汉森)在Hot chips大会上表示,他展示了台积电对芯片技术的前瞻,称到2050年,晶体管将缩小到氢原子尺度,即0....

11530

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励