1. 引言
在雾、霾等恶劣天气条件下,由于空气中浑浊介质对大气光的吸收、反射等作用,获取到的图像出现雾化现象,对视觉应用系统产生严重影响。针对图像去雾问题,许多研究者提出了多种解决方法。
目前,图像去雾方法主要分为基于图像增强和基于物理恢复两类。基于图像增强方法没有考虑雾图降质的根本原因,只增强图像对比度。这类方法可以利用已经成熟的图像处理算法,如直方图均衡化、Retinex和小波变换等方法。张久鹏等 [1] 对反转后的图像进行改进后的限制对比度自适应直方图均衡化,增强亮度,然后进行翻转得到无雾图像。张赛楠等人 [2] 首先利用梯度算子增强雾天降质图像的各个颜色分量的边缘信息,然后,在单尺度Retinex的基础上提出了一种符合人眼视觉特性的中心自适应调节的拟合函数,增强图像各个颜色分量。Wang等人 [3] 利用小波变换方法分解图像,然后分别对高频和低频信息进行处理,得到重建后的无雾图像。基于增强方法提高了图像对比度,然而,得到的图像会出现信息丢失、过饱和现象。基于物理模型方法通过研究大气悬浮颗粒对光的散射作用,建立大气散射模型,根据物理模型,反演复原出降质前图像。基于物理模型去雾方法分为两类,一类是基于多幅图像去雾,一类是基于单幅图像去雾。由于物理模型含有大气光和透射率两个物理量,求解问题实际上是欠定问题。因此,一些研究者利用多幅图像获得深度信息,根据深度信息进而恢复出无雾图像。文献 [4] [5] [6] 通过获取不同天气条件下同一场景的多幅图像,得到更多约束信息,最终恢复场景图像。文献 [7] [8] [9] 利用不同偏振角度的两幅或多幅图像获得深度信息,进而去除雾霾效应。这些方法能够去除雾霾,但是很难实时获取到多幅图像。
近年来,单幅图像去雾引起研究者关注,并且取得了很大进展。基于单幅图像去雾主要依赖于假设或先验知识。Fattal [10] 通过假定透射率和表面投影在局部不相关来估计透射率,并使用大气散射模型进行反演,复原无雾图像。这种方法能恢复较好的视觉效果,然而方法是基于彩色图像统计特性,因而该方法无法应用于灰度图像,而且这个统计特性在浓雾区域会失效。Meng等人 [11] 通过结合基于加权的上下文正则化,将透射函数的边界约束建模成一个最优化问题,估计场景透射率。此方法需要手动选取大气光位置,应用受到限制。He等 [12] 提出暗原色先验,利用此先验知识求解大气光和透射率,进一步利用软抠图算法优化透射率。最后达到去雾目的。这种方法去雾效果好,处理后图像颜色自然,但在抠图优化过程中,时间复杂度较高,实时去雾不理想。基于暗原色先验,一些改进的去雾方法被提出。Fang等 [13] 根据像素在RGB空间的距离来细化粗略透射率分布,替代复杂度较高的软抠图算法,并在估计粗略透射率以及去雾图像之后,利用变分法求解一个最小化能量函数,实现去雾图像细化以及去噪。Gibson 等 [14] 利用暗原色先验知识,用中值代替最小值来估计透射率,并依此来恢复无雾图像。这些改进方法能够达到去雾目的,解决了时间复杂度高的问题,但是得到的去雾图像在边缘处出现光晕现象,对于亮度不均匀图像会导致去雾后图像局部偏暗或亮度过高。
有雾图像中,雾的分布并不总是均匀,而且图像亮度也不均匀,通过估计全局大气光值并对图像进行整体去雾,复原得到的图像在雾浓度过渡区域会出现光晕现象,局部区域会出现偏暗或过亮现象。为了消除光晕现象,得到合适亮度的无雾图像,本文提出了一种基于雾浓度的去雾方法。方法流程图如图1。首先,将有雾图像分割成3 × 3图像块,估计每个小块的雾浓度。将相似雾浓度的小块融合,得到不同雾浓度的图像区域。然后,分别估计每个区域局部大气光值,并计算透射率。最后,根据去雾模型恢复出无雾图像。实验结果表明,此方法避免了整体去雾造成的颜色失真和不合适亮度问题,同时复原更多的细节信息。

