基于重构暗通道的二次正弦衰减的去雾算法

2021-05-06 09:32葳,
系统工程与电子技术 2021年5期
关键词:透射率复原正弦

梅 葳, 李 昕

(上海大学机电工程与自动化学院, 上海 200072)

0 引 言

在物理学中,雾是由于水蒸气的液化而形成的一种液态气溶胶凝结物。当大气中存在雾霾时,空气中的小水珠发生凝结后会影响光线的传播从而导致能见度极大地降低。因此,视觉传感器在有雾天气下拍摄的图像存在饱和度差、亮度低、对比度不高等缺陷[1]。计算机视觉的许多应用(包括物体识别和分类、目标追踪、图像特征提取以及一些其他的实际应用)都会受到有雾图像低能见度的影响[2]。因此,消除雾霾得到无雾图像有非常显著的研究意义以及应用价值。

近年来,越来越多的计算机视觉领域的专家相继提出一些去雾算法,这些方法在提高图像的可视化效果上都有突破性的进步。其中,Qu[3]等人发现在雾天情况下由于空气中存在凝结物,光的散射会产生偏振,于是用偏振器获取图像不同角度的信息进行复原,但这类算法过程非常复杂,时间复杂度高,不利于实际去雾的应用。Cai[4]等人提出一种基于端对端的深度学习去雾算法,采用基于卷积神经网络的深层架构,学习有雾图像和透射率之间的关系,训练得到透射图,再根据大气散射模型去雾,但这类算法对数据集的数量和质量要求较高,并且依赖于高性能的成像设备,否则需要通过人工加雾来生成数据集。根据室外清晰图像比雾天图像对比度大这一特点,Tan[5]等人提出最大化局部对比度的方法进行图像复原,此方法在一定程度上增强了图像的能见度,但复原图片往往在梯度变化较大的地方产生伪影效应。杨燕[6-7]等人根据多级透射率提出了一类基于高斯权重的迭代优化去雾算法,其方法对去雾效果有一定的提升,但其算法复杂度较高,实时性较差。Fattal[8]等人首先假设光的透射率与物体色质局部统计无关,然后建立数学模型估算场景的反照率和光的透射率,但此方法的效果取决于数据的统计特性,有较低的鲁棒性。Tarel[9]等人提出了一种基于中值滤波器的快速可见性单幅图像去雾算法,该方法在保留图像边缘和图像角落方面有较好的效果,但在处理天空区域时会出现偏色现象,且会出现Halo效应。Zhu[10]等人根据亮度大小和饱和度信息之间的差异,在恢复深度信息之前提出了一种新颖的线性色彩衰减先验理论,并基于此理论建立了雾天场景深度结构的线性模型,但在估计大气散射系数时使用的是全局一致的参数,导致该方法的鲁棒性不够稳定,且对于雾霾密度分布不均匀的图像复原效果不理想。He[11]等人提出暗通道先验(dark channel prior, DCP)理论:对于一幅RGB彩色图像,像素通常在至少一个颜色通道中具有非常低的强度值。基于此提出暗通道优先的单幅图像去雾算法,实验表明该算法在天空区域去雾失效且复原图像偏暗。以上方法存在的缺陷包括:① 在天空区域的去雾效果不佳;② 景深处残雾去除不彻底且物体边缘周围的伪影现象比较明显。

为了解决以上缺陷,本文在DCP理论的基础上加以改进,提出一种基于重构暗通道的二次正弦衰减的去雾算法,明显降低偏色现象并消除部分残留的伪影光圈,而且复原图像的亮度和颜色对比度都有较好的提升。

1 算法背景

1.1 大气散射模型

在计算机视觉领域,由Mccartney[12]等人提出的大气散射模型被广泛应用于图像去雾之中,其物理模型如下:

I(x)=J(x)t(x)+A(1-t(x))

(1)

