基于暗通道的单图像融合去雾算法

2022-09-06 13:17司振惠
计算机应用与软件 2022年8期
关键词:伽马校正滤波

司振惠 于 萍 王 岩

(吉林师范大学计算机学院 吉林 四平 136000)

0 引 言

在雾天里,空气中的粒子会吸收和反射物体的光,从而使拍摄的图像可见度和对比度降低[1],图像质量下降,很不利于识别图像中的目标,这也往往是道路发生交通事故的重要原因。因此,提出一种提高图像可见度和对比度的算法十分重要[2]。随着计算机视觉的高速发展,图像去雾技术的应用范围也越来越广,如在雾天识别汽车牌照[3]以及应用在校园监控中[4]等。针对有雾图像,学者们提出了大量的去雾算法,目前的去雾算法主要分为两类:第一类是提高图像对比度的增强算法,这类算法主要有Retinex算法、直方图均衡算法、同态滤波算法。Retinex算法主要有三种,分别是单尺度retinex算法(Single Scale Retinex,SSR)、多尺度Retinex算法(Multiscale Retinex,MSR)和带有彩色恢复因子的多尺度Retinex算法(Multiscale Retinex with Color Restoration,MSRCR),由于SSR[5]对灰度图像效果更好,而MSR[6]难以维持颜色恢复和保留细节之间的平衡,所以MSRCR[7]算法应用得更多,但对于色彩过度饱和的图像来说,去雾效果不理想,易出现色彩失真现象。直方图均衡算法[8]通过使有雾图像的灰度分布直方图接近均匀化分布进而提高图像对比度,但不同灰度值的像素在均衡化后可能变成相同灰度值,导致图像细节丢失。同态滤波[9]算法主要通过高通滤波器增强高频分量,降低低频分量来提高有雾图像的可见度,但对于一些雾不均匀的图像来说去雾效果不好。

第二类是基于物理大气散射模型的图像去雾算法,这类算法主要依据无雾图像与有雾图像之间的线性方程,进而反推出清晰图像。He等[10]的算法通过图像的暗通道去估计粗略的透射率,然后利用引导滤波进行优化,但由于对透射率估计得不准确,降低了图像的亮度,图像可见度不高,并且在明亮区域(尤其天空区域)容易出现光晕现象。蒋建国等[11]对He等的算法提出了改进,引入了容差值解决了该问题,但图像的清晰度依然不高。Tarel等[12]提出基于中值滤波的去雾算法,该算法运行速度快、复杂度低,但对于不连续的深度图像容易出现颜色失真现象。Meng等[13]利用传输函数的边界约束和上下文正则化来建模,进而估计有雾图像的传输图,该算法在色彩恢复方面效果不佳,去雾后的图像色彩过于饱和。Zhu等[14]提出了用颜色先验估计传输图的算法,对雾和颜色比较均匀的图像效果较好,但去雾后图像整体偏暗。Cai等[15]提出了一种端到端的单幅图像去雾系统,通过输入有雾图像估计其传输图,最后利用大气散射模型进行去雾,该算法去雾效果较好,但图像亮度较低,算法复杂度也偏高。Sebastian等[16]提出用多层感知机从最小通道去估计并优化传输图,相对于传统的暗通道算法对传输图的两次运算,提高了算法效率,但去雾后图像局部颜色失真,图像可见度和亮度下降。

总的来说,现有算法存在的问题主要有两点:一是去雾后图像整体偏暗,图像细节模糊;二是图像的色彩过度增强,易出现光晕或失真现象。对于第一个问题,主要是通过伽马校正来提高原图像亮度。对于第二个问题,主要采用限制对比度自适应直方图均衡算法来提高图像对比度,恢复图像色彩以及增强细节。最后将两者融合,使图像视觉效果恢复更好。

基于暗通道的单图像融合去雾算法不同于传统的暗通道算法,在对图像求解暗通道之前,要先对其进行伽马校正和调整对比度的预处理,然后对伽马校正后的图像进行求解暗通道,并依据暗通道估计透射率和大气光,利用物理模型求解出清晰图像,最后将其与限制对比度自适应直方图均衡算法处理后的图像进行融合得到增强图像。改进算法的具体流程如图1所示。

图1 算法流程

1 伽马校正

