基于高斯模型与自适应大气光幕的图像去雾算法
2024-01-15舒仝,杨燕
舒 仝, 杨 燕
(兰州交通大学,兰州 730000)
0 引言
在不佳天气条件下获取的户外图像或视频都会遇到对比度降低、图像质量下降等问题,这是由于来自物体的反射光被悬浮在空气中的粒子(如水蒸气、雾、沙子、灰尘或烟雾等)散射、折射、吸收。这种干扰降低了图像的视觉质量,还影响了图像特征提取的准确性,从而导致计算机视觉系统中的一些误差。因此对于许多计算机视觉任务,在不佳天气条件下对获得的图像进行雾霾去除是至关重要的工作。
就目前最新研究现状而言,图像去雾算法可以大致分为基于物理模型和基于数据驱动的算法。基于物理模型的去雾算法通过建立模型,分析了图像的退化机制,实现了场景重建。文献[1]提出的经典的暗通道先验算法,对于一般的不含天空或高亮区域的户外雾天场景图像处理具有较好的结果,但是当图像中出现天空区域或高亮区域,在这些区域中暗通道也不能正确反映景深变化,从而造成透射率估计较小导致该算法在天空或高亮区域失效,随后,暗通道先验算法中的软抠图技术也被引导滤波所取代,大大提高了处理效率;文献[2]通过假设物体的反照率和透射率在统计上不相关来评估透射率,该方法不仅可以恢复无雾图像,而且可以估算出较为准确的透射率,然而,当所需的假设被打破时,这种方法可能无法恢复无雾霾的图像;文献[3]通过对无雾图像暗通道和有雾图像暗通道之间的线性关系建立分段函数模型获得了较为准确的透射率,然而,该算法同样不适用于有高亮物体的图像(如白色墙壁等),容易低估了这些物体的透射率,导致图像变黑,产生颜色偏差;文献[4]利用离散余弦变换的特点,设计了一种低复杂度的低频分量提取方法,随后,通过构造未知参数的线性函数,并将饱和先验施加于改进后的加性雾霾模型上,可以将图像脱模糊问题导出为一个全局优化函数,从而获得无雾图像。
近年来,深度学习理论和计算机硬件的快速发展使得图像处理获得了进一步发展,很多基于深度学习的去雾算法被提出。经过大量的样本训练,通过与深度学习框架合并或学习几个与雾霾相关的特征来去除雾霾。文献[5]提出了自引导渐进式特征融合去雾网络,从输入图像本身探索有用的信息,通过对输入图像进行去雾预处理获得中间结果作为指导,利用渐进式特征融合网络恢复出清晰的图像;文献[6]提出了一种多尺度卷积神经网络,通过学习更有用的特征来获得更好的恢复质量,并且引入引导滤波或精细化尺度网络来修复估计粗糙透射率中的伪影;文献[7]建立了一个一体化去雾网络模型,以直接恢复无雾结果而不需要估计透射率,虽然深度学习具有很强的先进性,但由于获得同一场景下有雾图像和无雾图像难度较高,所以在训练中使用的都是通过算法人工合成的有雾图像数据集,这也导致了使用此类算法在对真实雾图进行处理时并不总能得到最佳和稳定的结果。
综上所述:本文利用高斯函数建立大气光幕与低频分量之间的线性模型,获得初始的大气光幕,利用伽马校正对大气光幕进行修正,并建立一个全局优化函数求取其中的参数值,从而获得最终自适应大气光幕;然后利用局部大气光策略代替全球大气光,获得局部大气光图像;最后利用大气散射模型获得无雾图像。
1 相关工作
在计算机视觉任务中,用大气散射模型来描述雾天成像原理,其表达式为
I(x)=J(x)t(x)+A(1-t(x))
(1)
式中:I(x)表示有雾图像;J(x)表示无雾清晰图像;t(x)=e-β·d(x),为透射率;A为全球大气光。
TAREL等[8]发现大气散射中透射率的大气散射系数β和场景深度d不能分离,引入了大气光幕,表示为
V(x)=(1-t(x))A
(2)
由于大气光幕的物理性质,当观测到的图像已知时,大气光幕会受到两个约束:1) 总为正值V(x)>0;2) 对于每个像素它不能高于有雾图像的最小通道值V(x)≤W(x)=min(Ic(x)),其中,W(x)定义为有雾图像Ic(x)最小通道值,c∈{r,g,b},r,g,b分别表示彩色图像的红色通道、绿色通道及蓝色通道。
2 本文算法
本文算法流程如图1所示,首先通过离散余弦变换获得无雾图像的低频分量,并通过低频分量和大气光幕之间的变化规律建立高斯模型,计算出初始大气光幕V1(x),然后设计出了一个优化函数自适应地获取最终的大气光幕V(x),同时采用低频分量估计出局部大气光,最后利用大气散射模型恢复出无雾图像。
图1 本文算法流程图
雾霾可以看成图像中的噪声且与其他噪声不同,有雾霾干扰的区域三通道像素值都较高,且相对没有较大变化,比较平滑。与无雾霾干扰的区域相比,这些区域具有能量高、亮度高、方差小的特点。雾霾图像的颜色均匀,过渡平滑且与清晰无雾的图像相比纹理细节相对模糊。因此,可以认为雾霾主要影响图像的低频分量,且主要存在于低频频段内,而对高频分量的影响很小。
根据瑞利散射,光的穿透能力与其波长成正比。在RGB空间中,蓝色通道对应的波长比红色通道和绿色通道要短,因此,蓝色通道更容易受到雾霾的影响。文献[4]提出采用离散余弦变换从蓝色通道提取低频分量,表示为
式中:f(·)和f-1(·)分别为离散余弦变换(DCT)和反离散余弦变换(IDCT)算子;F为通过离散余弦变换得到的离散余弦域;FL为经过加权之后的离散余弦域;s为离散余弦域上选择加权的方块大小;(x,y)为方块s中的像素索引;Q为引入的加权因子;L为获取到的低频分量。
如式(3)所示,首先是从输入有雾图像中获得蓝色通道,然后利用离散余弦变换获得输入图像蓝色通道Ib的离散余弦域。由于低频分量主要集中在离散余弦域的左上角[9],如果提取的数据更接近左上角,那么提取的低频分量越可靠,所以在离散余弦域左上角中选择一个大小为s的正方形区域作为提取低频分量的区域。为了提高可靠性,定义一个加权函数
Q(x,y)=1-(x+y)/(2·s)。
(4)
2.1 高斯自适应大气光幕
有雾图像的大气光幕随着场景深度的增加而增加,随着景深的增加,雾浓度也越来越高,雾浓度越高低频分量越大,所以低频分量与大气光幕正相关,即
V1(x)∝d,L(x)∝d→V1(x)∝L(x)
(5)
假设V1(x)=Ψ(L(x)),L(x)为输入图像的低频分量,Ψ(L(x))为一个递增函数,并且取值范围为[0,1]。
结合式(1),(2),(5),将大气散射模型写为
(6)
为了表示大气光幕与低频分量的关系,并基于对大量有雾图像的雾霾分布特征的观察,利用高斯函数拟合大气光幕与低频分量的关系建立函数Ψ(L(x)),即
Ψ(L(x))=V1(x)=1-e-(L(x))2/(2·σ2)
(7)
式中,L(x)表示有雾图像蓝色通道的低频分量,通过式(7)对低频分量进行调整以获得初始的大气光幕。将式(3)所得低频分量L代入式(7),获得如图2所示去雾程度σ2与大气光幕关系曲线。
图2 不同σ2值的大气光幕曲线
在图像处理领域中,高斯函数因为其具有形状可控的特点而应用广泛,且其左半部分具有很好的递增特性,所以将高斯函数左半部分限制在[0,1]之间用来拟合大气光幕和低频分量之间的关系。
图3所示为不同σ2值复原结果对比。
图3 不同σ2值复原结果对比
由图3可看出,σ2的取值决定了去雾程度,σ2的值越小,去雾效果越好,为了符合人类视觉感知在远景处保留轻微的雾且在对含有天空的有雾图像有良好的处理效果,经过大量实验,最终本文σ2的值设置为0.5。
2.2 大气光幕优化
为防止大气光幕的值估计过大,也为了提高算法的稳定性和性能表现,且超过有雾图像最小通道会造成颜色失真的现象,在近景处具有较小的大气光幕值更符合人类视觉感知[10],采用伽马校正进一步优化大气光幕,并将所得结果作为最终大气光幕,即
V(x)=γ·(V1(x))1-0.5·γ
(8)
式中:V(x)为最终大气光幕;γ∈[0,1],为雾浓度系数。
结合式(1)和式(7),(8),可以获得最终的图像复原式为
(9)
为了准确估计γ的值,受到文献[4]对于未知参数估计方法的启发,设计了一个基于平均饱和度先验[11]的优化函数,即
(10)
式中:Φ(·)为平均饱和度算子;θ为无雾清晰图像的平均饱和度,且取值为0.106;γ可以通过黄金分割算法获得,一旦确定γ的值,就可以通过式(8)获得最终的大气光幕。
为了保留图像的边缘信息,使用引导滤波器对大气光幕进一步平滑,引导图为模糊后的有雾图像最小通道图,即
V(x)=guide(V(x),W(x))
(11)
式中,guide(·)为引导滤波操作。复原结果对比见图4。
图4 复原结果对比
2.3 大气光估计
在式(9)中还有一个未知参数大气光值A(x),它也是一个大气散射模型中的重要参数,准确地估计大气光对最终的去雾结果有着重要影响。在前人的工作中,已经有许多优秀的估计大气光值算法。从大气散射模型推导可知,大气光为景深无穷远处的像素值,所以暗通道先验算法[1]选取暗通道前0.1%的亮度像素值对应的输入图像的最亮像素值作为大气光值,此算法对于在近景区域不含高亮和白色物体的图像可以获得较为准确的大气光值,但该算法对于包含大片白亮区域的图像,会导致大气光值估计过大使复原结果偏暗;线性变换算法[12]通过四叉树细分法估计大气光值,该算法虽然鲁棒性比暗通道先验算法强,但还是不能解决大气光选取在高亮或白色区域的问题。局部大气光[13]估计策略代替全球大气光,可以精确地估计大气光。由于有雾图像的低频分量与亮度分量高度相关,所以本文采用对低频分量进行形态学消亮和滤波操作,即
(12)
(13)
3 实验分析
为了评价所提算法的性能,本文从主观和客观评价两方面进行实验评估,然后将本文算法与其他最先进的算法进行了定性和定量的比较,以证明其有效性[14]。具体来说,本文把图像分为各种场景,并在每种场景中选取了几幅具有代表性的图像对算法进行了测试。将结果与常规算法中的暗通道先验算法、颜色衰减先验算法[15]、分段变换算法[3]和VROHI算法[4],深度学习中的SGID-PFF算法[5]和Aod-Net算法[7]进行了比较。计算机配置为Intel®CoreTMi5-7200U,CPU @2.50 GHz。
3.1 主观评价
图5是一组具有不同颜色复杂度图像。
图5 具有不同颜色复杂度的图像
由图5可看出:暗通道先验算法复原结果颜色自然,去雾彻底,但是由于两次最小值操作导致在边缘处透射率估计不准确,出现了光晕效应;颜色衰减先验算法和VROHI算法很大程度上消除了光晕效应,但都存在去雾不彻底的现象;分段变换算法则明显出现了偏色现象且由于大气光选取不准确导致复原结果整体偏亮,损失了许多细节信息;SGID-PFF算法出现了光晕且留有残雾;Aod-Net算法留有较多残雾且严重偏暗。
图6是一组景深变化剧烈的图像。
图6 景深变化剧烈的图像
由图6可以看出:暗通道先验算法去雾效果良好,但在景深突变处依然存在光晕现象;颜色衰减先验算法出现了去雾不彻底现象;分段变换算法和VROHI算法在远景处都出现颜色失真;SGID-PFF算法依然留有残雾,且在近景处颜色发黑;Aod-Net算法留有残雾较多。
图7是一组远景及带有天空的区域的图像。
图7 远景及带有天空的图像
由图7可看出:暗通道先验算法的结果在天空处存在明显失真;颜色衰减先验算法在天空处出现去雾不彻底现象;分段变换算法和VROHI算法在云层上都出现发黑现象;SGID-PFF算法在远景处还有残雾;Aod-Net算法[7]整体去雾效果较好,但在天空处还有少量雾残留。
图8为一组含有强光源和大片白色的图片。
图8 有强光源及大片白色的图像
由图8可以看出:暗通道先验算法由于大气光选取不准确导致整体偏暗失去了细节信息;颜色衰减先验算法出现了去雾不彻底现象;分段变换和VROHI算法则出现了颜色失真;SGID-PFF算法则在除白色区域外明显发黑;Aod-Net算法出现了大量残雾。
图9所示为不同算法对合成图像的去雾效果。
图9 不同算法对合成图像的去雾效果
由图9可以看出:在测试集合成图像复原中暗通道先验算法、颜色衰减先验算法、分段变换算法和VROHI算法同样出现了上述问题;SGID-PFF算法和Aod-Net算法去雾效果良好但还有残雾。
综合观察,利用本文算法得到的图像颜色明亮自然、去雾彻底且没有发生失真现象,进一步表明本文所提算法具有较高的有效性和可行性。
3.2 客观评价
因为仅仅对比主观评价具有片面性,为了建立一个完善且客观的评价体系,本文算法以客观评价指标对比的方法进行辅助评价,评价方法采用无参考图像质量评价方法[16],本文使用视觉对比度(VCM)(用RVCM表示)、通用质量指数(UQI)、信息熵E、图像可见度制衡标准(IVM)(用SIVM表示)和运行时间T作为恢复图像的客观评价指标[17]。其中:VCM反映了图像的主观视觉效果;UQI衡量恢复图像与原始图像之间结构相似性的指标;E反映了图像信息的丰富程度;IVM是可见边的评价指标;T反映了各算法的复杂度。对于合成有雾图像[18],选择峰值信噪比(PSNR)和结构相似性(SSIM)作为定量指标,并随机选取RESIDE测试集图像进行各算法对比。一般来说,运行时间越小代表算法复杂度越低,能够更好的应用;其余指标越大,表明恢复结果中包含的信息越丰富。各指标表达式为
RVCM=100Rv/Rt
(14)
(15)
(16)
式中:Rt为局部区域个数;Rv为局部区域中标准差比指定阈值大的区域;Pij表示索引为(i,j)的像素在图像中出现的概率;nr为可见边缘的数量;ntotal为所有边缘的数量;C(x)为平均对比度;X为可见边缘的图像区域[19-20]。各算法对真实有雾图像处理上的客观评价指标对比如图10所示,在合成有雾图像处理上的客观评价指标对比如表1所示。
表1 测试集图像客观评价
图10 真实雾图客观评价
综合主观评价与客观评价,各算法对于不同场景有雾图像的处理效果具有不同的优势,从表1中可以看出:本文算法的UQI,VCM和E这3个真实雾图评价指标均超越了其他算法;在合成雾霾图像复原实验中获得了较高的PSNR值以及SSIM值。以上的实验结果证明了本文算法获得了优异的恢复质量和鲁棒性。
4 结论
本文提出了一种利用低频分量自适应求取大气光幕进行图像去雾的算法。首先,利用高斯函数建立有雾图像低频分量和大气光幕的映射作为初步估计的大气光幕模型,然后,通过伽马校正优化大气光幕并结合局部大气光获得的大气光值,通过去雾模型得到复原结果。本文算法只需要确定一个未知常数即可实现图像去雾。实验结果表明,本文算法去雾彻底,能广泛应用于近景、远景等各类图像,没有出现失真和光晕现象,在客观评价指标上也能获得优于其他算法的结果,且有较低的时间复杂度。