式中,I(x)是输入的有雾图像;J(x)表示期望的复原输出图像;A是整副图像的大气光强度;t(x)代表的是光线的透射率,即雾的通透程度,t(x)∈[0,1]。式(1)右边的第1项J(x)t(x)称为直接衰减,第2项被称为大气光或者大气面纱, 直接衰减解释为场景辐射强度及其在介质中的衰减效果;大气光描述的是空气中的小颗粒吸收和散射的光线。由于大气层通常是均匀的,所以透射率t(x)与场景深度信息相关。因此,t(x)可以被表示为

t(x)=e-β d(x)

(2)

式中,β是大气散射系数;d(x)代表了场景深度信息,一般在图像中是分段平滑的[13]。通过式(2)可以看出场景辐射与深度呈指数衰减。目前已知条件是输入的雾天图像I(x),目标是复原图像J(x),式(1)有3个未知数(t,A,J),为病态方程,所以需要借助先验理论来估算出大气光A的值和透射率t(x)的值。

1.2 暗通道先验理论

He等人提出的DCP理论解释为一幅无雾图像的RGB颜色通道中至少有一个颜色通道的像素强度值很低甚至趋于0,将此通道图称为暗通道图,这个理论也被称为暗通道先验理论,其数学表达式为

(3)

式中,Jc代表彩色清晰图像的一个颜色通道;Ω(x)是以像素x为中心的一个邻域;Jdark(x)是对应的暗通道,内层是求取无雾图像的最小颜色通道图,外层是在以像素x为中心点的滤波窗口Ω(x) 内做最小值滤波操作。在对5 000多幅无雾图像的暗通道像素进行统计后,发现绝大多数的像素值趋于0,于是提出式(3)所示的暗通道先验理论。

在假设A已知的前提下,结合式(1)和式(3)可以得到透射率t(x):

(4)

为了保证视觉的空间透视感,引入了一个常数参数ω(0<ω<1,在文献[11]中取0.95)来得到新的t(x):

(5)

He[11]等人利用以下方法来计算全局大气光A,首先从原图对应的暗通道图中选取像素最大的前0.1%的像素值,然后在原始有雾图像中寻找对应像素位置的最大像素点的值作为大气光A的取值。于是就可以求出透射率,从而根据下式求出无雾图像:

(6)

式中,设置一个下限阈值t0(在文献[11]中取0.1),防止当透射率接近0时复原图像整体偏白。

由于DCP理论采用了基于像素区域的最小值滤波方法, 这导致复原图像在梯度变化较大的地方会出现明显的残雾以及伪影。因此,He[11]等人又利用软抠图(soft matting,SM)方法对透射率进行细化, 尽管去除了部分残雾,但出现明显的光晕现象,且时间复杂度不理想。文献[14-15]中He等人提出引导滤波系列算法来代替SM进行透射率的细化工作,其效果和时间复杂度都有较大的提升,但是在图像中物体的边缘区域仍然留有光晕。另外,对于包含天空区域的彩色图像,其天空区域的像素强度值在任意一个通道都很高,这与暗通道理论相悖,因此在复原图像的天空区域往往会出现颜色扭曲或明显的偏色现象从而导致天空区域去雾失效。

2 本文算法

针对DCP理论算法中最小值滤波不足以及天空区域去雾失效等问题,本文提出一种基于重构暗通道的二次正弦衰减的去雾算法,算法流程如图1所示。首先利用暗通道重构(dark channel reconstruction, DCR)的方法得到重构暗通道,然后进行二次正弦函数衰减得到二次正弦衰减暗通道,为得到更加自然的透射率,设计雾密度权重函数近似计算有雾图像中的雾密度权重系数,再利用快速导向滤波并结合直方图均衡化优化透射率。最后,通过大气散射模型复原无雾图像。实验结果表明本文算法能够有效去解决光晕效应并在一定程度上去除边缘残雾,复原的无雾图像亮度、饱和度也都有所提升。

图1 本文算法流程图

2.1 暗通道重构