伽马校正(Gamma Correction)是一种重新对图像色彩进行编译的算法,通过放大图像中的深色和浅色范围,进而提高图像对比度,其数学公式如下:

Gy=yr

(1)

式中:Gy伽马校正后的图像;y表示原始图像;r表示校正系数。当r的值大于1的时候,随着r的增加,图像的高光局部范围逐渐被压制,而低光局部范围则得到了舒展,图像整体色彩偏暗,细节更加清晰;当r的值小于1时,情况恰恰相反,低光压制高光舒展,图像亮度增强。

有雾图像中“重”颜色区域在经过暗通道去雾后颜色会变得更深,使图像整体偏暗,图像可见度恢复程度不高,为了解决这一问题,通过大量实验数据证明:通过对图像进行伽马校正,使图像局部高光动态范围扩大,去雾后的图像可见度会更高,图像细节会更加清晰,实验结果如图2所示。

图2 实验结果

可以看出,经过伽马校正后的去雾图像的可见度明显提高,在色彩恢复方面效果更自然,原图像中树木的形态变得更加清晰,其传输图的效果也更好。为了确定最优的校正参数r,进行了不同r值的实验,实验结果如图3所示。

图3 伽马校正图

可以看出,当校正系数r的值小于0.7时,图像中雾的覆盖面积比原图像大很多,而当r的值大于0.7时,图像开始局部偏暗,去雾后的效果不会更好,考虑到是有雾图像,所以伽马校正系数的值不能太小,当r=0.7时,图像增加的亮度和雾都是适当的。因此,后面实验中r的取值都为0.7。

2 限制对比度自适应直方图均衡

限制对比度自适应直方图均衡(Contrast Limited Adaptive Histgram Equalization,CLAHE)算法可以增强图像对比度,在色彩恢复方面效果更好[17]。其中参数c是用来限定图像对比度范围,其值越大,图像对比度越明显,但值过大时,容易造成图像过度增强现象。为了确定最优参数c,进行了一系列不同c值的实验,实验结果如图4所示。

图4 CLAHE实验结果

可以看出,随着c值的增大,虽然图像的色彩得到了增强,但局部区域出现了过度增强效果,并且增强后的图像与原图像的色差值越来越大,面对有雾的图像,c值的增大也会产生更多噪声,因此在后续实验中c的值取0.01,此时图像的色彩是最贴近原图像的,同时也能够消除一定量的雾。

3 基于暗通道的单图像融合去雾算法

3.1 暗通道

雾天的大气散射物理模型如下:

I(x)=J(x)t(x)+A(1-t(x))

(2)

式中:I为观测到的有雾图像;J为所求的清晰图像;A为大气光值;t为透射率;x为像素点的坐标。

He等[10]根据大量统计数据得出假设:大多数图像在某些区域(除天空区域)总能存在最小亮度值,其值接近于零,并称之为图像的暗通道,对于任意一幅图像,其暗通道表达式如下:

Jdark(x) =minc∈{r,g,b}(miny∈Ω(x)(Jc(y)))

(3)

式中:图像的三个颜色通道分别用r、g、b来表示,Ω(x)表示以像素点x为中心的方形区域。

求解暗通道的具体代码:

Wnd=3;

%滤波窗口的大小

Ir = I(:,:,1);Ig = I(:,:,2);Ib = I(:,:,3);

%有雾图像的三通道图像拓展(对于边缘像素需要以其为中

%心,按窗口半径进行向外扩展形成一个3×3的方形区域。)

[m,n,~] = size(I);

%获取图像的长和宽

%定义扩展矩阵大小

Irr = zeros(m+Wnd-1, n+Wnd-1);

Igg = zeros(m+Wnd-1, n+Wnd-1);

Ibb = zeros(m+Wnd-1, n+Wnd-1);

% Ir、Ig、Ib通道值赋给扩展区域Irr、Igg、Ibb

Irr((Wnd-1)/2:m+(Wnd-1)/2-1,(Wnd-1)/2: n+(Wnd-1)/2-1 ) = Ir;

Igg((Wnd-1)/2:m+(Wnd-1)/2-1,(Wnd-1)/2: n+(Wnd-1)/2-1)=Ig; Ibb((Wnd-1)/2:m+(Wnd-1)/2-1,(Wnd-1)/2: n+(Wnd-1)/2-1 ) = Ib;

