雾霾等恶劣天气通常会影响计算机系统视觉在日常生活和生产活动中的应用, 例如: 城市交通监控系统, 军事侦察等[1]. 所以, 降低雾霾等恶劣天气对图像质量的影响及对在智能交通、军事侦察等领域具有直接的应用价值. 如今关于雾天图像复原的算法种类繁多, 总的来说, 有以下两种分类: 一类是基于图像增强的方法, 但是对于有着复杂的结构场景的有雾图像在该类方法处理下去雾效果并不明显; 另一类是基于物理模型的图像去雾的方法, 这种方法是构建大气散射模型,复原出无雾图像[2].
近年来, 基于物理模型的图像复原算法已经有了很大的进展. Fattal利用大气散射模型, 用数理统计的方法去假设条件, 获取透射率, 但该方法不适用于浓雾天气或者灰度化的图像[3]. Meng等根据分离变量的方法求取透射率, 但是去雾后的图像存在一定的色差[4]. Tan等对大气光强的最优解进行估计获取去雾图像, 但去雾后的图像存在饱和度过高的问题[5]. Tarel等利用改进后的中值滤波算法对大气光强的值进行估计, 但是对于突变的景深区域, 去雾后可能产生光晕现象[6]. He等提出了著名的暗通道先验理论, 由于处理过程中计算量大且复杂, 该算法的执行效率极低, 不具备实时性[7]; 随后, He等提出采用引导滤波算法[8], 改进后的算法大大地降低了算法复杂度, 并且图像去雾效果自然, 清晰度高, 但是当图像中存在大片浓雾、天空区域时, 这种情况下暗通道先验理论这一假设并不适用.
综上所述, 在图像去雾领域中, 相比其他类的算法, 基于先验理论的单幅图像去雾技术取得的成果显著, 但对于浓雾、天空等区域, 去雾后图像的轮廓信息和景物特征模糊不清, 因此, 如何达到运算效率和图像清晰度间的平衡, 如何解决天空等区域出现色斑失真的问题, 使图像处理结果不仅要满足视觉要求, 还要考虑算法的运算效率.
本文基于大气散射模型, 建立了雾天图像复原的关系, 以暗通道原理作为基础知识, 复原雾天图像. 首先分析天空失真的原因, 引入容差机制, 改善天空去雾效果; 其次增强算法的自适应性, 分析各参数对透射率精度和程序运行时间的影响, 并且利用QT完成图像去雾的软件设计, 实现雾天图像的去雾处理, 比较传统去雾算法与改进后的去雾算法的图像效果.
1 基于暗原色的图像去雾 1.1 暗原色先验图像去雾基于暗原色先验的图像去雾流程图如图1所示, 基于He等在对数量众多的无雾图像进行了反复实验和观察得出了一个统计规律, 被称为暗原色先验理论[7]. 获得暗通道图, 再获取大气光强、估计透射率, 根据大气散射模型进行图像去雾与图像复原获得最终的去雾图像.
如图2所示, 输入的图2(a)有雾图像, 物体特征较为模糊; 图2(b)透射率图, 没有物体的轮廓特征; 图2(c)去雾后的图像, 明显看到天空区域出现失真, 该区域出现有大面积的光晕现象, 并且去雾后图像亮度很低. 这是因为当图像中存在大片浓雾、天空区域或者图像亮度接近于大气光亮度时, 这种情况下暗通道先验理论这一假设并不适用, 此时得到的透射率与真实透射率偏差很大, 图像去雾后会失真, 出现色斑.
1.2 引导滤波方法
在图像去雾领域中, 相比其他类的算法, 基于暗原色先验的去雾算法取得的成果显著, 复原后的图像质量较好; 但是由于采用暗原色先验知识来得到透射率, 其算法时间复杂度较高, 运行时间消耗长, 并且去雾效果受滤波核的影响较大. 因此本文采用引导滤波方法来优化透射率, 去雾后图像的轮廓信息和景物特征更为清晰, 并且运算时间变短, 节省了内存空间.
He等提出的一种图像滤波技术, 被称为引导滤波, 基本原理是将雾天图像的灰度图作为引导图像G, 将透射率图作为原始的输入图像P, 经过滤波处理之后使输出图像Q能实现以下两个目的: (1)有着透射率图P的整体特征; (2) 获取雾天图像G的轮廓细节[8].
如图3所示, 图3(a)为雾天图像; 通过引导滤波优化后的图3(b)透射率图, 在细节方面更为清晰, 物体纹理分明; 通过引导滤波后的图3(c)图像复原图, 色彩自然, 在天空与非天空区域交界处的色斑消失. 与之前的传统去雾效果相比, 采用引导滤波算法来进行图像去雾, 天空区域的光晕现象有所减弱, 图像边缘更加清晰, 但是在天空区域存在一定程度的失真, 整个得到的去雾图像较灰暗.
2 天空失真 2.1 天空失真问题分析
若去雾图像中存在大范围的天空区域, 在利用基于暗原色先验的引导滤波算法进行图像复原后, 去雾图像的天空区域将会出现块状色斑, 这种大面积的颜色失真严重影响着图像复原的效果. 对于大部分户外的有雾图像而言, 经过该算法去雾后的图像通常都有着很好的效果, 其原因是这些有雾图像的绝大多数像素符合暗原色先验知识这一假设[9].
如图4所示, 通过多次的实验结果可知, 含大量天空区域的图4(a)无雾图像; 其对应的图4(b)暗原色图, 有大量灰白的区域; 其对应的图4(c)暗通道直方图, 从图中可以直观地看出, 暗通道的强度值很高并且趋近于255, 暗通道这一先验知识对天空等明亮区域不成立, 在这些区域的暗通道的像素值都普遍偏大. 利用暗原色先验来复原这类雾天图像, 天空等明亮区域的部分图像经常被当作雾浓度很高的区域来进行去雾处理, 导致该部分的去雾程度过大, 得到的去雾图像色彩失真严重, 并且在天空等明亮区域有明显的细纹理[10].
$ 0<{J}^{\rm dark}\left(y\right)=\underset{y\in \Omega \left(x\right)}{\min}\left(\underset{c\in \left\{r,g,b\right\}}{\min}\left({J}^{c}\left(y\right)\right)\right)<1 $ | (1) |
式(1)将当前帧与背景帧相减, 然后取得绝对值, 这个绝对值就是帧差法结果图像的灰度值.
$ t\left(x\right)=\dfrac{1-\underset{y\in \Omega \left(x\right)}{\min}\left(\underset{C}{\min}\left(\dfrac{{I}^{C}\left(y\right)}{{A}^{C}}\right)\right)}{1-\underset{y\in\Omega \left(x\right)}{\min}\left(\underset{C}{\min}\left(\dfrac{{J}^{C}\left(y\right)}{{A}^{C}}\right)\right)} $ | (2) |
由式(1)可知, 式(2)的分母小于1, 对于含天空区域的有雾图像, 根据这种方法求得的透射率比实际的透射率小. 当透射率t越小时, 去雾程度越厉害, 复原后的图像存在过度增强. 因为在天空区域, 暗通道先验这一前提假设不成立, 所以其去雾图像的天空等明亮区域失真严重.
2.2 容错参数
对于包含天空等明亮区域的雾天图像, 天空部分不满足暗通道先验这一前提假设, 根据这种方法求得的透射率并不准确, 其比实际的透射率小, 导致去雾程度过大, 得到的去雾图像色彩失真严重, 并且在天空等明亮区域有明显的细纹理. 为了解决这种问题, 使得到的透射率更接近于实际值, 有良好的去雾效果, 并且仍然采用基于暗原色先验的去雾算法. 因此引入容差参数K来修正透射率, 使其更接近真实情况的透射率, 减弱了天空等明亮区域产生的色彩失真现象. 因此, 添加容差参数修正后的透射率为:
$ \widetilde {t\left( x \right)}=\mathit{\min}\left(\mathit{\max}\left(\frac{K}{\left|I\left(x\right)-A\right|},1\right)\cdot \mathit{\max}\left(t\left(x\right),{t}_{0}\right),1\right) $ | (3) |
重新定义去雾图像为:
$ {J}_{\left(x\right)}=A+\frac{I\left(x\right)-A}{\widetilde {t\left( x \right)}} $ | (4) |
(1)对于
(2)而对于
在本文中, K的取值为: K=50. 引入容差机制主要是对原算法的一种补充和扩展, 仍然以暗原色先验这一假设为基础, 使之前的算法的应用范围更具有鲁棒性, 在不同亮度情况下可以获取更佳的透射率. 引进容差机制主要是对天空等明亮区域进行去雾的一种弱化效果, 因为该区域的暗原色像素值接近于大气光强A, 通过这种方法, 使其去雾力度降低, 从而去雾效果更为真实,可以很好的改善天空区域的颜色失真现象.
如图5所示, 加入容差机制后对图5 (a)有雾图像进行去雾, 得到的透射率被修正, 图5 (b)透射率图更为精细, 图5 (c)复原后的图像没有明显的白边, 天空区域的色彩失真有所改善, 波浪状的细纹消失, 有着很好的去雾效果.
3 算法改进 3.1 自适应大气光矫正
在估计大气光A值时, 其求取的原则是: 在暗通道图中找出前0.1%大小的灰度值, 将其映射到输入的雾天图像中得到对应的像素点, 并将这个点对应的最大值作为大气光强A的预估值. 若选取的亮度最大值点的像素值过大, 接近于255, 即大气光估计值接近255, 复原后的图像色彩会有一定程度的失真[11,12].
如图5所示, 此时两幅有雾输入图像的大气光强值分别为: A=232与A=240, 用加入容差机制的暗原色去雾算法来进行去雾的复原图像, 去雾效果有所改善.
但是当所估计的大气光强A的值接近于255, 如图6所示, 图6(a)中有雾图像的大气光强估计值A=255, 由式(4)可知, 将会导致透射率t过小, 对有雾图像的去雾程度偏大, 所以在图6(b)的复原图像中会出现部分失真.
为避免获得的大气光估计值过高, 在本文中设置了一个大气光阈值MaxAtomLight, 令其MaxAtomLight=220, 其如式(5)所示:
$ A{'} = \left\{ {\begin{array}{*{20}{l}} {A,}&A \le 220\\ {220,}& A > 220 \end{array}} \right. $ | (5) |
在式(5)中, 当大气光强A大于阈值220时, 其大气光强等于阈值; 当大气光强A小于阈值220时, 其值保持不变. 对大气光强值进行修正后, 如图7所示, 利用改进的算法对图7 (a)有雾图像进行去雾处理, 其结果如图7 (b)所示.
3.2 自动色阶处理
采用暗通道原理对有雾图像进行图像复原, 复原输出的图像看起来都不太明亮[13]. 为了解决这个问题, 文中利用自动色阶算法来调节输出图像的色彩纯度, 使复原图像看起来更加自然. 自动色阶算法的具体实现步骤:
(1)统计图像中3个通道的直方图;
(2)计算出图像中像素值两端的极限值, 确定像素的上限和下限;
(3)构建对应的映射表, 按相应比例对其他的像素值进行线性处理. 改进后的算法流程图如图8所示.
4 算法性能验证于分析
为验证算法的实用性和有效性, 本文设计图像去雾软件来实现多种复原图像的算法, 去雾算法种类分为3种: 传统去雾、导向滤波、改进后的去雾算法. 设置可调参数: 滤波核和大气光强值, 可根据输入的有雾图像特征进行调节. 验证流程如图9所示.
从主观上进行去雾效果评价, 可以看出选择传统暗原色先验去雾算法进行去雾, 天空区域颜色失真有色斑出现; 选择导向滤波算法进行去雾, 整体图像较灰暗; 选择改进后的算法进行去雾, 去雾效果最好, 并且可以显示所选择的去雾算法耗费的时间. 在去雾过程中用户可根据具体的雾天图像特征对参数大气光强和滤波核大小进行相应的调节, 从而达到更好的去雾效果. 至于对比度, 本文算法与传统暗原色去雾算法和导向滤波算法在整体上相当, 但是本文算法在细节恢复上要好些. 图10–图12的示例图中, 三者在局部的对比度差异较为明显. 在图像中人物和复杂的钢铁支架部分经过本文改进去雾算法后的图像中细节更为清晰, 对比度更高.
通过主观分析本文改进算法能有效去除雾气对场景的影响, 增加图像的清晰度, 图像能见度有了明显改善, 有雾图中一些场景信息经去雾后得到很好的恢复, 颜色也保持了场景原本的颜色, 图像去雾效果十分显著. 但是主观评价带有一定的色彩性和人为因素的干扰, 所以本文通过图像的均值、方差和清晰度进行客观的评价. 其中, 均值能反应图像的亮度和增强效果; 方差能反映图像的对比度, 清晰度则直接能反应图像的清晰程度, 清晰度越大图像就越清晰. 其公式如式(6):
$ F=\frac{1}{a\times b}\sum _{i,j{\in}{a,b}}\sqrt{\Delta {I}_{x}^{2}\left(i,j\right)+\Delta {I}_{y}^{2}\left(i,j\right)} $ | (6) |
其中, F表示清晰度, a×b表示图像的大小,
根据客观数据评价结果显示, 比较3种算法在均值、方差、清晰度的数值, 可以明显看出改进后的算法均值最大, 证明图像的增强效果明显增加; 方差值最大表明图像的灰度层级分散,则对比度明显变大; 清晰度值最大直接表明了改进后算法能够明显增强图像的清晰程度.
5 结论与展望本文对基于暗原色先验的去雾算法进行了研究, 引入容差参数减弱了天空区域失真的现象, 设置可调参数优化了算法的适应性, 取得了一些研究成果, 但是 由于能力与时间的限制, 本文的算法仍有部分内容可待进一步研究讨论. 例如容差参数的确定. 对于包含天空等明亮区域的雾天图像, 其不满足暗通道先验, 引入容差参数K来修正透射率, 但是该值是人为手动设置的, 对于不同的有雾图像其适合的容差参数不一致, 如何使不同的有雾图像自动匹配合适的容差参数, 这个问题可待进一步研究.
[1] |
孙华臣, 卢华. 中东部地区雾霾天气的成因及对策. 宏观经济管理, 2013(6): 48-50. |
[2] |
熊浩. 基于暗原色先验的图像去雾处理方法研究[硕士学位论文]. 华中科技大学, 2013.
|
[3] |
Fattal R. Single image dehazing. ACM Transactions on Graphics, 2008, 27(3): 1-9. |
[4] |
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, NSW, Australia. 2013. 617–624.
|
[5] |
Tan RT. Visibility in bad weather from a single image. Proceedings of 2008 IEEE Conference on Computer Vision and Pattern Recognition. Anchorage, AK, USA. 2008. 1–8.
|
[6] |
Tarel JP, Hautière N. Fast visibility restoration from a single color or gray level image. Proceedings of 2009 IEEE 12th International Conference on Computer Vision. Kyoto, Japan. 2009. 2201–2208.
|
[7] |
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 |
[8] |
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 |
[9] |
沈逸云, 邵雅琪, 刘春晓, 等. 结合天空检测与纹理平滑的图像去雾. 中国图象图形学报, 2017, 22(7): 897-905. |
[10] |
茅天诒, 王敬东, 孙震, 等. 天空区域分割的暗原色先验去雾视觉优化技术. 半导体光电, 2017, 38(6): 902-907, 915. |
[11] |
全雪峰. 基于自适应大气光校正的图像去雾方法. 计算机应用与软件, 2019, 36(3): 104-111. DOI:10.3969/j.issn.1000-386x.2019.03.020 |
[12] |
邱东芳, 黄光辉, 刘星, 等. 透射率和大气光自适应估计的暗通道去雾. 计算机应用, 2017, 37(S1): 176-179, 186. |
[13] |
张正豪, 冯伍法, 王涛, 等. 一种改进的基于暗原色先验信息的航空遥感图像去雾方法. 测绘科学技术学报, 2018, 35(2): 182-186. |