针对有雾图像在天空区域处理效果差的问题,我们考虑将天空区域分割出来进行特殊处理。在这里,先对输入图像进行Gamma校正以提高图像对比度效果。然后对K-Means聚类算法加以改进来进行天空区域的分割。

(1) Gamma校正

由于雾天图像在雾的干扰下,物体边缘会呈现出比较模糊的过渡状态,导致图像的对比度较低,针对这一问题,对输入图像进行Gamma校正以检测出图像信号中的深色部分和浅色部分,并使两者像素强度比例增大,从而提高图像对比度效果。矫正函数为

f(x)=I(x)γ

(7)

式中,I(x)为有雾的原始图像;γ为矫正系数,为了不影响图像的整体像素,γ取值为1.5。Gamma转换属性与图像灰度的关系图如图2所示。

图2 Gamma转换属性与图像灰度关系图

从图2中可以看出,当γ< 1时,如红线所示,灰度值在比较低的区域内的变化速度较灰度值高的区域更快,并且图像的整体灰度强度增大,称这一过程为正补偿;而当γ> 1时,则相反,称这一过程为负补偿。因此,我们遵循以下原则进行Gamma矫正来增大图像深色和浅色区域的对比度:

(8)

式中,v代表原始图像各位置的像素强度,即在像素强度大于0.5的图像区域进行Gamma正补偿,而在像素强度小于0.5的区域进行Gamma负补偿。

(2) K-Means分割

传统的K-Means算法对初始聚类中心敏感,随机选取中心点会因其波动而产生较大的误差且算法时间复杂度较大。针对这些问题,本文在选取初始聚类中心时使其间距尽可能大以降低算法复杂度和迭代产生的波动误差。

考虑到不同场景的有雾图像有不同的特征,因此在选择聚类类别数k时,首先统计原始图像的灰度直方图,然后采用Python中的Seaborn库对直方图进行曲线拟合,并计算拟合函数的极大值个数即为设定的聚类类别数k,因为图像灰度直方图的极大值个数可以大致确定图像像素的类别数,而对于有天空区域的RGB图像,其天空区域的像素强度接近255,有着明显的像素特征,因此这k个类别数一定能够充分分割出天空区域,直方图拟合如图3所示。

图3 灰度直方图拟合曲线图

(9)

(10)

(11)

式中,V是非天空区域最小通道的平均像素值。最后通过式(9)求得重构的暗通道图。具体重构效果如图4 所示。

图4 DCR过程

2.2 透射率估计

考虑到式(1)的大气散射模型是一个病态问题,He[11]等人提出的DCP理论通过采用基于局部窗口的最小值滤波器来得到暗通道图,但复原的无雾图像有明显的光晕现象,在使用导向滤波器后仍然留有较多的残雾。针对这一问题,本文提出一种利用二次正弦函数衰减重构暗通道的策略。利用二次正弦函数来衰减第2.1节中求出的重构暗通道以逼近DCP理论的结论,再利用下式求出初始透射率:

(12)

结合以上分析,本文利用二次正弦函数衰减重构暗通道来估算透射率的理论依据有以下几个方面。

(1) 二次正弦函数的有效取值范围与双精度图像像素强度范围一一对应,均在(0, 1)之间,且其函数变化趋势与DCP理论相似,都是为了使暗通道图像像素趋于0,因此进行二次正弦衰减具有可行性。

(2) 二次正弦衰减操作能够有效解决基于局部窗口的最小值滤波器所产生的光晕效应。

(3) 二次正弦衰减速度快,在一定程度上能有效降低透射率估计算法的时间复杂度。

在文献[11]中,为了得到自然地去雾效果,引入一个常参数ω来优化透射率,为了进一步体现复原图像的优化效果,本文提出雾密度权重函数来计算雾密度权重系数ω(x)代替常参数ω。对于一幅彩色图像的HSV通道,其中S为饱和度,V为明亮程度,我们知道有雾图像在景深处的V值明显很大,但其S的值明显偏小,但在雾浅处恰恰相反,但是,HSV中的V值是指RGB中的最大值,该值或多或少会受到某些单通道像素的干扰,因此通过将输入图像转换为HSI通道图来计算深度信息,其中I的值是RGB的平均值[16]。受Zhu[10]等人的启发构建物体深度系数函数:

