马 啸,邵利民,徐冠雷
(海军大连舰艇学院气象教研室,辽宁大连116018)
随着户外视觉系统广泛应用于道路交通、安防监控、航海、航空等领域,保证户外视觉系统的高可靠工作显得尤为重要。然而,在雾霾等恶劣天气条件下,由于悬浮在大气中的水滴、气溶胶等颗粒对光线的散射和吸收作用,导致户外视觉系统采集到的图像对比度降低、饱和度下降,图像中的目标景物变得模糊不清,直接影响户外视觉系统效用的发挥[1-3]。因此,研究雾霾天气图像的清晰化算法,对提高户外视觉系统的可靠性具有重要意义。
目前雾霾天气图像的清晰化算法主要分为两大类。一类是基于图像增强的方法,通过提高雾天图像的对比度以突出细节,改善图像视觉效果[4]。这类方法的优势在于可以应用已有的成熟图像处理算法,如直方图均衡化、对数变换、锐化、小波变换等改善图像质量[5],但是可能丢失部分图像信息,造成图像失真。另一类是基于大气散射模型的图像复原方法,通过建立雾天图像降质的物理模型,反演出降质前的图像[2]。这类方法一般不会造成图像信息损失,图像处理效果较为自然[4]。目前该类方法主要包括基于景物深度信息的算法、基于大气光偏振特性的算法和基于先验信息的算法[2]。基于景物深度信息的算法需要借助雷达装置获取深度信息,代价较高;基于大气光偏振特性的算法不能实现单幅图像的去雾处理且只适用于薄雾天气[2,4];基于先验信息的算法可以实现单幅图像去雾且获取信息的代价较低,近年来取得较大突破:Tan等[6,7]基于统计先验信息,利用最大化图像局部对比度达到去雾的目的,去雾后图像的对比度大大提高,但复原的图像颜色常出现过饱和现象;郭璠等[7,8]基于数理统计先验信息估计出场景辐照度,由此推导出传播图像,复原无雾图像。该方法在薄雾条件下能获得较好的清晰化效果,但由于该方法需要足够的颜色信息,因此无法处理浓雾天气下的图像及灰度图像;He等[9,10]提出了一种传统的基于暗原色先验的去雾算法,按雾气浓度局部修复图像各部分颜色,去雾效果自然,图像的颜色逼真、清晰度高,但该方法由于在细化透射率时引入了软抠图算法,需要使用预处理共轭梯度算法求解大型稀疏矩阵,计算代价大,处理时间长。
为达到运算时间和图像清晰度间的平衡,本文改进传统基于暗原色先验的去雾算法,增强算法的自适应性和运算效率;采用改进的去雾算法实现图像的清晰化;利用自动色阶算法处理去雾后的图像,使图像颜色明暗分布合理,提高图像清晰化后的视觉效果。
暗原色先验理论是He等[9]经过大量的观测实验得出的一个图像统计规律:在户外无雾图像的绝大多数非天空区域内,某些像素总会有至少一个颜色通道具有很低的接近于0的强度值,称之为暗原色。其表示如公式(1)所示:
其中,Jc(y)为户外无雾图像J(x)中的一个颜色通道,Ω(x)为中心在 x处的一个局部区域,Jdark(x)表示图像J(x)的暗原色。
在计算机视觉和计算机图形学中,常用于描述有雾图像形成过程的模型如公式(2)所示[3,11,12]:
其中,I(x)为观测到的有雾图像,J(x)为无雾图像,t(x)为透射率,A为大气光值。要实现图像去雾,就要估计出参数A和t(x),从而根据有雾图像I(x)复原得到无雾图像J(x)。
文献[9]将公式(2)两边归一化后做最小值运算,并假设在每一个局部区域Ω(x)内透射率t(x)为常数珓t(x),变形后如公式(3)所示:
其中,Jc(y)为户外无雾图像J(x)中的一个颜色通道,Ac为图像中c∈{R,G,B}颜色通道对应的大气光值。
由于远处雾的存在是感知景深的重要因素,为保证复原后得到的无雾图像真实自然,在公式(4)中加入参数ω,从而保留一定程度的雾,如公式(5)所示[9]。由此,可以根据Idark(x)和A估计出透射率t(x)。
对大气光值A的估计,文献[9]选取暗原色Idark(x)中亮度为前0.1%的像素点,将有雾图像I(x)中对应的这些像素点上亮度最大点的像素值作为大气光A的估计值[9]。
得到参数A和t(x)后,就可以根据公式(2)复原得到去雾后的图像J(x),如公式(6)所示:
其中,t=max(t(x),t0),t0=0.1是为避免去雾后图像J(x)整体向白场过渡设置的透射率的下限值。
传统的基于暗原色先验的去雾算法流程如图1所示。
考虑到传统的基于暗原色先验的去雾算法得到的去雾效果自然,图像的颜色逼真且清晰度高,本文仍基于暗原色先验理论对图像进行去雾。但是,传统基于暗原色先验的去雾算法采用软抠图的方法细化透射率,引入了大型稀疏矩阵的计算,导致算法运行时间过长。
导向滤波作为一种图像过滤技术,不仅可以保持图像边缘特性,增强图像细节,其时间复杂度也较低,从而节省了运算时间[13]。为了在去雾效果和运算时间之间取得平衡,本文采用导向滤波的算法代替软抠图算法对透射率进行细化。
此外,传统基于暗原色先验的去雾算法中,求有雾图像暗原色Idark(x)时局部区域Ω(x)的大小是固定的,但实际应用中,Ω(x)的选取直接影响透射率的估计。采用传统基于暗原色先验的去雾算法,分别选取Ω(x)=5×5和Ω(x)=25×25对图2a中原始图像进行去雾处理,得到的透射率图分别如图2b和图2c所示。从图中明显看出,Ω(x)取值较小时透射率t(x)的估计图更加细化,但由于平滑过少,局部错误明显增多,也会影响大气光值A的估计。Ω(x)取值较大时透射率t(x)的估计图局部错误减少但较为粗糙[14,15]。
为增强算法的自适应性,本文将Ω(x)设置为随图像大小变化的值,如公式(7)所示,其中w为图像宽度,h为图像长度,0.03为实验获得的统计值。
另外,传统基于暗原色先验的去雾算法将满足条件的像素中某一亮度值最大点的像素作为大气光A的估计值,若选取的亮度最大值点的像素接近255,即大气光估计值接近255,则会造成去雾后的图像偏色并出现大量色斑。图3b为用传统基于暗原色先验的去雾算法对图3a中原始图像去雾后得到的结果,此时其大气光估计值A为246,接近255,从图3b中可以明显看出图像中出现大量色斑。
为避免大气光估计值接近255,本文通过大量实验统计选取240作为大气光的阈值,当大气光估计值A大于240时,将大气光估计值设为240;当大气光估计值A小于240时,则估计值不变。大气光估计值的选取如公式(8)所示:
最后,由于基于暗原色先验对图像去雾后,图像普遍偏暗,本文采用自动色阶算法对去雾后图像的颜色明暗分布进行调整,提高去雾后图像的视觉效果。自动色阶的基本思想就是去掉图像中像素值最高和最低的比例,将图像剩余像素值进行线性映射,按比例重新分配,从而达到增强图像对比度的效果。如图4所示,图4a为原始图像,图4b为未采用自动色阶时基于暗原色先验算法得到的去雾图像,图4c为对图4b中的去雾图像采用自动色阶算法增强后的图像。从图4中可以看出,采用自动色阶算法后图像的对比度明显增强,视觉效果更好。
根据3.1节中的算法思路,本文提出的雾霾天气图像清晰化算法首先根据变化的局部区域Ω(x)求原始有雾图像I(x)的暗原色Idark(x);接着从Idark(x)中选取亮度为前0.1%的像素点,将I(x)中对应像素中亮度最大值点的像素值作为大气光值A的初始估计值,若初始估计值A大于大气光阈值240,则将大气光估计值设为240;根据Idark(x)和A估计初始透射率t(x),采用导向滤波
为验证本文雾霾天气图像清晰化算法的有效性,在 Intel(R)Core(TM)i5-6300HQ CPU@算法细化透射率;由I(x)和细化后的t(x)复原无雾图像J(x);最后采用自动色阶算法调整J(x)的颜色明暗分布,输出视觉效果更好的图像。算法流程如图5所示。2.30 GHz,8 GB内存的机器上采用Matlab2014a开发平台实现本文算法。实验图像集来源于本文采集的雾霾天气图像及网络公开数据库中部分雾霾天气图像。
实验分别采用本文算法及传统的基于暗原色先验的去雾算法对图像集中同一雾霾天气图像进行去雾处理。去雾效果对比如图6所示,图6a为原始图像,图6b为传统基于暗原色先验的去雾算法输出图像,图6c为本文算法输出图像。
采用本文算法得到的图6a中原始图像对应的初始预估透射率图和导向滤波细化后的透射率图分别如图7a和图7b所示。
为比较导向滤波算法和软抠图算法对图像的细化效果,本文对文献[9]中部分图像进行清晰化处理,并与其采用软抠图算法得到的去雾图像进行对比,实验结果如图8~图10所示,其中图8a、图9a和图10a为原始图像,图8b、图9b和图10b为文献[9]中采用软抠图细化后的输出结果,图8c、图9c和图10c为本文采用导向滤波细化后的输出结果。
从图6的对比结果可以看出,采用传统的基于暗原色先验的去雾算法输出的图像存在色彩失真和光晕(Halo)效应,且在处理天空部分时过渡区域明显,出现图像天空部分向白场过渡的现象,影响了远处景物的复原。如图6b所示,天空部分过渡区域白场的存在影响了远处山体的复原。而采用本文雾霾天气图像清晰化算法得到的输出结果明显比传统基于暗原色先验的去雾算法的效果好,输出图像具有较高的色彩保真度,清晰度和对比度均较高,对于远处景物复原的效果也较好,整体视觉效果接近自然。
从图7中初始预估透射率图和导向滤波细化后的透射率图比较结果中可以看出,初始预估透射率图较为粗糙,块效应明显,图像轮廓模糊不清,包含图像细节少,层次感不明显。经导向滤波细化后的透射率图则较为平滑,轮廓清晰,较好地反映了图像的细节信息。
对图8~图10中的比较结果进行主观分析可以看出,本文采用导向滤波算法得到的输出结果与文献[9]中采用软抠图算法得到的输出结果相比,在图像清晰度和对比度方面相差不大,但由于本文算法最后又采用自动色阶算法平衡了图像颜色明暗的分布,视觉效果比文献[9]中图像输出结果更好。
从图像对比度和图像去雾程度两方面对图像去雾效果进行客观评价[16-20]。
图像对比度评价指标为可见边缘强度T1,如公式(9)所示,其中Iv为图像可见边缘像素点总数,P为图像像素总数,可见边缘像素点总数越多,T1越大,图像对比度越好[16,17]。
图像去雾程度评价指标T2如公式(10)所示,其中Id为去雾后图像暗原色图中亮度值小于25的像素点总数,P为图像像素总数。由于无雾图像的暗原色图亮度趋近于0,因此暗原色图中亮度小于规定阈值的像素数目Id反映了图像去雾的程度,Id越大,T2值越大,图像去雾程度越强[16]。
根据以上公式分别计算图8~图10中原始图像、文献[9]中算法输出图像和本文算法输出图像的客观评价指标,如表1所示。
Table 1 Objective evaluation indexes of image de-hazing effect表1图像去雾效果客观评价指标
从表1中可以看出,本文算法与文献[9]中算法的输出结果在图像对比度和图像去雾程度上的评价指标相差不大,但与原始图像的评价指标相比有大幅提升,从而验证了本文算法提高图像清晰度和对比度的有效性。
为进一步比较本文算法与文献[9]中算法的运行效率,从图像数据库中随机选取100张雾天图像,分别利用本文算法和文献[9]中算法对其进行去雾处理,比较两种算法的平均运行时间。本文算法的平均运行时间如图11所示,文献[9]中算法的平均运行时间如图12所示。
从图11和图12中可以看出,本文算法的平均运行总时间为11.405 s,文献[9]中算法的平均运行总时间为2 429.188 s,本文算法运行时间远小于文献[9]中算法的运行时间,效率较高。从算法时间复杂度分析,对一幅像素个数为N的图像,导向滤波算法的时间复杂度为O(N),与滤波窗口的大小无关,因此本文算法运行时间短。而软抠图算法由于需要使用预处理共轭梯度算法求解大型稀疏矩阵,引入了大量矩阵运算,导致文献[9]中算法运行时间长。
由于现有去雾算法中基于暗原色先验的去雾算法稳定且去雾效果好,但算法运行时间较长,本文在传统基于暗原色先验去雾算法的基础上,对传统算法中求图像暗原色时局部区域大小的选取及大气光值的估计进行改进,用导向滤波算法代替软抠图算法对透射率进行细化,最后采用自动色阶算法提升细化后输出图像的视觉效果。
经实验验证,本文提出的雾霾图像清晰化算法保留了传统基于暗原色先验去雾算法稳定、去雾效果好的优点,处理后的图像清晰度、对比度好,色彩保真度和对远景的复原能力均优于传统基于暗原色先验的去雾算法,视觉效果更好,且本文算法运行效率高,运行时间与传统基于暗原色先验的去雾算法相比大幅减少,实现了运算时间与图像清晰度之间的平衡。
下一步研究工作将从进一步提高去雾图像天空部分清晰度及去雾算法与目标识别技术结合应用两方面开展[16-20]。