msrcr(Multi-Scale Retinex with Color Restoration) 带色彩恢复的多尺度视网膜增强算法 整理

本文主要总结整理msrcr算法相关,包括基本原理,效果和实现代码


为了提高低亮度条件和背光条件下拍摄图像的效果,尝试了各种常规的数字图像处理方法,包括:

线性变换

对数变换

直方图均衡等

对yuv分量进行处理,对亮度分量进行处理,提升亮度对比,提升亮度低得值,提高可见度,uv分量不进行处理,避免色彩出现偏差。

这些方法有一定的效果,缺点也很明显,色度恢复不够,处理后的图像泛白,色彩饱和度降低。然后找到了msrcr算法,下文详细比较了msrcr算法和其他常规数字图像处理方法的异同:

Rahman Z, Woodell G A, Jobson D J. A comparison of the multiscale retinex with other image enhancement techniques[C]//Is and T Annual Conference. THE SOCIETY FOR IMAGING SCIENCE AND TECHNOLOGY, 1997: 426-431.

msrcr算法最早文献如下:

Jobson D J, Rahman Z, Woodell G. A multiscale retinex for bridging the gap between color images and the human observation of scenes[J]. Image Processing, IEEE Transactions on, 1997, 6(7): 965-976.

基本原理请参考:

http://www.cnblogs.com/Imageshop/archive/2013/04/17/3026881.html

http://blog.csdn.net/bluecol/article/details/45675615

http://www.ipol.im/pub/art/2014/107/?utm_source=doi

个人观点:

对RGB三个颜色通道分别进行处理

单通道进行大中小三个强度的高斯滤波,取对数,近似三种不同尺度下光照的变化,滤波强度越大,模糊效应越强,对应于光线背景变化越缓和,大中小三个滤波结果按权重(经典的是每个结果1/3)相加,整体亮度整体背景,原始通道对数值减去上述结果,相当于单通道减去背景光照变化的影响,这一过程就是MSR

MSR的问题在于,三个通道分别处理,而没有考虑rgb三个通道的内在关联,会产生色差问题,

MSRCR在此基础上加上颜色恢复和颜色均衡

msrcr(Multi-Scale Retinex with Color Restoration) 带色彩恢复的多尺度视网膜增强算法 整理_第1张图片

具体实现:

1. GIMP 现成的图像处理工具可以使用,是开源软件mac linux下都可安装,可以自行搜索,打开图片,点击colors->retinex可以看到效果

msrcr源码参考:http://gimp.sourcearchive.com/documentation/2.6.1/contrast-retinex_8c-source.html

2. 参考如下论文,这篇论文提出了MSRCP,比较了和MSRCR的区别,给出了源码和详细的计算结果,具体代码自己跑了下有点问题,需要自己手动改一改,文件路径在主函数里面写好

http://www.ipol.im/pub/art/2014/107/?utm_source=doi

3. opencv实现:http://blog.csdn.net/smallstones/article/details/41787079
4. cuda实现: Wang Y K, Huang W B. A CUDA-enabled parallel algorithm for accelerating retinex[J]. Journal of Real-Time Image Processing, 2014, 9(3): 407-425.

前三种自己都已验证,结果差不多的。算法的关键在于高斯滤波,高斯滤波的快速实现的算法可以参考IIR高斯滤波,来回递归滤波,滤波复杂度跟窗口大小没关系,实现2中采用的是这种,intel给出了具体的sse加速实现

具体效果如下,gimp处理,确实能起到彩色增强的效果
但问题也很明显:
1. 块效应:处理背光的人的照片,背光部分有很明显的方块效应,中间试验了下,是因为三种强度的高斯滤波叠加,出现像素强度的不连续性,不适合人脸的处理
2. 特别暗的图片处理下来效果不理想,夜晚拍摄的图片,能保证看到原图中看不到的部分,但处理出来的结果色差会严重

可以变换颜色空间的处理
msrcr(Multi-Scale Retinex with Color Restoration) 带色彩恢复的多尺度视网膜增强算法 整理_第2张图片 msrcr(Multi-Scale Retinex with Color Restoration) 带色彩恢复的多尺度视网膜增强算法 整理_第3张图片


msrcr(Multi-Scale Retinex with Color Restoration) 带色彩恢复的多尺度视网膜增强算法 整理_第4张图片msrcr(Multi-Scale Retinex with Color Restoration) 带色彩恢复的多尺度视网膜增强算法 整理_第5张图片msrcr(Multi-Scale Retinex with Color Restoration) 带色彩恢复的多尺度视网膜增强算法 整理_第6张图片msrcr(Multi-Scale Retinex with Color Restoration) 带色彩恢复的多尺度视网膜增强算法 整理_第7张图片


你可能感兴趣的:(C++,filter,opencv,Multimedia,MSRCR)