d(x)=θ0+θ1I(x)+θ2S(x)

(13)

式中,I(x)和S(x)是输入有雾图像在HIS颜色通道的I值和S值;θ0,θ1,θ2这3个系数是通过监督学习的方式训练得来的。为了更适应自然场景中的雾浓度,构造如下雾度密度权重函数ω(x):

ω(x)=d(x)1/3

(14)

式中,ω(x)在场景深度更大的地方取值越大,在深度小的地方取值较小,而结合式(2)可知,透射率其实是和场景深度有直接关联,在同一坐标系中描绘出图5所示的ω(x)和t(x)的曲线图。

图5 雾密度权重函数和透射率与景深关系对比图

可以发现,透射率衰减的趋势和权重系数增加的趋势一一对应,因此这种方式求得的雾密度权重系数是可行且有效的。最后可以求得基于雾密度权重函数的透射率t(x):

(15)

为了使透射率更加精细化,本文基于He提出的快速导向滤波[14]进行改进来优化透射率,He是将原始有雾图像作为引导图,而本文将有雾图像先进行直方图均衡化后再作为引导图像,这样做是为了使亮度均匀分布,增加图像的全局对比度,使复原图像层次感更加明显。其效果对比图如图6所示。

图6 透射率对比图

2.3 大气光估计

大气光A估算的准确性对复原效果的亮度和饱和度有着直接的影响。根据式(1)可知,若估算的大气光值偏高,则会导致复原图像亮度偏暗。在文献[11]中,首先从暗通道图中选取像素值最大的前0.1%的像素,然后在原始有雾图像中寻找对应像素位置的最大像素点的像素值作为大气光A的值,但这种方法往往错选像素强度高的区域对应的像素值,以至于复原图像偏暗。由于全局大气光很容易受到强像素区域的影响,为了避免陷入强光源带来的复原图像偏暗的影响,本文为得到更为准确的大气光值,采用文献[17]提出的局部大气光估算方法,并在此基础上加以改进。具体步骤如下。

步骤1从第2.1节中求出的天空区域最小通道图中选取像素值最大的前0.1%的像素,然后在原始有雾图像中寻找对应像素位置的平均值作为初始的全局大气光A0。

步骤2求原始的输入的有雾图像的亮通道图Imax(x)。

步骤3再根据所求得的A0和Imax(x)求取局部大气光值A(x),即每个像素点都有对应的局部大气光值。

具体公式如下:

(16)

A(x)=aImax(x)+bA0

(17)

式中,Imax(x)为亮通道图;a和b是两个权重系数,且a+b<1.0。

2.4 图像复原

在估算了透射率t(x)和大气光值A(x)后,根据式(6)就可以复原无雾图像:

(18)

式中,常数t0是为了避免分母接近0。

本文算法主要针对含有天空区域的有雾图像,而暗通道优先算法对于没有天空区域的图像的去雾效果已经很好。由以上算法思路可知,将本文算法用于不含天空区域的图像也是可行的,即使不含天空区域的图像的暗通道整体像素较低,但不能确保此类图像就不存在局部强光源, 为了避免局部强光源的影响,进行暗通道重构是很有必要的。而且,将雾密度权重函数和快速导向滤波用于不含天空区域图像的去雾也是毋庸置疑的。为了验证本文算法对成像场景中不包含天空区域的雾图有效,特此选择一张不含天空区域图像进行实验。

3 结果和分析

文中设计的参数取值分别为:θ0=0.12,θ1=0.96,θ2=0.78,实验在Microsoft Visual Studio 2017环境下运行,操作系统为Windows 1 064位操作系统,硬件配置为Intel(R) Core(TM) i7-7500U CPU @ 2.70 GHz, 8.0 GB RAM。将本文所提出的算法与一些经典去雾算法进行比较,包括Tarel[9], Zhu[10], Fattal[8], He[11]等人提出的算法。然后从主观性和客观性分别来分析实验结果。为验证所提算法的有效性,本文选取了多组雾霾天气场景图进行实验,实验结果如图7所示。

