图像增强处理之:同态滤波与Retinex算法(三)Retinex邻域算法:SSR,MSR,MSRCR
2017-10-17 15:48
651 查看
关于Retinex的基础知识这里就不再说了,http://blog.csdn.net/piaoxuezhong/article/details/78248219已经介绍过了,本篇将继续讲一下基于邻域的Retinex算法实现,主要分为三类:单尺度Retinex,多尺度Retinex和带色彩恢复的Retinex。
在 SSR 算法中,参数 c 的选择直接影响图像增强的效果:c 越小,SSR 的动态压缩能力越强,图像阴暗部分的细节得到更好的增强,但是由于平均对比度范围较小,结果会产生颜色失真;c 越大,SSR 的颜色保真度越高,但是动态压缩能力会减弱。通常 SSR 是在动态范围压缩和色感一致性之间寻找平衡点。
![](https://oscdn.geek-share.com/Uploads/Images/Content/202007/20/ca65717acaee3353232b7726be886008)
![](https://oscdn.geek-share.com/Uploads/Images/Content/202007/20/490700aca5cc13033a54d4ca1cc4bf74)
可以看出,单独使用传统SSR算法很有可能不能取得很好的处理效果,所以有许多改进算法出现,如参考2,3;
halos 和照射信息的缺失,突出暗区域的细节;MSR在SSR基础上,同时保持图像高保真度与对图像的动态范围进行压缩,MSR也可实现色彩增强、颜色恒常性、局部动态范围压缩、全局动态范围压缩。公式为:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202007/20/8ce894a696adb346308fcbed159ba03b)
为了保证兼有SSR高、中、低三个尺度的优点,K取值通常为3,高斯尺度分别取15, 80, 200(这个可以自己多次尝试)。当K=1时,即为SSR。代码请参见:http://download.csdn.net/download/piaoxuezhong/10029685。
测试函数如下:
我选择了雾天图像做了测试,参数还有优化的余地,这里效果感觉不是很好。
![](https://oscdn.geek-share.com/Uploads/Images/Content/202007/20/0282b1e6d6d78fc6fa6280d4f50528b4)
带色彩恢复的Retinex:MSRCR
SSR或MSR算法,可能会导致结果图像增加噪声,使得图像的局部细节色彩失真,不能显现出物体的真正颜色,为此,MSRCR在MSR的基础上,加入了色彩恢复因子,补偿由于图像局部区域对比度增强而导致颜色失真的缺陷。目前来看,MSRCR算法受关注程度比较高,可以查到的文献相对也多。这里介绍两种色彩恢复方法:
(1)IPOL的《Multiscale Retinex》一文中给出的颜色恢复方法为:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202007/20/fad5810e5a8a69cee0c45c9939badf92)
,
![](https://oscdn.geek-share.com/Uploads/Images/Content/202007/20/6e355c9bd608fa4a5652603b5640a075)
,
![](https://oscdn.geek-share.com/Uploads/Images/Content/202007/20/4a2bffa1b6090aab735d7eb0dd6d5061)
,
![](https://oscdn.geek-share.com/Uploads/Images/Content/202007/20/6c36043d9f10301a178e1d6132c2e6ff)
Ii(x, y)表示第i个通道的图像,S表示通道数,Ci表示第i个通道的彩色恢复因子; f()表示颜色空间的映射函数; β表示增益常数;α表示受控制的非线性强度;
算法实现链接地址:http://download.csdn.net/download/piaoxuezhong/10030135,测试函数:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202007/20/cc2755a6899a61de012060500f23fa29)
以上都是在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: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); end figure,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。
测试函数如下:
%% MSR clc,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); end figure, 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,测试函数:
%% MSRCR clc,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算法(二)McCann Retinex和McCann99 Retinex迭代算法
- 图像处理之增强---图像增强算法四种,图示与源码,包括retinex(ssr、msr、msrcr)和一种混合算法
- Retinex图像增强算法(SSR, MSR, MSRCR)详解及其OpenCV源码
- 图像增强算法四种,图示与源码,包括retinex(ssr、msr、msrcr)和一种混合算法
- 图像增强算法四种,图示与源码,包括retinex(ssr、msr、msrcr)和一种混合算法
- 图像增强算法四种,图示与源码,包括retinex(ssr、msr、msrcr)和一种混合算法
- 图像增强处理之:同态滤波与Retinex算法(一)同态滤波
- 图像增强算法四种,图示与源码,包括retinex(ssr、msr、msrcr)和一种混合算法
- 【转】 图像增强算法四种,图示与源码,包括retinex(ssr、msr、msrcr)和一种混合算法
- 图像增强算法四种,图示与源码,包括retinex(ssr、msr、msrcr)和一种混合算法
- OpenCV 2 学习笔记(8): 利用邻域处理图像与简单的算术图像处理算法:图像滤波与加权和
- 优化的对比度增强算法用于有雾图像的清晰化处理(算法效果是我目前看到最为稳定的,且对天空具有天然的免疫力,极力推荐有需要的朋友研究)。
- 图像处理基本算法-滤波
- 图像处理常用算法GPU实现五:图像对比度增强
- 基于直方图的图像增强算法(HE、CLAHE、Retinex)之(一)
- 数字图像处理—空域变换增强之滤波增强(模板操作)(模板卷积)
- 图像处理基本算法-滤波
- 数字图像处理—频域增强(低通滤波)(高通滤波)(带通和带阻滤波)(同态滤波)
- Retinex图像增强算法
- 图像处理实例--Retinex增强处理