% 暗通道的求解

for i=1:m

for j=1:n

%求三通道在局部方形区域内的最小值

Rmin= min(min (Irr(i:i+Wnd-1, j:j+Wnd-1)));

Gmin=min(min (Igg(i:i+Wnd-1, j:j+Wnd-1)));

Bmin=min(min (Ibb(i:i+Wnd-1, j:j+Wnd-1)));

%三个通道的最小通道值作为暗通道

Jdark(i,j) = min(min(Rmin,Gmin),Bmin);

end

end

3.2 大气光

He等[10]发现雾霾图像的暗通道和雾霾的稠密程度相似,所以挑选暗通道中最亮的0.1%像素估计大气光,具体做法为:首先在暗通道中选取m个像素点(m=总像素点个数/1 000),记录其坐标,然后在原图像中找到对应的像素点,并从中选取最大值作为A的值。

3.3 透射率的估计与优化

通过对暗通道采取局部最小值滤波和利用大气散射物理模型,可以求出粗略的透射率t,表达式如式(4)所示。其中参数ω用来保留部分雾,使图像看起来更自然,取值为0.95。

(4)

引导滤波方法可以显著降低暗通道去雾算法的复杂度并优化透射率t,引导滤波和双边滤波都可以平滑图像,但是在保存边缘和细节方面更优于双边滤波[18],优化t的表达式如式(5)所示。

Gt=GF(I,t,r,ε)

(5)

式中:Gt表示优化后的透射率;GF表示引导滤波函数;I表示引导图像也就是有雾图像;t表示滤波图像即粗略的透射率;r表示滤波窗口大小;ε表示正则化参数,在大多数实验中r和ε的取值分别为32和0.01。

3.4 重估透射率求解清晰图像

将求出的A和Gt的值代入式(2),求出相应的无雾图像,为了避免t的值等于0,为其设置一个下限t0,t0的取值为0.1。所求的J(x)表达式如下:

(6)

对于He等[10]对透射率错误估计的问题,蒋建国等[11]通过设置容差值K解决,对于小于K值的部分定义为明亮区域,重新计算其透射率,对于大于K值的部分,其透射率的值保持不变,当K=0时,为原来的暗通道先验算法,最后得到清晰图像的表达式如式(7)所示。

(7)

重估透射率并求解清晰图像的具体代码如下:

for i = 1:1:m

%m和n分别为图像的长和宽

for j = 1:1:n

for k = 1:1:3

%k表示图像3个道通

s=K/(abs(I(i,j,k)-A(k)));

%abs为绝对值函数

J(i,j,k)=(I(i,j,k)-A(k))/ %此处对应式(7)

min((max(s,1).*max(Gt(i,j),t0)),1)+A(k);

end

end

end

3.5 图像融合

图像融合是处理图像过程中常用的方法,该方法可以将不同图像或同一图像不同形态相融合在一起,用彼此的优点补偿各自的缺点,使融合后的图像效果更令人满意。Galdran等[19]的人工多曝光图像融合算法在去雾方面取得了很好的成效,因此,将经过伽马校正后的去雾图像与CLAHE处理的图像进行线性融合,会使图像整体视觉效果更好,具体的融合公式为:

M=Gr+(1-r)C

(8)

式中:M为融合后的图像,r为融合系数,G为暗通道去雾后的图像,C为增强对比度后的图像。经过大量的实验证明,当r的取值为0.2时,融合的图像无论是在去雾方面,还是在可见度恢复方面都有所增强,图像中的物体更加清晰。实验结果如图5所示。

图5 融合结果

可以看出,随着r值的增大,图像中天空区域的雾越来越多,图像的可见度也明显下降,伽马校正和CLAHE算法都会增加图像的对比度,CLAHE增加的效果会更加强烈一些,对于一些色彩比较丰富的有雾图像,如果CLAHE在融合中占的比例比较高,去雾后图像容易出现过度增强现象。综合考虑以上结论,最终确定r的取值为0.2。

4 实验结果与分析

该实验是在普通PC机上进行的,具体配置为:操作系统Windows 7,CPU为Intel® CoreTMi7-6700@3.4 GHz,系统内存为8 GB,运行算法的软件为MATLAB2016。