3.1 主观评价

本文对大量的有雾图片进行实验,选取了4幅图片进行效果展示,具体的复原效果如图7所示。其中,图7(a)为有雾图像;图7(b)为He[11]等人采用DCP理论以及引导滤波系列算法的效果,在一定程度上消去了雾霾,但物体边缘的光晕现象比较明显,另外由于大气光的估算不够精确导致复原图像在天空区域出现明显的偏色现象且图像整体偏暗;图7(c)为Tarel[9]等人构建大气耗散函数并使用中值滤波器来进行近似估计,虽然可将图像的轮廓复原清晰,但在梯度跳变处仍然有光晕现象,而且复原图的饱和度过低;图7(d)为Zhu[10]等人提出的颜色衰减先验理论的去雾效果,此方法采用全局一致的大气散射系数从而导致在雾浓度高的地方去雾效果差;图7(e)为Fattal[8]等人提出的一种估算场景反照率和介质传输率的方法,从复原结果来看,在天空区域的处理效果不是很理想,而且图像的对比度和饱和度没有本质上的提高;图7(f)为本文提出的算法的复原效果,与以上算法相比,本文方法复原的图像较为清晰且亮度饱和度适中。

图7 实验结果对比

3.2 客观分析

为进一步验证本文算法的有效性,在客观数据上,本文采取可见边增加率E[18]、平均梯度比R以及运行时间T这3个评价指标加以分析。其数学表达式如下:

(19)

(20)

式中,n0是有雾图像的可见边缘的数量;nr表示复原图像的可见边缘的数量;ri是输出图像在Pi上对输入图像的梯度比;ϑi是输出图像的可见边的集合。具体的对比数据如表1所示。观察图表可知,在可见边增加率方面,本文算法和Tarel[9]提出的算法比其他算法的效果要好,说明复原图轮廓像比较清晰;在平均梯度比方面,本文算法明显优于其他算法,说明复原图像的细节特征更加明显;在运行时间方面,Zhu[10]提出的算法用时最少,本文算法时间复杂度适中,但仍有一定的进步空间。

表1 评价指标数据比较(图1到图4是图7中的4幅图)

4 结 论

为了改善暗通道先验去雾算法在天空区域失效以及最小滤波器导致出现光晕伪影和去雾不彻底等问题,本文提出一种基于重构暗通道的二次正弦衰减的图像去雾算法。该方法提出DCR的方法来重新计算暗通道图,避免了因天空区域最小通道像素强度过大而导致的天空区域去雾失效以及复原图像偏暗等问题。为了应对DCP中的光晕伪影现象,本文算法使用二次正弦函数衰减来替代最小值滤波的过滤操作,并考虑到雾浓度的影响,设计雾密度权重函数估算权重系数,从而得到初始透射率。为了得到更精确的透射率,本文利用快速导向滤波并结合直方图均衡化来优化初始透射率;在大气光估算方面,为了使复原图像亮度均衡,本文利用最大通道图来估算局部大气光。大量实验结果表明,本文算法能有效降低光晕现象的程度,并能解决天空区域的偏色和扭曲问题,而且复原图像细节清晰,色调自然。

猜你喜欢
透射率复原正弦
温陈华:唐宋甲胄复原第一人
等离子体随机分布对THz波传输特性的影响
正弦、余弦定理的应用
浅谈曜变建盏的复原工艺
毓庆宫惇本殿明间原状陈列的复原
一种改进的场景透射率修正图像去雾算法
纯色太阳镜镜片耐日光辐照性能试验研究
“美”在二倍角正弦公式中的应用
正弦、余弦定理在三角形中的应用
基于VSG的正弦锁定技术研究