一种简单快速有效的低照度图像增强方法

一种简单快速有效的低照度图像增强方法

一、本文介绍的是一种比较实用并且去阴影效果很好的方法,选自2004年Tao的一篇论文,名称是《An Integrated Neighborhood Dependent Approach for Nonlinear Enhancement of Color Images 》,有兴趣的朋友仔细细读一下。论文篇幅很短,所以应该难度不大,而且效果极佳。
二、接下来简单介绍一下该论文的思想
在这里插入图片描述

图一
这是一副存在严重阴影的图像,显然图像拍摄的结果不是让人十分满意,参考了Tao论文思想后,发现能够很好提高图像的暗部区域,去除图像的阴影部分。 论文思想

1. 首先,将RGB颜色空间中的彩色图像转换为灰度图像,并且将图像进行归一化,得到归一化后的I(x,y),通过下面公式进行线性变化(具体为什么采用这种线性变换我也不是很明白)论文作者的意思是这种变换可以很大程度上提高暗像素(区域)的亮度,而亮像素(区域)的亮度增强较低,甚至是负增强。从而达到较好的效果。

	a=0.24,b=0.5;
In(x,y)=(I(x,y)^a+(1-I(x,y))^b+I(x,y)^2)/2

2. 接着对灰度增强图像I(x,y)同过不同尺度的高斯核函数对I(x,y)做卷积运算,卷积的结果包含了图像相邻像素的亮度信息。可以采取相关性来处理图像的边界。
高斯核函数的表示方式以及卷积公式如下所示:
G ( x , y ) = K e ( − ( x 2 + y 2 ) / c 2 ) G(x,y)=Ke^{(-(x^2+y^2)/c^2)} G(x,y)=Ke((x2+y2)/c2)其中c为尺度或者是高斯环绕空间常数
I ′ ( x , y ) = I ( x , y ) ∗ G ( x , y ) I'(x,y)=I(x,y)*G(x,y) I(x,y)=I(x,y)G(x,y)

3. 将灰度图像与中心像素图像做对比度增强
R ( x , y ) = I n ( x , y ) r ( x , y ) R(x,y)=In(x,y)^{r(x,y)} R(x,y)=In(x,y)r(x,y)
r ( x , y ) = I ′ ( x , y ) / I ( x , y ) r(x,y)=I'(x,y)/I(x,y) r(x,y)=I(x,y)/I(x,y)

4. 为了获得更加的图像效果,对不同尺度的多个卷积结果进行图像的对比度增强,最终的结果是基于这多个尺度的线性组合。
R ( x , y ) = ∑ i 3 w i R i ( x , y ) R(x,y)=\sum_i^3w_iR_i(x,y) R(x,y)=i3wiRi(x,y)
一般取3就够了,本文wi(与尺度有关)为1/3。

5. 经过前几步的处理我们可以得到一副增强图像,并且发现图像的去阴影效果较好。
在这里插入图片描述
基本上去除了图像的阴影部分,在不影响其他像素亮度基础上,亮度也得到了很大的提升。接下要做的是恢复图像的颜色。

6. 恢复图像中颜色,同样也可以采用线性颜色恢复过程,得到在增强后的彩色图像。彩色恢复公式如下:
R j ( x , y ) = I j ( x , y ) I ( x , y ) ∗ λ R_j(x,y)={I_j(x,y)\over I(x,y)}*\lambda Rj(x,y)=I(x,y)Ij(x,y)λ
λ \lambda λ调整三种波段的色调,本文的 λ \lambda λ取值为1,结果同样很好。
I j ( x , y ) I_j(x,y) Ij(x,y)指的是原图像的R、G、B三通道。

7. 色彩恢复后的图片结果在这里插入图片描述经过上述方法进行色彩恢复后的结果简直完美,不管是颜色,亮度还是细节方面都达到了一个很好的效果。
为了证明不仅适应于一种场景,进行第二张图片展示:在这里插入图片描述通过上面两张图像的展示,我想这样的图片效果超越了很多的其他方法,并且效果特别好。
下面拿SSR(单尺度retinex增强作比较):retinex算法同样能够在一定程度上提升图像的亮度,但效果明显不如Tao的方法好,效果如下:
在这里插入图片描述很明显不管是亮度上还是色彩上,SSR的效果不如上述方法。MSR以及MSRCR,我想效果上也是肯定不如Tao的方法。
下面是的在实现论文是所用的部分matlab代码,因为matlab里面有很多内置的函数,所以实现起来也不是很难。

%%
%2019年10月20日-2019年10月21日
%论文:An Integrated Neighborhood Dependent Approach for Nonlinear Enhancement of Color Images
clc
clear
I=im2double(imread('three.png'));
I1=rgb2gray(I);
In=(I1.^(0.24)+(1-I1).*0.5+I1.^2)/2;
%通过高斯核对灰度增强图像做卷积运算
sigma=5;
window = double(uint8(3*sigma)*2 + 1);
G1=fspecial('gaussian',window,sigma);
Guass1=imfilter(I1,G1,'conv','replicate','same');
r1=Guass1./I1;
R1=In.^r1;
sigma=20;
window = double(uint8(3*sigma)*2 + 1);
G2=fspecial('gaussian',window,sigma);
Guass2=imfilter(I1,G2,'conv','replicate','same');
r2=Guass2./I1;
R2=In.^r2;
sigma=240;
window = double(uint8(3*sigma)*2 + 1);
G3=fspecial('gaussian',window,sigma);
Guass3=imfilter(I1,G3,'conv','replicate','same');
r3=Guass3./I1;
R3=In.^r3;
R=(R1+R2+R3)/3;
Rr=R.*(I(:,:,1)./I1);
Rg=R.*(I(:,:,2)./I1);
Rb=R.*(I(:,:,3)./I1);
rgb=cat(3,Rr,Rg,Rb);
imshow([I rgb]);

猜你喜欢

转载自blog.csdn.net/weixin_44690935/article/details/102680513