为了证明算法的鲁棒性,进行了与其他经典算法的比较,图像是两幅在网络上下载的彩色RGB图像,其中包含天空区域。选取包含天空图像的原因是:去雾算法通常在天空区域附近,易出现光晕现象,可以验证改进算法的可行性,选取RGB图像主要是因为其比灰度图像去雾效果更明显,更容易与其他算法进行效果对比,并且RGB图像包含的图像信息更多。具体实验结果分别如图6和图7所示。

图6 实验结果

图7 实验结果

从图6(图像大小:600×450, 水平/垂直分辨率:96dpi)中可以看出文献[10,13-15]算法虽然去除了雾,但图像的亮度明显降低,对于原图像中蓝色区域都出现了过度增强现象,图像色彩过于饱和。文献[12]算法在图像的天空区域出现了颜色失真现象,图像边缘有伪轮廓出现。文献[16]和改进算法结果更令人满意,但文献[16]算法去雾效果不彻底,图像的亮度也明显低于改进算法。

在图7(图像大小:450×600, 水平/垂直分辨率:96dpi)中,文献[12]算法明显过度增强了山脉的纹络,导致图像严重失真。文献[10,13-16]算法使图像局部颜色加深,可见度降低,图像细节模糊,尤其是对于原图像中蓝色区域内的恢复效果都没有改进算法好,无论是细节的增强还是颜色的补偿,其他算法相比改进算法都有所欠缺。

目前对于图像去雾算法还没有统一的评价标准,这里主要选取了比较具有权威的峰值信噪比(Peak-Signal to Noise Ratio/ PSNR)和r[20]作为评价标准, PSNR表示图像的失真程度以及降噪程度,值越大表示图像失真越小,噪声越少。r表示图像边缘增强程度,值越大表示图像的可见度越高,表1和表2为图6和图7的客观评价标准表。

表1 图6的客观评价表

表2 图7的客观评价表

结合表1和图6可以明显看出,文献[14]算法可见度最低,文献[12]算法失真最严重,改进算法无论是PSNR还是r的值都高于其他算法,在图像可见度恢复方面和降噪方面更胜一筹。结合表2和图7可以看出,由于文献[12]算法的过度增强,导致图像失真严重,所以其r值高于改进算法,而在降噪方面和可见度增强方面,改进算法更好。

伽马校正参数r值和调整对比度参数c值对两幅图像(图6和图7)的PSNR的影响如图8所示。从图8(a)中可以看出,当r等于固定值0.7时,随着c值的增大,图6和图7的PSNR值逐渐下降,这是因为c值的逐渐增大,导致图像出现过度增强现象即失真。从图8(b)中可以看出,当c等于固定值0.01时,随着r值的增大,两幅图像的PSNR值在r=0.7时达到了最大值,表明此时图像的失真程度最小。结合前面的图3和图4可以得出:当r=0.7、c=0.01时改进算法的效果最为理想。

(a) c值对PSNR的影响(r=0.7)

(b) r值对PSNR的影响(c=0.01)图8 参数对PSNR影响的折线图

5 结 语

图像去雾的目的是提高图像的可见度和亮度,进而识别图像中感兴趣区域,现有的一些算法虽然在去雾方面效果较好,但往往在图像颜色恢复方面表现欠佳,去雾后的图像局部区域物体颜色加深,导致图像整体偏暗,图像中的细节更是不易显示和识别。对此,改进后的算法选取了伽马校正和CLAHE算法。伽马校正可以提高图像亮度,进而避免了去雾后图像局部变暗的现象。CLAHE算法不仅可以提高图像对比度,而且在色彩恢复方面有很好的效果,有效避免了去雾后图像色彩加深的问题。改进后的算法简单,复杂度低,但鲁棒性和实效性很强,还可以处理雾天的交通监控图像,提高汽车牌照识别率,减少事故发生的概率,因此具有较强的实用价值。

猜你喜欢
伽马校正滤波
基于HP滤波与ARIMA-GARCH模型的柱塞泵泄漏量预测
基于改进自适应中值滤波的图像降噪方法*
再分析降水资料的适用性评估与偏差校正
三大抽样分布的理解与具体性质
炫酷ACR
航海家的故事
一种具有自动校正装置的陶瓷切边机
基于非下采样剪切波变换与引导滤波结合的遥感图像增强
瓦斯科·达·伽马
投影机的梯形校正