Figure 1. Flowchart of the proposed method
图1. 方法流程图
2. 暗原色先验去雾算法
2.1. 雾天图像退化模型
McCartney提出了一个物理模型,用于表述大气散射中的成像过程,基于此模型推导出的雾天图像降质模型如下。
(1)
其中,
为观察到的输入图像,即有雾图像,
是清晰无雾图像,
为透射率,
是大气光值。根据式(1),复原无雾图像的目标即根据
,
和
求解
。
2.2. 暗原色先验知识
He等通过对大量无雾图像统计特征的观察,发现在无雾图像的非天空区域里,若把图像分成多个子块,则每个子块中都会有某些像素点的一个颜色通道的亮度接近零。
(2)
其中,
表示图像
的一个颜色通道,
表示
的邻域,
为图像的暗原色图。
2.3. 图像复原
大气光值
表示的是无穷远处大气未经散射的值。给定有雾图像,计算其暗原色图,并且按照亮度的大小选取暗原色图中前0.1%的像素。然后在雾图中选取与这些暗像素对应的最大像素值作为大气光值
。
透射率反映了场景照度未经散射到达成像设备的比例。在大气光值已知的情况下,对等式(1)处理得
(3)
对颜色通道求最小,得
(4)
将式(2)代入式(4)
(5)
在实际的无雾场景中,在景深较远的场景中仍然会存在雾气,所以引入参数
来调节去雾程度。
已知有雾图像、大气光值和透射率,根据式(1),可复原图像。
(6)
3. 基于雾浓度的图像复原
有雾图像中,不同区域的雾浓度有所差异,例如,图像近景区域的雾浓度低于远景区域的雾浓度。对图像整体去雾,可能会导致近景处过增强,远景处去雾不彻底。图像亮度不均匀,根据亮度信息估计全局大气光值,它的值可能适合远景区域,对近景区域不适合,导致恢复的图像在近景处亮度过暗,若适当降低全局大气光值,近景区域亮度得到改善,但是远景区域可能会出现亮度过高现象。基于此,本文提出了一种基于雾浓度的去雾方法。将图像划分为不同雾浓度区域,对不同雾浓度区域分别进行处理。为了解决全局大气光值带来的问题,我们估计局部大气光代替全局大气光,并根据局部大气光值估计透射率。进而,根据图像降质模型复原无雾图像。
3.1. 区域划分
对雾图进行区域划分,需要依赖有雾图像的特征。有雾天气下,由于附加的大气光,获取到的图像往往会比自然无雾图像的亮度要高。一幅有雾图像中,在不同区域,由于雾的浓度不同,亮度也不统一。自然无雾图像中,暗原色趋于零。暗原色值通过暗通道值计算。有雾条件下,因为雾的干扰使得暗通道的取值增大。因此,本文利用图像亮度信息和暗通道信息将有雾图像划分成不同雾浓度区域。雾分为三个等级 [15] ,薄雾、雾和浓雾。本文将根据有雾图像的特征信息,即图像亮度和暗通道值,将有雾图像划分成薄雾区域、雾区域和浓雾区域。
首先,将有雾图像分割成相同尺寸大小的图像块。图像块太大会包含不同浓度区域,对区域划分结果产生影响。图像块太小,会造成特征信息的重复计算。本文取图像块大小为3 × 3。然后,计算每个图像块的平均亮度和暗通道值。将图像转换到HSL空间,利用平均亮度计算公式 [16] 计算图像块的平均亮度。公式如下。
(7)
其中,
是每个素的亮度值,
是图像块中像素的个数,
,用于防止对数计算结果趋于负无穷。根据平均亮度计算公式,可以得到图像局部平均亮度图。计算有雾图像的暗通道,即对雾图中每个像素求它RGB三个通道中最小的值,得到一张二维图像。为了与平均亮度图对应,将二维图像分割成3 × 3小块,计算每一图像块的最小值,并将最小值赋给该图像块的所有像素,得到图像的暗通道图。图2是对不同有雾图像的平均亮度和暗通道值的统计。其中图2(a)像是图像平均亮度统计图,图2(b)是对应的图像暗通道值统计图。
(a)
(b)
Figure 2. Average luminance and dark channel statistics
图2. 平均亮度值和暗通道值统计
首先,对得到的图像平均亮度和暗通道值做中值滤波。滤波效果如图3所示。

