失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 图像增强处理之:同态滤波与Retinex算法(三)Retinex邻域算法:SSR MSR MSRCR

图像增强处理之:同态滤波与Retinex算法(三)Retinex邻域算法:SSR MSR MSRCR

时间:2023-03-29 23:37:40

相关推荐

图像增强处理之:同态滤波与Retinex算法(三)Retinex邻域算法:SSR MSR MSRCR

关于Retinex的基础知识这里就不再说了,/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 是在动态范围压缩和色感一致性之间寻找平衡点。

%计算SSRSS=zeros(m,n);for i=1:mfor j=1:nSS(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); %初步得到反射图像endend

函数实现我放在资源里了,链接地址,可以实现灰度图像或彩色图像的SSR,测试函数为:

%SSR测试函数clc,clear all,close all;Img=imread('../testImg/15.jpg');if length(size(Img))>2OutImg=Img;R = Img(:,:,1); G = Img(:,:,2); B = Img(:,:,3); OutImg(:,:,1) = SSR(R); OutImg(:,:,2) = SSR(G); OutImg(:,:,3) = SSR(B); elseOutImg=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。代码请参见:/download/piaoxuezhong/10029685。

测试函数如下:

%% MSRclc,clear all,close all;Img=imread('../testImg/25.jpg');if length(size(Img))>2OutImg=Img;R = Img(:,:,1); G = Img(:,:,2); B = Img(:,:,3); OutImg(:,:,1) = MSR(R); OutImg(:,:,2) = MSR(G); OutImg(:,:,3) = MSR(B); elseOutImg=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()表示颜色空间的映射函数; β表示增益常数;α表示受控制的非线性强度;

算法实现链接地址:/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文件的算法:/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;

参考:

/publication/272643640_Multiscale_Retinex《基于改进SSR的LDCT影像增强算法》[J].计算机工程《改进单尺度Retinex算法在图像增强中的应用》[J].计算机应用与软件/download/u011004632/8071643?locationNum=2&fps=1《A Multiscale Retinex for Bridging the Gap Between Color Images and the Human Observation of Scenes》

/ajianyingxiaoqinghan/article/details/71435098

/bluecol/article/details/45675615

/Imageshop/archive//04/17/3026881.html

/Imageshop/p/3810402.html

如果觉得《图像增强处理之:同态滤波与Retinex算法(三)Retinex邻域算法:SSR MSR MSRCR》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。