2. 厦门大学 海洋与地球学院, 厦门 361102
2. College of Ocean and Earth Sciences, Xiamen University, Xiamen 361102, China
雾霾天气条件下, 户外机器影像采集设备所捕捉的画面容易受到大气中微小悬浮颗粒和水滴的干扰, 造成图像信息严重降质, 具体表现为对比度下降、颜色退化. 降质图像不利于安防监控、目标检测与识别等方面的应用, 甚至造成机器设备无法正常工作. 为了消除退化图像带来的不良影响, 提高机器设备的工作效率, 有必要研究高效的图像去雾算法.
当前主流的去雾方法可以分为两类: 基于模型的复原方法和基于神经网络的学习方法. 复原方法建立物理模型, 分析雾天成像及退化机理, 通过求解模型中的未知参量实现图像去雾. He等人[1]首次发现了暗通道先验统计规律, 并用于估计介质透射率, 由于软抠图细化步骤的运算复杂且耗时严重, 采用引导滤波器[2]进行改进, 取得良好的去雾效果. Tarel等人[3]首先将彩色图像的最小颜色分量作为大气光幕的初始估计, 使用中值滤波器对其进行细化修复, 再依次通过大气散射模型和色调映射恢复无雾图像. Kratz等人[4]和Nishino等人[5]结合雾天场景的结构特征与统计特性估算介质透射率, 研究基于贝叶斯理论的图像复原算法. Meng等人[6]提出了一种正则化方法, 结合传输函数的边界约束, 为估计场景透射率的优化问题建模, 以此恢复高质量的无雾图像. Fattal[7]认为RGB颜色空间中, 图像局部像素通常呈现一维分布特征, 利用这一规律估计场景透射率, 实现有效的图像去雾. 王平等人[8]考虑了大气亮度和介质透射率之间的关联性, 将其作为两个相互影响的整体, 利用迭代算法进行优化, 保持复原图像的真实色彩. 杨红等人[9]改进了暗通道先验方法, 将天空区域分割出来, 引入具有保边缘去噪的双边滤波器, 提高了复原图像的对比度, 改善了颜色失真现象. Gayathri等人[10]在多尺度Retinex的基础上, 结合暗通道和引导滤波器实现了雾霾图像的增强, 该方法消除了图像中的雾气影响并保留了有用的细节信息. 李红云等人[11]构造基于Kirsh算子的差分滤波器, 优化介质透射率, 实现多曝光融合的图像去雾. 吴正平等人[12]在引导滤波器的基础上, 采用自适应gamma校正函数估计介质透射率, 再利用高斯相对性优化复原图像.
基于学习的方法通过训练样本使得去雾过程中算法具有学习记忆能力. Cai等人[13]提出一种可深度训练的端到端系统, 用于介质透射率的有效估计, 再通过散射模型恢复图像. Ren等人[14]对雾天图像与透射率之间的映射关系进行深度网络学习, 提出基于多尺度卷积神经网络的去雾算法. Engin等人[15]提出一种循环网络去雾算法, 不依赖于大气散射模型的参数估算, 通过周期一致性和感知损失来增强训练, 提高纹理信息的复原. 肖进胜等人[16]结合深度学习与卷积神经网络进行雾气层的估计, 将雾天图像减去雾气层从而恢复结果. 王高峰等人[17]在Cai等人[13]的基础上改进了端到端训练系统, 采用深度可分离卷积层和膨胀卷积的方式, 有效实现图像去雾. Fahim等人[18]研究深度去雾网络, 采用4个模块实现非线性特征提取, 并引入边缘损耗函数, 获得视觉良好的去雾效果, 且无需后处理操作. 杨燕等人[19]提出阶梯型网络与注意力交融的复原方法, 提高了深度学习的训练速度. 陈平[20]结合明暗通道先验和循环GAN网络, 改进感知损失函数, 有效缩短了训练时长.
上述复原方法在多种不同场景下普遍存在适应性不足的局限, 例如远近景交汇处容易产生光晕效应、边缘残雾现象; 白色目标对大气亮度的提取造成干扰而出现整体偏色; 大面积天空区域的过度处理而导致颜色失真与过饱和现象. 而学习方法需要训练的样本数较多, 效率较低, 且处理自然拍摄的图像时, 效果并不出众. 为了提高场景适应能力, 本文在大气散射模型的基础上提出一种新的复原方法. 通过大量雾天图像的研究实验, 总结了远景、近景、浓雾和薄雾等多场合下的去雾关键技术和解决方法: 一是提取深度信息复杂的大气光幕, 采用平滑效果出众的滤波器, 获得与雾气分布特性相一致的光幕值, 克服场景深度跳变处的光晕效应和对比度不足的局限; 二是解决白色物体对大气亮度的估计影响, 结合边缘检测算子与四叉树空间索引, 可有效排除非天空、非浓雾区域的白色物体干扰, 得到合理准确的大气亮度值, 避免复原结果偏暗以及整体偏色现象的产生; 三是针对大面积天空亮度不足和颜色失真问题, 定义像素级还原控制因子, 结合大气散射模型实现局部区域的有效保护.
1 大气散射模型在机器视觉和图像处理领域中, 基于模型的图像去雾算法普遍采用大气散射模型, 该模型根据光线经过大气中悬浮颗粒和水滴散射的特性, 将雾化图像描述为:
$ {\boldsymbol{I}}(x, y) = {\boldsymbol{J}}(x, y){{\text{e}}^{ - \beta {\boldsymbol{d}}(x, y)}} + A(1 - {{\text{e}}^{ - \beta {\boldsymbol{d}}(x, y)}}) $ | (1) |
其中,
该散射模型中, 等号右边第2项
$ {\boldsymbol{I}}(x, y) = {\boldsymbol{J}}(x, y)(1 - {{{\boldsymbol{U}}(x, y)} \mathord{\left/ {\vphantom {{{\boldsymbol{U}}(x, y)} A}} \right. } A}) + {\boldsymbol{U}}(x, y) $ | (2) |
其中,
基于大气散射模型, 本文重点围绕大气光幕和大气亮度展开研究, 提出一种图像去雾新方法, 实现步骤如下: 1)将有雾图像的3个颜色通道最小值进行分离, 利用WLS滤波器的平滑特性提取大气光幕; 2)结合Sobel算子与四叉树空间分割, 获得大气亮度的准确估计值; 3)定义还原控制因子, 结合大气散射模型实现图像去雾.
2.1 大气光幕的提取大气光幕既可表示图像中的雾气浓度, 又近似反映了场景中的深度信息. 当前多数算法采用暗通道先验[1]粗略估计大气光幕, 当局部区域处在深度跳变的边缘时将使得估计结果产生较大误差, 造成光晕效应的出现. 为解决该问题, 一般以原始图像的边缘结构为参照, 采用软抠图或引导滤波[2]进行细化修复. 然而软抠图运算量较大, 引导滤波的参数不易调整都将导致效果不理想. 为了克服上述问题, 本文采用滤波效果出众且运行效率高的WLS滤波器[21]用于大气光幕的提取.
首先, 分离出雾天图像中3个颜色通道的最小值, 即:
$ {\boldsymbol{G}}(x, y) = \mathop {\min }\limits_{c \in \left\{ {{{R}}, {{G}}, {{B}}} \right\}} {{\boldsymbol{I}}^c}(x, y) $ | (3) |
通道最小值
WLS滤波器的本质是互为矛盾的两个目标之间的最优解问题: 一是输出
$ \sum\limits_p {\left( {{{\left( {{{\boldsymbol{U}}_p} - {{\boldsymbol{G}}_p}} \right)}^2} + \lambda \left( {{{\boldsymbol{a}}_{x, p}}\left( {\boldsymbol{G}} \right)\left( {\frac{{\partial {\boldsymbol{U}}}}{{\partial x}}} \right)_p^2 + {{\boldsymbol{a}}_{y, p}}\left( {\boldsymbol{G}} \right)\left( {\frac{{\partial {\boldsymbol{U}}}}{{\partial y}}} \right)_p^2} \right)} \right)} $ | (4) |
其中, 下标
$ {\left( {{\boldsymbol{U}} - {\boldsymbol{G}}} \right)^{\text{T}}}\left( {{\boldsymbol{U}} - {\boldsymbol{G}}} \right) + \lambda \left( {{{\boldsymbol{U}}^{\text{T}}}{\boldsymbol{D}}_x^{\text{T}}{{\boldsymbol{B}}_x}{{\boldsymbol{D}}_x}{\boldsymbol{U}} + {{\boldsymbol{U}}^{\text{T}}}{\boldsymbol{D}}_y^{\text{T}}{{\boldsymbol{B}}_y}{{\boldsymbol{D}}_y}{\boldsymbol{U}}} \right) $ | (5) |
其中,
$ {{\boldsymbol{a}}}_{x, p}\left({\boldsymbol{G}}\right)={\left({\left|\frac{\partial \ell }{\partial x}\left(p\right)\right|}^{\alpha }+\varepsilon \right)}^{{-1}}\text{, }\text{ }{{\boldsymbol{a}}}_{y, p}\left({\boldsymbol{G}}\right)={\left({\left|\frac{\partial \ell }{\partial y}\left(p\right)\right|}^{\alpha }+\varepsilon \right)}^{{-1}} $ | (6) |
其中,
$ ({\boldsymbol{C}} + \lambda {\boldsymbol{L}}){\boldsymbol{U}} = {\boldsymbol{G}} $ | (7) |
其中,
$ {\boldsymbol{U}} = {({\boldsymbol{C}} + \lambda {\boldsymbol{L}})^{ - 1}}{\boldsymbol{G}} $ | (8) |
设置参数
2.2 大气亮度的定位
大气亮度的物理意义是原始图像中雾最浓区域的像素值, 或者阴天天空的像素最大值, 是全局常量. He等人[1]通过寻找暗通道图像中亮度靠前的0.1%像素值坐标, 对应原始图像中相同坐标位置的像素最大值作为大气亮度. Meng等人[6]在暗通道的基础上, 对雾天图像的3个颜色通道分别执行局部最小值滤波, 将滤波结果中的最大值视为大气亮度. 上述基于暗通道或改进方法[22-24]在处理包含亮白色物体的雾天图像时, 容易出现定位误差而导致错误的估计结果. 为了克服这一局限, 本文提出一种融合边缘检测与四叉树空间索引的浓雾定位方法, 具体步骤如下.
1)根据浓雾区域或天空区域具有灰度值相对较高的特征, 在通道最小值的基础上, 首先求取四叉树等分后子图像的归一化均值
2)鉴于浓雾区域的边缘信息较弱、细节纹理不明显, 此处采用简单高效的Sobel算子检测子图像的可见边缘数目, 并统计其在整幅图像中所占的比例
3)计算
$ {s_i} = {m_i} - {n_i} $ | (9) |
其中,
通过上述方法检测得到的可见边缘如图2(a)所示, 边缘越稀疏意味着细节纹理的表现能力越弱, 存在大气亮度的可能性越高, 结合式(9)计算后的浓雾区域用红色填充标识. 对应雾天图像中大气亮度所在位置如图2(b)所示, 可以看出, 针对含有阴天天空(如图Tiananmen)或白色物体(如图city和图airplane)的雾天场景, 本文均能得到合理准确的定位结果. 图2(c)为暗通道方法[1]得到的大气亮度所在位置, 图Tiananmen的定位结果与本文相似, 然而图city中的白色建筑、图airplane中的白色飞机均造成较大干扰, 使得定位结果出现在白色物体上而非雾最浓区域, 该定位误差将影响后续的复原处理.
2.3 还原控制因子和图像去雾根据所获取的大气光幕
$ {\boldsymbol{J}}(x, y) = \frac{{A({\boldsymbol{I}}(x, y) - {\boldsymbol{U}}(x, y))}}{{A - {\boldsymbol{U}}(x, y)}} $ | (10) |
图3(a)为有雾图像
此外, 通过对大量含有天空区域的雾天图像进行实验, 发现天空色彩均有不同程度的失真现象. 原因在于这些区域亮度较高, 面积较大, 且本身含有的信息量极少, 经式(10)处理时被认定为浓雾区域, 此时较大的去雾力度造成3个颜色通道的像素值被不同程度地拉低, 通道间的微小差异(雾气一般呈灰白色, 3个通道值接近)被异常放大, 导致色彩失真.
为了解决这一难题, 本文根据原始场景的大气光幕值自动调节局部区域的去雾力度, 即数值上接近大气亮度的天空应弱化处理, 尽量维持原始自然的视觉效果; 而远离大气亮度的非天空则应保持较大的去雾力度, 保证清晰无雾的复原结果. 因此引入还原控制因子
$ {\mathbf{\omega }}(x, y) = \min (\mu \left| {{{{\boldsymbol{U}}(x, y)} \mathord{\left/ {\vphantom {{{\mathbf{U}}(x, y)} A}} \right. } A} - 1} \right|, {\text{ }}\eta ) $ | (11) |
其中, 数据项
$ {\boldsymbol{J}}(x, y) = \frac{{A({\boldsymbol{I}}(x, y) - {\boldsymbol{\omega }}(x, y){\boldsymbol{U}}(x, y))}}{{A - {\boldsymbol{\omega }}(x, y){\boldsymbol{U}}(x, y)}} $ | (12) |
图3(d)为经式(12)计算的去雾结果, 不难发现, 非天空区域的细节可见性与图3(b)基本一致, 整体亮度有所提升, 色调更佳; 而天空区域的去雾力度有所保留, 有效克服色彩失真现象, 视觉效果更加真实自然.
3 实验结果与比较本文算法在Windows 10运行系统下, 使用Intel Core i5处理器, 2.2 GHz主频, 4 GB内存的PC机, 运行Matlab 8.5.0版本测试实验. 实验中部分去雾图像的亮度偏暗, 采用动态范围调整的方法增加其曝光度.
为了验证本文的场景适应能力, 图4选用了城市街景、建筑群和自然风光等多种场合下的近景、远景测试图像, 并给出了本文方法获取的大气光幕、还原控制因子以及去雾结果. 可以看出, 大气光幕近似体现雾气分布特性, 还原控制因子对天空和浓雾区域起到了一定的保护作用, 因此可以得到主观视觉上较为理想的去雾效果, 并且有效避免了光晕效应、整体偏色、天空亮度和颜色失真等现象的产生.
下面将给出本文与当前主流的两类方法对比的示例, 从主观视觉和客观指标进行分析和评价. 客观指标采用平均梯度K和信息熵R, K数值越大说明图像的边缘轮廓越清晰, 对微小细节和纹理特征的表现能力越强, R数值越大说明图像含有的信息量越丰富.
3.1 与基于模型的复原方法对比通过与He等人[1]和Gayathri等人[10]的模型复原方法进行5组图片的对比, 结果如图5所示. 图city和图airplane中, He等人[1]的结果由于获取的大气亮度不准确导致复原结果出现偏蓝色现象; Gayathri等人[10]的结果图中同样存在偏色现象; 本文方法所获取的大气亮度合理准确, 复原结果的色调与原始图像保持一致, 且细节可见性与层次感更强. 图sunset和图mountain存在大面积天空, He等人[1]和Gayathri等人[10]的模型均未采取有效的保护措施, 造成不同程度的色彩失真, 且图mountain远处山峰轮廓出现光晕效应, 严重影响视觉效果; 本文方法得益于对天空的弱化处理, 有效克服了近景、远景中的颜色失真现象, 视觉上更加真实自然. 图train中, He等人[1]和Gayathri等人[10]的模型取得一定的复原效果, 但是去雾力度有待加强, 特别是远处树木之间的雾气没有移除彻底; 相比之下, 本文对远景处的细节恢复更佳, 图像层次感和视见度均优于其他方法.
图5中5组图像的客观指标如表1所示, 可以看出, He等人[1]的方法由于透射率优化步骤的局限导致了客观指标较差; Gayathri等人[10]的方法结合暗通道先验与Retinex理论实现去雾, 客观指标相比He等人[1]的方法有一定优势; 本文的K指标和R指标均为最优值, 意味着恢复图像的质量最高, 边缘轮廓与纹理细节的表现能力最强. 对表1中的数据进行统计平均, 得出本文相比于He等人[1]的方法和Gayathri等人[10]的方法, K指标分别提升了55.30%和30.31%, R指标分别提升了3.75%和4.60%. 客观量化指标进一步验证了本文算法的优越性, 与主观评价的结果相一致.
3.2 与基于神经网络的学习方法对比
通过与Engin等人[15]和Fahim等人[18]的深度学习方法进行5组图片的比较, 结果如图6所示. 图cliff中, Engin等人[15]和Fahim等人[18]结果的上半部分和右侧存在较多雾气没有去除, 且左侧树叶偏暗, 细节无法分辨. 图pumpkin中, Engin等人[15]结果的远景处仍然有薄雾存在; Fahim等人[18]结果的远处出现偏绿色现象, 与原始图像的色调不符. 图swan中, Engin等人[15]结果的雾气没有完全去除, 视见度较差, 相比之下, 本文的细节更加凸显, 如右侧树干的纹理清晰可见. 图road和图street中, 本文的视觉效果明亮通透, 景物的颜色提升和细节保持有一定的优势.
表2给出了图6中5组图像的指标测试结果, Engin等人[15]和Fahim等人[18]的方法需要对大量不同场景的样本进行深度学习, 此类方法处理自然拍摄的图像时, 客观指标并不出众. 根据表2中的对比可知, 本文相比其余方法的优势非常明显. 统计表2中的指标数据, 相比于这两种方法, 本文的K指标分别提升了83.82%和62.72%, R指标分别提升了1.21%和1.96%.
对比上述4种方法的运行效率, 处理600×400分辨率的图像, He等人[1]的方法采用引导滤波进行优化, 需要5.23s 的时间, Gayathri等人[10]的方法所需时间为6.75 s, Engin等人[15]的方法所需时间为3.31 s, Fahim等人[18]的方法所需时间为4.64 s, 而本文所需时间仅为1.61 s, 比上述方法节省了50%以上的时间.
4 结论与展望本文在大气散射模型的基础上, 提出一种结合WLS滤波与还原控制因子的去雾方法. 该方法首先提取雾天图像的通道最小值, 利用WLS滤波器进行边缘结构的提取和纹理细节的平滑, 获得与景深变化趋势基本一致的大气光幕; 接着统计二值化的图像边缘数目作为四叉树迭代分割的依据, 合理定位大气亮度所在区域; 最后在复原图像的过程中引入还原控制因子, 有效解决天空颜色失真的问题. 对大量雾天图像进行验证与比较, 结果表明本文方法在多场景下均能达到高对比度、视见度和颜色保真度的视觉效果, 且客观指标相比主流方法有了一定的提升. 然而本文的局限在于给出的还原控制因子并非对所有图像都有效, 对于少数天空亮度差异过大或边界不明显的场景, 需要手动调整参数才能得到理想的结果. 下一步工作将是针对这一问题进行深入研究, 提高算法的鲁棒性.
[1] |
He KM, Sun J, Tang XO. Single image haze removal using dark channel prior. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2011, 33(12): 2341-2353. DOI:10.1109/TPAMI.2010.168 |
[2] |
He KM, Sun J, Tang XO. Guided image filtering. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2013, 35(6): 1397-1409. DOI:10.1109/TPAMI.2012.213 |
[3] |
Tarel JP, Hautière N. Fast visibility restoration from a single color or gray level image. Proceedings of the IEEE 12th International Conference on Computer Vision. Kyoto: IEEE, 2009. 2201–2208.
|
[4] |
Kratz L, Nishino K. Factorizing scene albedo and depth from a single foggy image. Proceedings of the IEEE 12th International Conference on Computer Vision. Kyoto: IEEE, 2009. 1701–1708.
|
[5] |
Nishino K, Kratz L, Lombardi S. Bayesian defogging. International Journal of Computer Vision, 2012, 98(3): 263-278. DOI:10.1007/s11263-011-0508-1 |
[6] |
Meng GF, Wang Y, Duan JY, et al. Efficient image dehazing with boundary constraint and contextual regularization. Proceedings of 2013 IEEE International Conference on Computer Vision. Sydney: IEEE, 2013. 617–624.
|
[7] |
Fattal R. Dehazing using color-lines. ACM Transactions on Graphics, 2014, 34(1): 13. |
[8] |
王平, 张云峰, 包芳勋, 等. 基于雾天图像降质模型的优化去雾方法. 中国图象图形学报, 2018, 23(4): 605-616. DOI:10.11834/jig.170358 |
[9] |
杨红, 崔艳. 基于开运算暗通道和优化边界约束的图像去雾算法. 光子学报, 2018, 47(6): 0610004. |
[10] |
Gayathri S, Ameena Bibi N. Enhancement of dehaze images using multiscale Retinex. International Journal of Advanced Engineering Science and Information Technology, 2021, 5(5): 39-48. |
[11] |
李红云, 施云, 高银. 基于显著性权重的多曝光融合的单幅雾天图像复原算法. 电子与信息学报, 2022, 44(1): 261-270. DOI:10.11999/JEIT200931 |
[12] |
吴正平, 岑帅红. 基于自适应gamma校正估计的图像去雾算法. 液晶与显示, 2022, 37(1): 106-115. DOI:10.37188/CJLCD.2021-0182 |
[13] |
Cai BL, Xu XM, Jia K, et al. DehazeNet: An end-to-end system for single image haze removal. IEEE Transactions on Image Processing, 2016, 25(11): 5187-5198. DOI:10.1109/TIP.2016.2598681 |
[14] |
Ren WQ, Liu S, Zhang H, et al. Single image dehazing via multi-scale convolutional neural networks. Proceedings of the 14th European Conference on Computer Vision. Amsterdam: Springer, 2016. 154–169.
|
[15] |
Engin D, Genç A, Kemal Ekenel H. Cycle-Dehaze: Enhanced CycleGAN for single image Dehazing. Proceedings of the 2018 IEEE/CVF Conference on Computer Vision and Pattern Recognition Workshops. Salt Lake City: IEEE, 2018. 825–833.
|
[16] |
肖进胜, 周景龙, 雷俊锋, 等. 基于霾层学习的单幅图像去雾算法. 电子学报, 2019, 47(10): 2142-2148. DOI:10.3969/j.issn.0372-2112.2019.10.016 |
[17] |
王高峰, 张赛, 张亚南, 等. 基于改进DehazeNet的图像去雾方法. 计算机系统应用, 2021, 30(5): 208-213. DOI:10.15888/j.cnki.csa.007910 |
[18] |
Fahim MANI, Jung HY. Single image dehazing using end-to-end deep-dehaze network. Electronics, 2021, 10(7): 817. DOI:10.3390/electronics10070817 |
[19] |
杨燕, 张金龙, 梁小珍. 基于阶梯网络与交叉融合的端到端图像去雾. 光子学报, 2022, 51(2): 0210004. |
[20] |
陈平. 基于明暗通道循环GAN网络的单幅图像去雾. 计算机系统应用, 2022, 31(2): 191-199. DOI:10.15888/j.cnki.csa.008278 |
[21] |
Farbman Z, Fattal R, Lischinski D, et al. Edge-preserving decompositions for multi-scale tone and detail manipulation. ACM Transactions on Graphics, 2008, 27(3): 1-10. |
[22] |
杨燕, 刘珑珑, 张得欣, 等. 结合自适应雾气估计的快速单幅图像去雾. 光学精密工程, 2019, 27(10): 2263-2271. |
[23] |
宋佳怡, 谢维信, 王鑫. 融合暗通道滤波和空间金字塔的图像去雾算法. 信号处理, 2019, 35(5): 816-824. DOI:10.16798/j.issn.1003-0530.2019.05.012 |
[24] |
吕建威, 钱锋, 韩昊男, 等. 结合光源分割和线性图像深度估计的夜间图像去雾. 中国光学, 2022, 15(1): 34-44. |