图像增强处理之:同态滤波与Retinex算法(三)Retinex邻域算法:SSR,MSR,MSRCR
来源:互联网 发布:神经网络算法预测股市 编辑:程序博客网 时间:2024/04/29 19:54
关于Retinex的基础知识这里就不再说了,http://blog.csdn.net/piaoxuezhong/article/details/78248219已经介绍过了,本篇将继续讲一下基于邻域的Retinex算法实现,主要分为三类:单尺度Retinex,多尺度Retinex和带色彩恢复的Retinex。
单尺度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 是在动态范围压缩和色感一致性之间寻找平衡点。
%计算SSR SS=zeros(m,n); for i=1:m for j=1:n SS(i,j)=log(S(i,j)+0.00005); %对原始图像取对数操作 GG(i,j)=log(G(i,j)+0.00005); V(i,j)= SS(i,j)-GG(i,j); %初步得到反射图像 end end函数实现我放在资源里了,链接地址,可以实现灰度图像或彩色图像的SSR,测试函数为:
%SSR测试函数clc,clear all,close all;Img=imread('../testImg/15.jpg');if length(size(Img))>2 OutImg=Img; R = Img(:,:,1); G = Img(:,:,2); B = Img(:,:,3); OutImg(:,:,1) = SSR(R); OutImg(:,:,2) = SSR(G); OutImg(:,:,3) = SSR(B); else OutImg=SSR(Img);endfigure,subplot(1,2,1),imshow(Img); title('original image');subplot(1,2,2),imshow(OutImg); title('SSR image');
可以看出,单独使用传统SSR算法很有可能不能取得很好的处理效果,所以有许多改进算法出现,如参考2,3;
多尺度Retinex:MSR
SSR 算法可能出现 halo 现象,Jobson等人又提出了多尺度Retinex算法。通过联合多个尺度的滤波结果,补偿 halos 和照射信息的缺失,突出暗区域的细节;MSR在SSR基础上,同时保持图像高保真度与对图像的动态范围进行压缩,MSR也可实现色彩增强、颜色恒常性、局部动态范围压缩、全局动态范围压缩。公式为:
为了保证兼有SSR高、中、低三个尺度的优点,K取值通常为3,高斯尺度分别取15, 80, 200(这个可以自己多次尝试)。当K=1时,即为SSR。代码请参见:http://download.csdn.net/download/piaoxuezhong/10029685。
测试函数如下:
%% MSRclc,clear all,close all;Img=imread('../testImg/25.jpg');if length(size(Img))>2 OutImg=Img; R = Img(:,:,1); G = Img(:,:,2); B = Img(:,:,3); OutImg(:,:,1) = MSR(R); OutImg(:,:,2) = MSR(G); OutImg(:,:,3) = MSR(B); else OutImg=MSR(Img);endfigure,subplot(1,2,1),imshow(Img); title('original image');subplot(1,2,2),imshow(OutImg); title('MSR image');
我选择了雾天图像做了测试,参数还有优化的余地,这里效果感觉不是很好。
带色彩恢复的Retinex:MSRCR
SSR或MSR算法,可能会导致结果图像增加噪声,使得图像的局部细节色彩失真,不能显现出物体的真正颜色,为此,MSRCR在MSR的基础上,加入了色彩恢复因子,补偿由于图像局部区域对比度增强而导致颜色失真的缺陷。目前来看,MSRCR算法受关注程度比较高,可以查到的文献相对也多。这里介绍两种色彩恢复方法:
(1)IPOL的《Multiscale Retinex》一文中给出的颜色恢复方法为:
,
,
,
Ii(x, y)表示第i个通道的图像,S表示通道数,Ci表示第i个通道的彩色恢复因子; f()表示颜色空间的映射函数; β表示增益常数;α表示受控制的非线性强度;
算法实现链接地址:http://download.csdn.net/download/piaoxuezhong/10030135,测试函数:
%% MSRCRclc,clear all,close all;Img=imread('../testImg/25.jpg');OutImg=MSRCR(Img);figure,subplot(1,2,1),imshow(Img); title('original image');subplot(1,2,2),imshow(OutImg); title('MSRCR image');
以上都是在RGB空间域操作的,还可以转换到HSV或者频率域操作,这里就不再码了,有兴趣的可以尝试,说不定效果输出会有意外的惊喜哦~~
(2)contrast-retinex.c文件的算法:http://gimp.sourcearchive.com/documentation/2.6.1/contrast-retinex_8c-source.html
这个我没测试过,只是拷贝一下算法步骤,参见参考7:
- 计算出 log[R(x,y)]中R/G/B各通道数据的均值Mean和均方差Var(注意是均方差)。
- 类似下述公式计算各通道的Min和Max值。
- Min = Mean - Dynamic * Var;
- Max = Mean + Dynamic * Var;
- 对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;
参考:
- https://www.researchgate.net/publication/272643640_Multiscale_Retinex
- 《基于改进SSR的LDCT影像增强算法》[J].计算机工程
- 《改进单尺度Retinex算法在图像增强中的应用》[J].计算机应用与软件
- http://download.csdn.net/download/u011004632/8071643?locationNum=2&fps=1
- 《A Multiscale Retinex for Bridging the Gap Between Color Images and the Human Observation of Scenes》
http://blog.csdn.net/ajianyingxiaoqinghan/article/details/71435098
http://blog.csdn.net/bluecol/article/details/45675615
http://www.cnblogs.com/Imageshop/archive/2013/04/17/3026881.html
http://www.cnblogs.com/Imageshop/p/3810402.html
- 图像增强处理之:同态滤波与Retinex算法(三)Retinex邻域算法:SSR,MSR,MSRCR
- 图像增强处理之:同态滤波与Retinex算法(二)McCann Retinex和McCann99 Retinex迭代算法
- 图像增强处理之:同态滤波与Retinex算法(一)同态滤波
- 图像增强算法四种,图示与源码,包括retinex(ssr、msr、msrcr)和一种混合算法
- 图像增强算法四种,图示与源码,包括retinex(ssr、msr、msrcr)和一种混合算法
- 图像增强算法四种,图示与源码,包括retinex(ssr、msr、msrcr)和一种混合算法
- 【转】 图像增强算法四种,图示与源码,包括retinex(ssr、msr、msrcr)和一种混合算法
- 图像增强算法四种,图示与源码,包括retinex(ssr、msr、msrcr)和一种混合算法
- Retinex图像增强算法(SSR, MSR, MSRCR)详解及其OpenCV源码
- 图像增强去雾之直方图均衡化/同态滤波/Retinex算法
- retinex图像增强算法
- Retinex图像增强算法
- Retinex图像增强算法代码
- 【转】retinex图像增强算法
- Retinex图像增强算法代码
- 【算法学习】【图像增强】【Retinex】White Patch Retinex
- 【算法学习】【图像增强】【Retinex】Retinex Image Processing(NASA)
- 【算法学习】【图像增强】【Retinex】White Patch Retinex 程序解读
- numpy中hstack() vstack() stack() dstack() vsplit() concatenate()用法
- 【1221】计算单词的个数
- 浏览器读取分辨率错误的问题
- C++11多线程std::thread的简单使用
- Python结合hdfs模块操作HDFS分布式文件系统
- 图像增强处理之:同态滤波与Retinex算法(三)Retinex邻域算法:SSR,MSR,MSRCR
- Oracle加快查询表空间
- 用c++写一个链表
- Win10环境下caffe安装与编译
- 2.2 URL 的语法
- HDU 1599 find the mincost route(无向图最小环)
- openstack实例创建到正常访问整个过程分析【详细】
- 使用json-server模拟REST API
- (M)DFS:98. Validate Binary Search Tree