王文杰 景志宇 梁晓瑞,2 潘 婷 杨秋翔
(1.中北大学软件学院 太原 030051)(2.中北大学仪器科学与动态测试教育部重点实验室 太原 030051)
雾霾天气环境下,大气中存在着大量的水蒸气、灰尘等悬浮粒子,造成户外成像设备采集的图像产生对比度降低、色彩缺失等问题[1]。对安防、监控以及无人机等户外成像设备采集高质量的图像造成巨大的挑战[2~3]。因此,在计算机视觉和计算机图形学的应用领域中,如何获得雾天环境下高质量的图像具有重要的研究意义[4~5]。
目前,图像去雾方法总体分为两类:基于图像增强方法和基于物理模型方法。基于图像增强方法有直方图均衡化[6]、小波变换[7]、Retinex[8]等,但此类方法只注重增强图像的视觉效果,而忽略了雾天图像的形成原理,处理后的图像往往会产生色彩失真、细节缺失等问题。基于物理模型的方法,以大气散射模型为基础,反演出无雾图像。基于物理模型方法可以分为三类:基于景物深度信息方法、基于光的偏振特性方法以及基于先验信息方法[9]。基于景物深度信息的算法需要雷达设备提供景深信息,过程复杂且代价高昂。基于大气光偏振特性的算法对于雾气较浓的图像效果不佳,适用范围有限[10]。基于先验信息的算法由于其过程简单,代价较小,近些年来获得了较为优异的成果。文献[11]提出的结合马尔可夫场和图割理论的去雾方法,但容易引起Halo 效应和色彩过饱和现象。文献[12]通过独立成分分析来获得较为自然的去雾图像,但需要足够的颜色信息,对于景深较大和雾气较浓的图像效果不佳。文献[13]通过最小化代价函数的方法来提高对比度,取得了较好的效果,但极易引起色偏,甚至彻底修改图像的局部颜色。文献[14]利用中值滤波估计大气耗散函数,但该方法在处理边缘位置易产生Halo效应。
近些年基于暗通道先验(Dark Channel Prior,DCP)的图像去雾方法[15]成为图像去雾领域研究的热点。并采用软抠图或导向滤波[16]的方法来得到较为精细的透射率图像。但该方法本身对于有大面积天空区域的图像存在严重的色彩失真问题。文献[17]通过对比区域梯度信息、亮度分量来分割天空区域。文献[18]通过引入容差机制来区分识别天空区域。这两种方法取得了一定的效果,但对于边缘细节的处理仍不理想。
针对以上问题,本文从暗通道图像的直方图出发,提出一种结合自适应分割策略的图像去雾方法。通过实验论证,户外图像的暗通道直方图分布有明显分离特性,基于此先验知识,利用最大化类间方差的策略,自适应地获取暗通道图像分割阈值,结合阈值并引入容差机制重新计算透射率,采用四叉树分解得到图像全局大气光值,最后,使用Gamma矫正提升图像整体亮度。
图像处理常用的大气散射模型[19]来描述图像退化过程,其表达式如式(1):
其中,x为图像像素,I(x)为成像设备采集的图像,A为大气光值,t(x)为介质透射率,J(x)为清晰自然图像。图1展示了大气散射模型的成像过程。
图1 大气散射模型
暗通道先验理论描述为户外自然图像矩形像素邻域内(边长为7或9的矩形)某一颜色通道值趋于0的现象,其形式表达如式(2):
其中,Ω(x)为局部像素邻域,Jdark(x)为暗通,c 为r、g、b分别为三个颜色通道。
根据以上理论,在均质图像中,由式(3)获得粗略的透射率:
根据大气散射模型反推真实的自然图像J(x),其表达式如式(5):
其中,t0是为防止透射率过小引起失真而加入的参数,常取值为0.1。
传统基于物理模型的方法采用图像全局最亮像素作为大气光值。文献[15]采用暗通道图像中最亮前0.1%像素均值作为大气光值。文献[17]采用RGB 各个颜色通道图像天空区域均值作为大气光值。以上获取大气光值的方法都不能有效避开图像场景中白色物体的影响。
本文通过四叉树分解估计大气光值,并同时考虑图像亮度分量与透射率的影响。因此,首先将观测图像转换到YCbCr空间,即式(6):
其中,Dy为图像亮度分量,Dcb和Dcr为图像的两个色度分量。将亮度分量与透射率结合为式(7):
其中,φ为判定参数,α为权重参数,大小设置为0.5,以保持透射率和亮度分量同等的影响力。
图2 为四叉树分解的原理图,其具体描述为将图像等分为四个区域,并设定选择条件,确定满足条件的区域并继续划分,循环操作,直至确定区域满足结束条件。
图2 四叉树分解
自然图像天空区域普遍存在两种特征:细节稀少、整体平滑。基于这种因素,四叉树分解暗通道的流程如下。
1)对子区域进行编号为Rm,m∈(1,2,3,4)分别代指左上角、右上角、左下角以及右下角4 个子区域。
2)由式(7)计算子区域的φ值与暗通道像素标准差S,并定义子区域得分gra,计算公式如式(8):
3)取gra最高的区域,重复上述步骤,直到满足终止条件后分解完成;此时子区域的像素均值为图像全局大气光值。
防止个别异常像素的影响,采用由Reinhard[13]提出的获取像素均值的方式,最终大气光值如(9):
其中,G(x)为子区域内像素均值,ξ是为防止计算结果出现无穷小的情况所设置的常数,通常取值为0.0001,n为像素总数,此处n为子区域长宽乘积。
大气光值的获取应由适当数量的数据支持,为防止数据量偏少而使得大气光值估计出现偏差,所以,四叉树分解终止条件为子区域的长宽乘积小于300。由图3 可知本文获取大气光值的过程可以有效避开亮白物体,获取大气光值的过程更为合理。
图3 四叉树分解过程
根据自然图像天空区域特性分析,并结合图4的实验观测发现,户外有雾图像暗通道分布直方图呈双峰分布或双峰分布明显的多峰分布,适用于最大化类间方差分割图像。本文方法认为在直方图中最右侧尖峰为户外自然图像天空区域的直方图分布。基于此发现,采用最大类化间方差的策略获取位于直方图峰谷之中的分割阈值T,因此具体流程如下。
图4 直方图观测结果
1)根据直方图获取初始阈值T,并根据输入图像长宽计算像素总数Count。
2)根据T 将图像分为两个部分,强度大于T 的记为G1,反之记为G2。
3)分别计算G1和G2中像素的个数为m1、m2与平均强度u1、u2。
5)计算类间方差g(T)=ω1×ω2×(u1-u2)2,重复以上步骤,取最大化类间方差,此时T 为最佳阈值。
暗通道理论下户外自然图像天空区域透射率的估计值较小于实际值,导致Halo 效应的出现,如式(11):
实际上,天空区域整体具有景深相同、细节相似的特点,透射率相近。因此,对暗通道进行如式(12)的优化:
其中,T 为由式(10)求得的阈值,G(Jdark(x))为根据Reinhard[13]的方法求得暗通道天空区域像素均值。采取L1梯度最小化对天空区域透射率进行优化,以进一步消除色彩失真问题,计算公式如式(13):
由图5 展示了透射率优化后的效果对比,其中,图像5(c)天空区域透射率相比图5(b)中明显提升,且整体平滑,有效地避免了Halo效应。
图5 透射率修正
采用Gamma 矫正来解决处理后图像整体偏暗的问题。具体计算过程如式(14):
其中,IG(x)为输出图像,I(x)为输入图像,γ为大于0矫正系数,由式(15)确定:
其中,mask(x)为对原图反色处理后进行半径为1的高斯模糊的图像,根据一般规律,如果mask(x)值大于128,说明像素x 及其邻域以暗像素为主。因此需要矫正系数小于0 以便将其增亮,并且mask(x)距离128越远,矫正的量越大。
本文实验环境为Intel(R)Core(TM)i5-8250@1.60 GHz,8GB RAM 的笔记本电脑,Python3.7 为工具。实验图像采集至各类文献提供的经典实验图像,图6 实验结果由上至下分别为河流、黄昏、居民区、城市、山景。
图6 各算法效果对比
为论证本文方法的有效性,选取文献[4,16~17]中的方法进行对比实验。
根据图6 可知,文献[16]处理后的图像整体效果不佳,在户外图像天空区域出现明显的色彩失真现象,并且图像整体亮度较低,不利于观测。文献[4]在一定程度上缓解了天空区域的色彩失真(Halo 效应)。但仍然不能解决图像整体偏暗的问题,部分图像色彩失真现象依然严重。文献[17]结果整体视觉效果优于前面两种算法,但在近景处亮度明显降低,甚至出现黑色的斑点。本文算法解决了在图像天空区域的色彩失真效应,图像整体明亮自然,视觉效果良好。
本文以信息熵和信噪比作为参数客观的分析实验结果。信息熵表示图像蕴涵信息的丰富程度,从理论上说,信息熵数值越大,所包含的信息越多,图像也越清晰。就信噪比而言,其数值越大表示图像质量高,去雾方法效果好。
根据表1 给出的数据,本文方法处理后的图像信息熵较其他算法有较明显的提升,获得了较为良好的去雾效果,这是得益于本文方法处理后的图像对比度较高,同时没有引起色彩失真等问题。
表1 信息熵计算结果
根据表2 的统计结果,本文方法处理后的图像能保存较高的信噪比,这主要得归功于本文方法能够有效抑制天空区域的色彩失真现象。
表2 信噪比计算结果
本文针对暗通道去雾算法的缺陷,提出了结合自适应分割策略的图像去雾算法。实验结果表明,本文算法获得较为彻底的去雾效果,有效抑制了户外图像天空区域的颜色失真问题,主观视觉感受良好。客观评价对比其他算法有所提升。