庄秀玲 谭福奎 李 震 李良荣*
1(贵州大学大数据与信息工程学院 贵州 贵阳 550025) 2(兴义民族师范学院物理与电子科学系 贵州 兴义 562400)
室外场景图像的感知质量对于分析环境,以执行导航、目标检测和识别等自动化任务非常重要。然而有雾天气条件下极大地限制室外场景成像的可视性,因此图像去雾是目前计算机视觉领域的研究热点。
目前已有一些较为经典的单幅图像去雾算法。如,Tan[1]将晴天拍摄的室外图像分成多个小块,并计算每小块的最低亮度,由此产生的通道称为暗通道,其被用作先验信息[1-2]以重构无雾图像。He等[2]观察到,基于暗通道先验(Dark Channel Prior,DCP)方法产生的图像亮度较低,因此,提出先增加输入图像的亮度,然后估计大气光。He等[3]提出利用导向滤波精细化光路传播图,算法时间明显缩短。Tarel等[4]观察到雾对图像的两个主要影响是图像的对比度和亮度,由于本征亮度的指数特性降低了物体成像的可视性,导致图像对比度降低,因此,在去雾之前应先作白平衡处理,并对图像的物理性质应用了两个约束条件——假定大气光值总是正的且不能大于雾天图像的最小亮度。Fattal[5]提出了一种基于局部颜色线模型的去雾方法,这些颜色线用于估计场景的传输图,它仅在低噪声水平下使用可变伽马校正因子对彩色图像进行了高精度的恢复,但是图像中的天空区域会限制颜色线去雾算法的性能。Guo等[6]采用遗传算法进行图像去雾,构造目标函数确保图像去雾效果最佳参数值,对DCP中的敏感参数进行优化,由于缺乏合适的去雾效果评估作为适应度函数的客观标准,这使得去雾算法的自适应参数调整问题不容易解决。
本文研究基于DCP和优化自动色阶的图像去雾技术,它可以在不使用直方图均衡化等任何预处理技术的情况下产生更强的图像边缘。算法框图如图1所示,首先基于DCP估计大气光值,利用导向滤波精细化光路传播图;然后应用加权最小二乘法(Weighted Least Square,WLS)来保留图像边缘信息,以减小振铃效应[7],并结合自动色阶增强图像;最后引入对比度调整对图像中的细节进行可视化处理。
图1 去雾算法框图
根据雾的物理模型[8],雾图像退化的原因主要由两部分组成,一部分是大气衰减,如图2所示。另一部分是由于散射作用而到达成像装置的环境光,如图3所示。
图2 大气衰减模型
图3 大气光学模型
McCartney[9]提出模型表示图像中由于雾引起的退化机制,其雾成像物理模型方程为:
I(z)=J(z)t(z)+A(1-t(z))
(1)
式中:t(z)=e-kd(x,y)是透射率传递函数,用来描述不散射光直接进入成像设备的部分,k是大气散射系数,d(x,y)是场景深度;I(z)是输入有雾图像;J(z)表示恢复图像;A是大气光值。对于无雾晴朗天气,k=0,可以得到I=J;而在有雾天气情况下,k>0,则k不可忽略。J(z)t(z)是图2所示的过程,是直接衰减项,而A(1-t(z))是图3所示的过程。恢复无雾图像由式(2)完成。
(2)
可以看出,要从有雾图像I(z)中恢复无雾图像J(z),则需要估计A和t(z)。
根据文献[2]中的DCP可得:
(3)
式中:Ic(x,y)是图像RGB通道的亮度值,c是RGB的颜色通道;Idark是雾图像的暗通道;Ω(z)是以像素点(x,y)为中心的邻域。在对图像进行归一化后,0.1%最亮像素点所处位置中的最高亮度像素值即为大气光值。
DCP中的大气光值用于一个恒定的局部区域中。在退化雾图像的局部区域中使用最小值滤波,此最小值滤波在RGB通道上分别进行操作,则式(1)变形为:
(4)
再对式(4)两边进行RGB通道上的最小值滤波,可得:
(5)
式中:A是正数。其无雾图像暗通道的亮度值非常低,接近于零,即:
(6)
那么,得到估计透射率传递函数t(z)为:
(7)
由于存在空中透视现象[10],需要保留少量雾,以感知场景深度。因此,引入常量ω(0<ω≤1)表示雾强度信息因子,图像的视觉效果会更好。则式(7)修改为:
(8)
大多数文献将ω固定为0.95[3]。改变文献[3]算法中的ω值,得到四组除雾图像如图4所示。可以看出:ω减小,雾增加,除雾强度越弱,反之亦然;对于无天空区域图像(图4第一行),ω取值为0.9或0.95几乎没有区别;而带有天空区域图像(图4第二至第四行),ω=0.95的除雾效果过于强烈,天空看起来是有轮廓的,ω=0.9除雾较好且天空轮廓几乎消失,ω为0.8时,晕圈效果明显改善,薄雾层出现,ω=0.4时,天空区域明亮平滑,这时薄雾凸显。因此本文将ω设置为0.9。
图4 改变ω值的文献[3]方法结果
为了最小化去雾图像在景深边缘处存在白色晕圈的问题,采用导向滤波精细化粗透射率传播图t(z)。导向图I(z)和精细化后的传播图t1(z)成线性关系,定义为式(9),其应同时满足式(10)。
t1(z)=akI(z)+bk∀z∈wk
(9)
t1(z)=t(z)-n
(10)
式中:wk为一个窗口;ak和bk是在窗口中心为k时线性函数的常数系数;n表示噪声。对式(9)求导得到:▽t1=akI,说明I(z)有梯度的地方,t1(z)就有梯度,即它们有相同的边缘轮廓。由式(9)和式(10)得到最小化损失函数:
(11)
引入正则化参数ε,避免ak过大。对式(11)求解如下:
(12)
(13)
(14)
综合上述条件得到精细化透射率传播图为:
(15)
使用式(15)恢复的图像仍然缺少精细细节处理和颜色对比度矫正,可能使颜色过暗失去图像细节或者产生伪色。
为了更加清楚地观察到图像中的对象,后处理利用WLS滤波器边缘保留平滑算子做细节处理。边缘平滑被视为两个相互矛盾对象的折衷,给定输入图像g,寻找新的图像u。新的图像u要求尽可能接近g,同时除了g中的显著梯度外,应在任何地方都努力实现平滑。WLS边缘保留平滑滤波器表示为式(16)函数的最小值[12]。
(16)
式中:下标p表示像素的空间位置;第二项通过最小化u的偏导数实现输出图像平滑;平滑权重系数ax,p和ay,p取决于g;常数值λ控制ax,p和ay,p之间的均衡,增加λ的值,会使图像u逐渐变得平滑。
平滑权重系数ax,p(g)与ay,p(g)分别定义为:
(17)
式中:e是图像g亮度的对数;指数α(一般在1.2到2.0之间)决定g对梯度的灵敏度;ε0是非常小的常数(一般为0.000 1),可以避免在g中,除数为零。
应用矩阵表示法重写式(16)为:
(18)
式中:Ax和Ay是以ax,p和ay,p为对角元素的对角矩阵;矩阵Dx和Dy为前向差分矩阵。最小化式(18)中的向量u定义为线性系统的解:
(I+λLg)u=g
(19)
则由式(19)可得:
u=(I+λLg)-1g
(20)
为改善DCP算法造成的颜色昏暗,要进一步做图像增强处理。本文自动色阶[13]增强图像的思想是:首先做单通道图像直方图统计,求出0.5%首尾的阈值,记为min和max,建立线性映射关系如式(21)所示;然后将图像像素值按照式(21)进行线性映射至[0,255]区间,红绿蓝通道都做完上述的操作后,占比较多的灰度值的动态范围扩宽,得到一个对比度增强的彩色图像。但是,占比较多的灰度值如果靠近阈值边缘的地方,阈值灰度值面积增多,在进行合并的时候,会产生偏色现象。
(21)
对此,采用自动对比度进行改进,自动对比度是把RGB通道图像直方图首尾0.5%的阈值都进行求解,在六个阈值中求取最大值和最小值,RGB通道直方图都按照求得的最大值和最小值进行直方图首尾的裁切,再做线性映射。因为RGB通道直方图首尾阈值是一致的,在进行图像的彩色合并后,就不会产生伪色的现象。
实验环境:Intel Core i7 4 GHz,内存8 GB,MATLAB 2018b。
实验方法:选用两种类型的图像,分别应用本文算法与目前认为较好的四种算法对图像进行处理,然后对处理效果进行客观评价。
算法处理效果分析:不同的文献使用不同的参数评价标准,本文采用图像色彩丰富度[14]和对比度增益(Contrast Gain)[15]及算法耗时作为定量性能分析指标。
本文算法处理的逐步效果如图5所示,其中:(f)为最终获得的图像;其未经后处理的图像为(d),看起来色彩不突出,且颜色对比度单调;而从(b)和(c)可以看出,精细化透射率有助于恢复具有锐利边缘的高质量图像。总之,每个中间步骤都有其自身的重要性,有助于提高可视性。
图5 算法逐步结果图
图像色彩丰富度是反映色彩的鲜艳生动程度,CCI(Color Colorfulness Index)为其衡量指标。其值Ck计算为:
Ck=Sk+σk
(22)
式中:Sk为图像k的饱和度分量S的均值;σk为标准差。CCI数值越大,表示图像的颜色越丰富,除雾效果相对不错,反之则去雾效果较差。
对比度增益表示去雾输出和输入有雾图像之间的平均对比度差。如果CI,defog和CI,foggy分别是去雾图像和雾天输入图像的平均对比度,则对比度增益定义为:
Cgain=CI,defog-CI,foggy
(23)
尺寸为M×N的图像的平均对比度用数学公式可表示为:
(24)
式中:C(i,j)是位置(i,j)处像素的对比度。
(25)
m(i,j)和s(i,j)可以表达为:
(26)
(27)
晴天图像比受雾影响的图像有更高的对比度,因此对比度增益值越高,表明除雾算法的性能越好。为方便计算,像素q尽可能取较小的整数,本文采用q=2计算Cgain。
从图6(f)和(g)可以看出,精细化透射率后,光路传播图的轮廓更加清晰。文献[2]算法在处理场景中含有大片天空区域的图像时存在颜色失真,如图6(b)所示;文献[4]算法则出现光晕伪影,如图6(c)所示;文献[6]参数自适应选择遗传算法明显比文献[2]算法处理的视觉效果更优,但是要在天空区域颜色失真和整体视觉效果之间保持折中,导致去雾效果并不是很好,视觉上还是感觉有一层很薄的雾,如图6(e)所示。本文算法得到的图6(h)在色彩自然度、细节还原、噪声抑制等方面都优于文献[5]算法。
图6 本文算法与四种经典算法的定性比较
从图7可以看出,文献[2]算法处理结果由于过增强的原因导致图像整体偏暗,过深的颜色导致图像的细节被遮挡,如图7(b)所示。本文算法得到的图像自然、细节恢复效果也相对较好,如图7(f)所示。文献[4]算法处理结果在颜色上存在部分失真且有光晕伪影的情况,如图7(c)所示。本文算法输出图像与文献[5]相比,得到的图像在颜色上与原图像较相近,整体效果更加自然。文献[6]算法较文献[2]算法处理的图像更明亮平滑,但是色彩不够鲜明,色彩对比度与本文算法相比稍差。
图7 本文算法与四种经典算法的定性比较
对图6、图7中的图像进行定量比较CCI和Cgain,结果如表1所示,本文算法较其他算法有更高的CCI和Cgain值,图像的色彩质量更好,对比度更鲜明。说明本文单图像去雾算法产生了良好的效果,这与图6、图7的视觉效果是对应的,验证了采用CCI和对比度增益分析去雾效果是合适的。
表1 不同算法去雾图像客观评价比较
针对灰度图像和彩色图像,所采用的基于DCP和优化自动色阶的单图像去雾算法是新颖有效的。该算法后处理不仅仅是简单的直方图拉伸,只增加了图像的对比度,而是使用WLS滤波器来增强捕获图像中的细节,使用自动色阶增强图像,引入灰度值线性映射。因此该算法不需要预处理,就保证了颜色质量。导向滤波过程中还采用了具有固定系数的拉普拉斯算子进行边缘轮廓检测,不需要手动调整干预。仿真结果表明,输出的无雾图像具有很好的颜色对比度,保留了RGB图像的颜色质量,利用该方法去除了其他方法去雾图像中出现的光晕效应和薄雾层,边缘和细节清晰。此外,CCI、Cgain值表明,与几种经典算法相比,本文算法重建的图像具有更好的视觉感知质量。雾去除算法易于针对单个图像而非视频实现,在今后的研究中,可以尝试使用运动估计扩展到视频中去实现。