Figure 3. Dark channel statistics and filtered dark channel statistics
图3. 暗通道值统计图及滤波后统计图
其次,采用差分法分别估计滤波后平均亮度和暗通道值变化较大的一组数据。
最后,根据数据之间的差向量,得到关于平均亮度信息和暗通道信息的两组阈值。为使阈值更加鲁棒,将这两组阈值中相对应阈值相加求平均值作为最优阈值。
根据估计的阈值,将图像自适应划分成不同雾浓度区域,对于不同雾浓度区域,将分别估计其大气光值和透射率。
3.2. 局部大气光和透射率估计
已有的大部分单幅图像去雾方法主要是由受雾气影响最亮的像素求得大气光值,如Tan采用图像中最大的像素值作为A。但是,图像中像素值最大的像素点有可能是图像中亮度很高的其他目标,因此,对A的估计往往不准确。He等在暗原色中按照亮度的大小选取前0.1%的像素,然后在以上像素中,将对应有雾图像中具有最高亮度点的值作为大气光值。这种方法估计的大气光值可能不是整幅图像中最亮的值,从而避免了Tan方法中出现的问题。
考虑到雾图中不同区域雾浓度不一致,而且大气光值在局部区域也不相同,本文提出利用局部大气光代替全局大气光。经过区域划分后,不同雾浓度的区域被得到。对于每一个区域,估计局部大气光值。 首先估计有雾图像的暗原色图。然后,在各区域中,按照暗原色亮度的大小选取前0.1%的像素。最后,在所选像素中,取对应有雾图像该区域中具有最高亮度值的像素值作为大气光值。
(8)
其中,
。
对于不同雾浓度区域,在局部大气光值已知的条件下,根据式(5)对透射率进行估计,得
(9)
其中,Ai是局部大气光值。
3.3. 图像复原
对已知有雾图像I,获取大气光值Ai和透射率ti后,根据式(6)可复原得到无雾图像J。
(10)
当透射率值很小或为0时,会使得图像整体偏白或产生噪声,因此一般设置一个阈值
,当
小于
时,令
,实验中
取为0.1。去雾效果如图4所示,由图4(b)可知本文方法能有效去雾,且去雾效果比较理想。
(a) Hazy image
(b) Dehazed image
Figure 4. Hazy image and dehazed image
图4. 有雾图像及去雾后图像
4. 实验结果
本文采用分区域的方法进行去雾,将有雾图像划分成浓雾、雾以及薄雾区域,然后针对不同区域估计局部大气光和透射率,最后复原得到无雾图像。为了更加直观的验证和分析本文方法与其他方法的优劣,我们将本文方法与Fattal、Meng、He和Gibson方法在主客观上进行了对比。实验图像来自于其他去雾文献中使用到的图像。
4.1. 主观评价
图5~9是利用不同去雾方法得到的视觉效果对比图。由图5可见,Fattal方法恢复的无雾图像在局部出现过饱和现象。Meng方法处理后图像的墙面和窗户变成了绿色,造成了颜色失真。He方法处理得图像在边缘处有光晕,局部区域仍残留有雾。Gibson恢复的图像局部亮度过高,出现细节丢失现象。相比其他方法,本文方法得到的无雾图像色彩真实,且没有细节丢失。
由图6可见,Fattal方法处理后的图像出现严重的细节丢失现象,而且图像局部偏暗。Meng方法得到的无雾图像整体亮度过高,且存在颜色失真现象。在He方法去雾结果中,路面车的位置出现了不明痕迹,严重影响了图像的质量。Gibson方法能够恢复清晰自然的无雾图像,但是会出现细节信息丢失,而本文方法能够恢复丰富的细节信息,而且色彩真实自然。
由图7可知,Fattal方法恢复出的无雾图像效果不佳,Meng和Gibson方法处理后的图像在天空区域颜色失真,并且Gibson结果图像有信息丢失。He方法能够得到比较自然的无雾图像,但在山的边缘出产生光晕现象。本文方法能恢复出比较自然的图像,而且不会造成颜色失真和信息丢失。
图8中,Fattal,Meng,He以及Gibson方法都出现了不同程度的色彩失真现象,与这些方法相比,
本文方法恢复的图像具有更佳的视觉效果。
图9中,Fattal和Meng方法处理后的图像在天空区域存在不同程度色彩失真。比较而言,He,Gibson和本文方法恢复的无雾图像视觉效果比较清晰自然。
4.2. 客观评价
由于雾天图像的边缘和细节信息丢失严重,同时图像的清晰度和对比度也严重受损,而雾天图像复原主要目的就是恢复图像的边缘和细节信息,提高图像的清晰度和对比度。因此,本文利用可见梯度法 [17] 来对去雾结果图像进行客观评价。表1是不同方法所得无雾图像的客观数据。e是新增可见边比,r是图像恢复前后可见边梯度之比,σ是饱和黑色或白色像素点的百分比。e、r值越大,σ越小表示恢复的图像越清晰自然。权衡e、r和σ,从表1可以看出,本文方法恢复的图像质量更高。

Table 1. Objective data comparison of different methods
表1. 不同方法所得无雾图像客观数据对比
5. 结论
为了消除光晕和颜色失真现象,得到合适亮度的无雾图像,本文提出了一种基于雾浓度的去雾方法。考虑到雾浓度分布不均匀,首先将雾图分割成图像小块,将相同雾浓度的图像块进行融合,得到不同雾浓度区域。然后分别对不同雾浓度区域估计局部大气光值,进一步利用局部大气光值估计透射率。最后,基于雾图降质模型,利用局部大气光值和透射率恢复无雾图像。实验结果表明,本文算法简单可行,能够恢复高质量的清晰图像。
基金项目
本文受国家自然科学基金(61772309,61672018),山东省自然基金(NO. 2017GGX10109,NO. 2016GSF120013,NO. ZR2011FM025,NO. 2018GGX101013),山东省高等学校优势学科人才团队培育计划(无编号),国家自然科学基金——浙江两化融合联合基金重点项目NO. U1609218资助。