基于逆通道与改进引导滤波的暗通道去雾算法
2021-06-18陈子妍龙道银
陈子妍,龙道银,王 霄,覃 涛,杨 靖
(1.贵州大学 电气工程学院,贵阳 550025;2.中国电建集团贵州工程有限公司,贵阳 550025)
0 概述
雾是由悬浮空中的细小水滴形成的气溶胶。由于雾会降低地面水平能见度,因此在雾天采集的户外图像通常存在模糊不清、颜色失真等退化现象。近年来,随着大气污染物排放量的增加,雾霾的出现日益频繁,导致户外视觉系统无法正常工作。因此,研究有效的图像去雾算法具有重要意义。
目前主流的图像去雾算法主要包括基于图像增强[1]的去雾算法和基于物理模型复原图像[2]的去雾算法。基于图像增强的去雾算法包括直方图均衡化算法[3]、同态滤波算法[4]、小波变换算法[5]和Retinex算法[6]。基于物理模型复原图像的去雾算法是通过分析图像退化原因建立雾天图像退化模型,然后反推出无雾图像。该算法可得到去雾后真实的图像,能有效避免图像信息大量丢失,具有较好的去雾效果,其主要包括多幅图像去雾算法和单幅图像去雾算法。常见的多幅图像去雾算法有偏振光学成像去雾算法[7]和利用图像深度信息估算场景模型复原图像的去雾算法[8]。在单幅图像去雾方面,文献[9]提出一种增加物体表面阴影的估计传输函数去雾算法。文献[10]利用中值滤波估计大气耗散函数,取得了一定的去雾效果。文献[11]利用暗通道先验理论估计大气光值与透射率复原图像。虽然暗通道先验去雾算法的去雾效果较自然,但其对天空等白色物体高亮度区域大气光的估计值偏大,同时透射率计算精度较低会造成光晕伪影,导致整体去雾效果偏暗。文献[12]提出一种有效的正则化去雾算法,将透射率的边界约束与基于加权L1 范数的上下文正则化相结合,建立模型估计未知场景透射率。文献[13]提出一种基于多尺度小波变换的去雾算法,其可对低频图像进行去雾处理,同时增强高频图像的细节纹理信息。文献[14]通过一系列伽马校正对模糊图像进行人工欠曝光操作,再利用多尺度拉普拉斯混合方案将所得多幅曝光图像集处理为无雾图像集。文献[15]采用自适应阈值分割算法将图像分割为亮白区域与非亮白区域,并根据灰度计算权重,提高透射率。文献[16]将颜色线先验估计的透射率图和暗通道先验估计的透射率图进行加权融合,有效提高了透射率的准确性。
深度学习技术也被应用于图像去雾处理。文献[17]提出一种多尺度深度神经网络去雾算法,利用粗尺度神经网络估计透射率,并通过细尺度神经网络细化透射率图的局部细节。文献[18]提出一种基于残差的深度卷积神经网络去雾算法,有效提高了去雾效率。针对深度学习算法去雾后仍有残雾的问题,文献[19]提出一种双域分解的多尺度深度学习去雾算法,利用结合高频子雾网络与低频子雾网络的多尺度深度学习网络获得良好的去雾效果,但该算法复杂度较高。
本文针对暗通道先验去雾算法得到的图像透射率不精确、去雾后整体偏暗以及大气光值偏大等问题,提出一种改进的暗通道去雾算法。根据可见光在雾天衰减速度不同的特点,通过求取雾天图像蓝色通道的逆通道来校正暗通道图,在引导滤波中引入权重因子对平滑因子进行自适应调整,以获得图像不同位置的滤波强度,从而更准确地细化透射率。在此基础上,结合最大类间方差法和形态学分割得到图像的天空部分,选取其中亮度最大像素值的平均值作为大气光值,最终修复得到去雾图像。
1 相关去雾算法
1.1 大气散射模型
大气散射模型[20]主要包括雾天图像成像过程与各个要素,其常用于图像的去雾修复,表达式如下:
其中,I(x)为输入图像(有雾图像),J(x)为输出图像(去雾图像),A为无穷远的大气光值,x为图像中像素点的位置,t(x)为透射率(传输函数),表示经过粒子散射后达到成像设备的光比例。
1.2 暗通道先验去雾
文献[11]对大量去雾图像进行统计后发现,在非天空区域图像的红色通道(R)、绿色通道(G)和蓝色通道(B)中存在至少1 个颜色通道的像素值很低且趋近于0,在此基础上提出暗通道先验理论,将任意去雾图像的暗通道表示为:
其中,Jc为去雾图像J的某个颜色通道,Ω(x)为以x为中心的矩形窗口,Jdark为J的暗通道。假设已知大气光值A,且在每个局部窗口的透射率t不变,则对式(1)取最小值:
取3 个颜色通道中的最小值:
根据暗通道先验理论计算如下:
由于Ac>0,因此可粗略估算出透射率t为:
因为空气中存在细小颗粒,在晴天观察远处物体时有雾存在,所以为使图像保持深度感[11],在远处有雾的情况下引入常数ω(0<ω≤1,通常ω取0.95)进行计算,计算公式如下:
当t(x)接近0 时,修复图像中包含噪音,因此设定下限透射率t0,得到最终修复图像J(x)为:
由于粗略估算的透射率t会使修复图像出现块效应,可用软抠图的方法优化透射率[11],但该方法计算时间较长,实用性较差,因此采用引导滤波优化透射率以提高算法执行速度[11]。
2 本文改进算法
2.1 改进的暗通道
由于雾对不同波长可见光的吸收率不同,导致其衰减速度不同,其中在雾天蓝光衰减速度最快[21],蓝色通道像素值接近0。由式(7)可知,要得到透射率t的估计值需计算所输入雾天图像I的暗通道。本文在计算雾天图像I的暗通道时考虑红色通道和绿色通道以及蓝色通道的逆通道,蓝色通道的逆通道可表征蓝光衰减情况,将蓝色通道的逆通道定义如下:
式(7)中雾天图像I的暗通道表达式为:
不同算法的暗通道和去雾效果如图1 所示。由图1(b)和图1(c)可以看出,本文利用蓝色通道的逆通道所得暗通道图像在无穷远处的暗通道值比HE等人[11]提出的暗通道去雾算法(以下称为HE 算法)中暗通道值更低,避免了透射率估计值偏小的问题,不会出现光晕现象。图1(d)和图1(e)分别为HE 算法和本文改进算法(以下称为本文算法)的去雾效果图,可以看出,由于雾天大气光浓度较大,有雾图像的暗通道强度值较高,使最终效果图(见图1(d))整体偏暗,且在无穷远处(天空区域)计算所得透射率t较小,容易在天空区域产生光晕(见图1(d)方框处),本文算法所得图像的无穷远处(见图1(e)方框处)色彩过渡平缓自然,图像整体清晰度更高。
图1 不同算法的暗通道和去雾效果图Fig.1 Dark channel and defogging effect images of different algorithms
2.2 改进的引导滤波
引导滤波算法[22]具有复杂度低、计算速度快和执行效率高等特性,其在进行滤波处理时需要引导图像。假设输出图像q与引导图像I存在如下关系:
其中,ωk为以像素k为中心的局部窗口,ak与bk为引导图像在局部窗口ωk的线性不变系数。
为得到ak和bk的最优解并最小化输入图像p与输出图像q的差异,使滤波处理后的图像与输入图像p基本相同,其细节纹理与引导图像相同,采用最小二乘法拟合线性关系,拟合函数表达式为:
其中,ε为平滑因子。利用ε去除过大的ak值,相关计算公式如下:
其中,μk和分别为I在局部窗口ωk的平均值和方差,为局部窗口ωk中输入图像p的平均值。
因为引导滤波在不同窗口采用相同的平滑因子ε,且ak所受约束力相同,所以暂不考虑各个窗口内像素之间存在的纹理性差异。由于过大的ak会导致滤波效果过度,使图像边缘出现光晕现象[23],因此引入权重因子λ对平滑因子ε进行自适应调整,在图像边缘叠加较小的平滑因子ε来增强算法的鲁棒性。
改进的引导滤波算法步骤如下:
1)用Sobel 算子自动设定边缘阈值t,利用图像梯度模值M表示图像中每个像素灰度变化的特征(图像边缘处梯度值大,非边缘处梯度值小),将边缘阈值t与梯度值M进行比较,以检测出位于边缘的像素点。
2)引入权重因子λ,将原有的平滑因子ε调整为自适应平滑因子ε/λ。由于要在图像边缘叠加较小的平滑因子ε,因此边缘处的λ值和像素点局部方差需较大,根据上述图像边缘的特点,定义权重因子λ为:
加入权重因子后得到拟合函数如下:
改进前后引导滤波的透射率效果如图2 所示,引导图像I为原始图,输入图像p为粗透射率效果图。可以看出,改进后的滤波图整体上与输入图像p相似,其在细节纹理上与引导图像相同,整体效果较改进前算法更优。
图2 改进前后引导滤波透射率效果图Fig.2 Effect images of transmittance of guided filtering before and after improvement
2.3 天空分割大气光校正
因为图像中有大气光,其与雾叠加后较自身更亮,透射率t一般较小,所以雾覆盖图像的暗通道具有较高强度值,可将暗通道强度值作为雾浓度的粗略近似值。因此,HE 算法选取暗通道中亮度最大0.1%的像素[11],并将输入图像I中强度最大的像素点设定为大气光值。
由于部分图像包含白色物体、车灯和路灯等人造光源,导致所选大气光值偏大,从而会影响后续图像的处理。因为雾天图像中天空的颜色与大气光非常接近,所以将图像分割为天空部分与非天空部分[24],根据天空部分计算大气光值,具体步骤如下:
1)利用最大类间差法OTSU[25]将有雾图像进行二值化分割。
2)采用形态学膨胀与腐蚀操作将图像分割为前景(天空部分)与背景(非天空部分)图像。
3)提取前景图像,选取天空中亮度最大0.1%像素的平均值作为大气光值。
天空区域分割前后的效果如图3 所示,采用上述方法不仅可避免白色物体、车灯和路灯等造成的大气光取值偏差,还能减弱图像的噪声干扰。
图3 天空区域分割前后的效果图Fig.3 Effect images before and after sky area segmentation
2.4 本文算法流程
本文算法的具体流程如下:
1)分离出雾天图像的红、绿、蓝3 个颜色通道,由雾天图像蓝色通道的逆通道Binverse得到新的雾天图像暗通道
2)利用新的雾天图像暗通道I′dark,粗略计算得到初始透射率t。
3)将雾天图像的灰度图作为引导图像,利用加入自适应平滑因子的改进引导滤波细化初始透射率。
4)采用最大类间差法分割图像的天空部分,选取天空中亮度最大0.1%像素的平均值作为大气光值A。
5)利用透射率t和大气光值A得到无雾图像J。
3 仿真与结果分析
本文在MATLAB2014b平台对所提算法进行验证。仿真实验采用Windows10 操作系统,Intel Core i5@2.3 GB,4 GB 内存和840 MB 显卡。参数设置为:暗通道中最小值滤波窗口Ω=7,透射率下限值t0=0.1,改进引导滤波的滤波半径r=56,平滑因子ε=0.01。
3.1 评价指标
为评估本文算法的有效性,将本文算法的图像修复效果与采用暗通道先验去雾的HE 算法[11]、文献[12]中基于边界限制的去雾算法(以下称为文献[12]算法)、文献[13]中多尺度小波去雾算法(以下称为文献[13]算法)、文献[14]中基于融合的图像去雾算法(以下称为文献[14]算法)的图像修复效果进行对比。
由于主观评价是根据评价人员主观意识得到的评价结果,为更准确评估本文算法,选取峰值信噪比(Peak Signal to Noise Ratio,PSNR)、均方误差(Mean Square Error,MSE)[26]和结构相似性(Structual Similarity,SSIM)3 个常用的全参考客观评价指标,以及可见边增加比率e、饱和像素点比率σ和规范化的可见边梯度均值rˉ3 个适用于雾天图像质量评价的无参考评价指标[27]。峰值信噪比与均方误差是根据待测图像与参考图像之间灰度值的差异衡量图像质量,峰值信噪比越大,表明图像失真度越小,图像质量越好;均方误差越小,图像质量越好。相关计算公式如下:
其中,fij为雾天图像在(i,j)处的像素值,为去雾后图像在(i,j)处的像素值,L=255 为峰值信号。
结构相似性反映出图像质量的优劣程度和两幅图像的相似度,SSIM 值越大表明图像质量越好,其计算公式如下:
其中,l为亮度信息,c为对比度信息,s为结构信息,α、β、γ均大于0。l、c和s的计算公式如下:
其中,μx和μy分别为雾天图像和去雾图像的均值,σx和σy分别为雾天图像和去雾图像的方差,σxy为协方差,C1、C2和C3是防止分母为0 的常数。
文献[26]提出的对比度增强评价方法是通过可见边检测得到图像对比度,利用可见边增加比率e、饱和像素点比率σ和规范化的可见边梯度均值3个指标值衡量图像对比度的增强能力,其计算公式如下:
其中,n0和nr分别为雾天图像和去雾图像中可见景物边缘轮廓的数量,ns为灰度值为0 的像素数目,dimx和dimy分别为图像的宽度和长度,℘r为去雾图像的可见边集合,Pi为去雾图像可见边的像素点,ri为去雾图像在Pi处的Sobel 梯度与雾天图像在Pi处Sobel 梯度的比值。当e与rˉ值越大且σ值越小时,表明去雾后的图像质量越好。
3.2 结果分析
本文算法与HE 算法、文献[12]算法、文献[13]算法、文献[14]算法得到的图像修复效果如图4~图7所示。由图4(f)~图7(f)可以看出:HE 算法所得图像的天空部分出现不同程度的光晕现象,特别是图6(f)和图7(f)中较明显;图4(f)出现色偏现象,图像局部颜色偏黄;图5(f)从主观视觉上看整体较暗。上述现象是由透射率与大气光值估计不准确导致。文献[12]算法所得图像虽未出现光晕现象,但在图4(g)~图7(g)中天空部分出现大面积的亮白区域,去雾效果不自然,且图4(g)和图6(g)中建筑物区域存在颜色失真问题。文献[13]算法所得图像整体效果优于HE 算法和文献[12]算法,但图6(i)和图7(i)的天空区域仍有轻微光晕,图4(i)~图7(i)中景物偏暗,局部区域非常模糊,失去物体的层次感。文献[14]算法所得图像的天空部分虽然未出现光晕现象,图像整体亮度适中,但存在颜色失真问题,且物体边缘处灰度不连续,呈现轻微锯齿状。由图4(j)~图7(j)可以看出,本文算法所得图像的天空区域均未出现光晕伪影现象,图像整体亮度适中,不存在色偏和颜色失真问题,物体边缘清晰且立体感较强,有效解决了HE 算法存在的不足。
图4 不同算法得到的天安门效果图Fig.4 Effect images of Tian An Men obtained by different algorithms
图5 不同算法得到的风景效果图Fig.5 Effect images of landscape obtained by different algorithms
图6 不同算法得到的城市效果图Fig.6 Effect images of city obtained by different algorithms
图7 不同算法得到的楼房效果图Fig.7 Effect images of buildings obtained by different algorithms
HE 算法、文献[12]算法、文献[13]算法、文献[14]算法及本文算法的PSNR 值、MSE 值和SSIM 值对比如表1~表3 所示。由表1 可见本文算法的PSNR 值高于其他算法,表明其所得修复图像的失真度更小。由表2可见本文算法所得修复图像的MSE 值明显小于其他算法,表明去雾图像与原始图像的像素之间差异更小。由表3 可见本文算法修复图像与原始图像相似度更高,较好地保留了图像的原有信息。
表1 不同算法的PSNR 值对比Table 1 Comparison of PSNR values of different algorithms dB
表2 不同算法的MSE 值对比Table 2 Comparison of MSE values of different algorithms
表3 不同算法的SSIM 值对比Table 3 Comparison of SSIM values of different algorithms
HE 算法、文献[12]算法、文献[13]算法、文献[14]算法及本文算法的e值、σ值和rˉ值对比如表4~表6所示。可以看出,本文算法的e值与rˉ值更大且σ值更小,表明其所得图像修复效果更优。结合主观和客观的评价结果可知,本文算法能有效复原图像。
表4 不同算法的e 值对比Table 4 Comparison of e values of different algorithms
表5 不同算法的σ 值对比Table 5 Comparison of σ values of different algorithms %
表6 不同算法的rˉ值对比Table 6 Comparison of rˉvalues of different algorithms
4 结束语
本文提出一种结合逆通道与改进引导滤波的暗通道去雾算法。引入蓝色光的逆通道得到修正的雾天图像暗通道图,利用改进的暗通道图与自适应引导滤波计算透射率,通过最大类间方差法和形态学操作分割出图像的天空部分得到大气光值,最终得到去雾图像。实验结果表明,与基于边界限制的去雾算法和多尺度小波去雾算法相比,该算法的去雾效果更优,图像色彩明亮且对比度高,边缘信息保留完整,视觉效果更真实自然。后续将改进算法进一步提高实时性,以应用于监控视频去雾。