基于暗通道的自适应图像去雾算法
2022-07-20孙希延黄建华时慧恩
孙希延,陶 堃,黄建华*,时慧恩
(1. 桂林电子科技大学广西精密导航技术与应用重点实验室,广西 桂林 541004;2. 桂林电子科技大学卫星导航与位置服务国家与地方联合工程研究中心,广西 桂林 541004)
1 引言
在有雾霾的天气下,大气中的水蒸气和气溶胶都会使造成光线散射现象,从而导致拍摄的图像产生颜色畸变、细节模糊的现象。对雾化图像进行去雾处理,可以在一定程度上恢复对比度低等问题。图像去雾处理主要解决的是图像特征信息模糊、灰度集中、色彩失真等问题。
目前主流图像去雾研究方法有:He提出的暗通道先验(DCP,Dark Channel Prior)方法,基于在绝大多数非天空局部区域中,像素点总会有至少一个颜色通道有很低的值的结论,将其与大气散射模型结合来计算模型参数,该算法在非天空区域的去雾效果十分有效,但是其软抠图处理耗费的时间成本极高,且对天空区域的去雾效果不尽如人意;文献[5-7]在文献[4]基础上提出了改进算法。在透射率估计时利用双边滤波和终止滤波代替最小值滤波,在一定程度上提高了算法的鲁棒性和实时性,但由于DCP对天空区域处理的先天不足,仍无法较好的处理天空区域;Tan基于无雾图像比有雾图像的对比度要高和图像大气光值趋于平滑这两点建立成本函数,通过图像分割算法或信念传递算法获得去雾复原图像,但是复原图像出现过饱和现象,并且没有建立在特定的物理模型上;Fattal基于表面阴影和传输函数是统计无关的假设,对大气散射模型进行运算分析,求得传输函数并对图像去雾,该方法较好的解决了图像失真问题,但在雾霾很浓时颜色信息较少,效果较差;Tarel提出利用中值滤波估计大气尘雾浓度,并结合暗通道先验和大气散射模型来进行去雾处理,但中值滤波器在边缘无法很好地保持,导致深度突变区域去雾不彻底;Zhu提出的颜色衰减先验(CAP,Color Attenuation Prior)方法,基于该先验知识建立模糊图像景深的线性模型。利用监督学习方法学习模型参数,能较好的恢复景深信息,对天空区域的去雾处理比较出色。
本文采用基于暗通道的自适应图像去雾算法对图像处理雾化图像,对原始雾化图像的暗通道设置阈值以区分天空和非天空区域,在天空区域利用颜色衰减先验原理,用最大似然法估计图像深度方差,再采用梯度下降法估计透射率图;在非天空区域改进了全局大气光值的求取,再通过暗通道先验求解透射率图,得到透射率图后用加权导向滤波去噪,即得到去雾后图像。仿真结果表明,与各类主流去雾算法比较,本文算法去雾主观视觉效果较好,客观评价指标较优。
2 暗通道先验原理
在计算机视觉领域,雾霾天气下的大气散射物理模型可以用下式表示:
I
(x
)=J
(x
)t
(x
)+A
(1-t
(x
))(1)
其中,I
(x
)为观察到的雾化图像,J
(x
)为无雾图像,A
为大气光值,t
(x
)为透射率表示能够达到计算机系统的没有被散射掉的一部分光。图像去雾的目的就是从雾化图像I
(x
)中恢复J
(x
)、A
和t
(x
)。对任意一幅无雾图像J
(x
),其暗通道都可以表示为(2)
其中,J
(y
)是J
的RBG通道中其中一个颜色通道,Ω
(x
)是像素点x
的窗口。暗通道先验理论指出,在无雾图像的非天空局部区域中,图像中所有的像素在RGB三颜色通道中总会存在至少一个颜色通道会出现很低的值。即
J
→0(3)
假设大气光值A
已知,利用大气光值对(1)式进行归一化处理(4)
又假设透射率局部区域Ω
(x
)是恒定不变的,计算(4)式的暗通道(5)
在无雾图像中,由于A
是确定的,根据(3)式,可得(6)
将(6)式带入(5)式,可得透射率的表达式
(7)
为了更好的视觉体验,需要人为保留一定程度的雾。因此在(7)式中引入在[0,1]区间的参数ω
,修正为(8)
以上推论都建立在全球大气光A
值时已知的基础上。而具体计算时,可以结合暗通道图和原图来获取该值。具体操作如下:从暗通道图中按照亮度大小从高到低排列,取前0.
1%
的像素点,并记录下对应坐标;在原始有雾图像I
里,寻找这些坐标对应像素点中具有最高亮度的点的值作为A
值。考虑到当透射图t
的值很小时,会导致无雾图像J
的值偏大,从而使图像整体向白场过度。因此可以设置一个阈值t
,当t
<t
时,令t
=t
,可以取t
=0.
1。最后图像恢复的最终公式为(9)
3 基于暗通道的自适应图像去雾算法
由于He提出的暗通道先验去雾只适用于非天空区域,而在实际的图像中仍有大片诸如天空区域的远景部分。因此,本文对对雾化图像分割成天空区域和非天空区域,并采用不同的方法来处理。
3.1 不同区域的分割
由于天空区域不符合暗通道先验原理,可以在暗通道图像中设置一个阈值T
,用以分割天空区域与非天空区域。即(10)
在文献[12]中,阈值T
可以使用对暗通道图像进行最佳阈值迭代的方法来进行计算。3.2 天空区域去雾
本文对于天空区域的去雾是使用颜色衰减先验原理。基于图像的深度和亮度与饱和度之差成正相关的统计原理,于是有下列关系
d
(x
)=θ
+θ
u
(x
)+θ
v
(x
)+λ
(x
)(11)
式中v
(x
)是饱和度,u
(x
)是亮度,d
(x
)是深度,θ
,θ
,θ
是线性系数,ε
(x
)是随机变量表示模型的随机错误,可以视其为随机图。令ε
(x
)~N
(0,σ
),即有:d
(x
)~N
(θ
+θ
u
(x
)+θ
v
(x
),σ
)(12)
式中,亮度u
(x
),饱和度v
(x
)已知,需计算θ
,θ
,θ
,σ
的值,深度d
(x
)目前不可测量。本文使用最大似然估计法来计算大气散射模型为
I
(x
)=J
(x
)t
(x
)+A
(1-t
(x
))t
(x
)=e-()(13)
对于联合概率密度函数,假设每个像素的出错概率是相互独立的,有
(14)
其中,n
表示像素总数,L
表示似然函数,结合(12)(14),可得(15)
采用最大似然估计求取σ
,有(16)
采用梯度下降法估计线性参数θ
,θ
,θ
的值,有(17)
(18)
(19)
估计出θ
,θ
,θ
后带入(11)式,可以求解出深度图d
(x
),将d
(x
)带入(13)式即可求得透射率图t
(x
)。3.3 非天空区域去雾
非天空区域的去雾可以使用暗通道先验原理,本文对暗通道先验的全局大气光值做了优化,其它步骤与暗通道先验相同。
在暗通道先验中是取暗通道图亮度前0.
1%
的像素对应有雾图像中的亮度最高的点的值为全局大气光值,这作为先验大气光值并不是很特别准确,会导致先验大气光值与实际大气光值之间有较大的误差。本文采用加权平均求全局大气光值,设图像像素总数为N
,天空区域像素总数为n
,输入雾天图像的暗通道为(20)
则加权平均计算的全局大气光强可以表示为
(21)
3.4 加权导向滤波
上述去雾步骤处理后的图像仍存在较多噪声,因此需要使用一个滤波器进行图像去噪,本文采用加权导向滤波对图像进行去噪。下面介绍加权导向滤波流程。
假设在一个以r
为半径的确定窗口,输出图像q
和引导图像H
在滤波窗口ω
上存在局部线性关系q
=a
H
+b
,∀i
∈ω
(22)
(a
,b
)也是在滤波窗口ω
唯一确定的常量系数,且对于相邻像素点而言,存在∇q
=a
∇H
,也就确保了一个确定的局部区域β
内,滤波图像H
有一个边缘时,输出图像q
也能够保持边缘不变。因此只要求出系数a
,b
也可推导得输出图像q
。输入图像中边缘区域又不平滑的地方记为噪声n
,有q
=p
-n
,导向滤波的目标是使这个噪声降到最低。对于所有滤波窗口ω
,使用最小二乘法求最优解可以表示为(23)
为了防止出现光晕现象,即避免a
的值过大,这里引入一个正则化参数ε
,在滤波窗口ω
内的损失函数可以表示为(24)
(25)
式中,Γ
()为引导图像H
中像素点的权值,定义为(26)
(27)
(28)
计算可得a
,b
(29)
(30)
将(30)式带入(29)式,得
(31)
(32)
至此,会发现一个问题,在整个图像的滤波窗口中使用上述线性模型时,每一个像素点都会位于几个不同的滤波窗口中。例如,在使用4*4的滤波窗口时,除了边缘区域的每个像素点都会包含于16个窗口里。因此,对于不同的窗口,做如下处理:得到|ω
|个q
值,就对所有的q
值取平均,得到最终结果(33)
本文方法流程如图1所示。
图1 算法流程图
4 实验结果与分析
为验证本文算法的实际效果,将本文与文献[4]、文献[9]、文献[10]的仿真结果进行对比,将从主观和客观两个方面对仿真结果进行评价。实验测试环境:CPU为Inter Core i7-7700,显卡为NVIDIA GT730,操作系统为WIN10,仿真软件为Matlab2017a。
图2 不同算法的去雾恢复效果对比图
4.1 主观评价
这里选取He,Fattal,Tarel的算法与本文算法进行对比,如图2所示,场景1、场景4是不含天空区域的图像,场景2、场景5是含有大片天空区域的图像,场景3是含有小片天空区域的图像。通过观察可以发现,He的算法在天空区域的颜色过饱和,Fattal和Tarel的算法处理后在场景5出现了明显的光晕。与上述文献方法处理结果相比,在处理含有不同面积的天空区域的图像时,本文算法处理后的图像去雾效果明显,在整体上能较好地保持了细节,复原的颜色也较为自然;处理天空区域时避免了其它算法中出现的过饱和现象,也极大地减弱了光晕效应。
4.2 客观评价
本文使用图像的信息熵、平均梯度和峰值信噪比作为图像去雾效果的客观评价标准,用以对比本文算法与He、Fattal、Tarel等人算法的去雾效果。
4.2.1 图像的信息熵
图像的信息熵表示图像所包含的平均信息量的多少,信息熵的值越大,则所含信息量越多,也就是图像质量更好。
表1 复原图像信息熵
由表1可知本文算法处理后的图像信息熵比其它算法的都大,说明本文算法处理后的图像所包含的信息量和图像质量更高,优于所列的其它算法。
4.2.2 图像平均梯度
图像平均梯度衡量了图像的清晰度,反映了图像中的去雾效果,平均梯度的值越大说明图像去雾效果越好。
表2 复原图像平均梯度
由表2可知本文算法处理后的图像平均梯度比其它算法的都大,说明本文算法的细节和纹理特征更突出,去雾的效果更好,优于所列的其它算法。
4.2.3 图像峰值信噪比
图像峰值信噪比表示去雾处理后图像的复原质量和失真程度,峰值信噪比越大,图像复原质量越高,失真程度越小。
表3 复原图像峰值信噪比
由表3可知本文算法处理后的图像平均梯度比其它算法的都大,说明本文算法处理后的图像复原质量和失真程度优于所列的其它算法。
5 结论
本文提出一种基于暗通道的自适应去雾算法,并通过理论分析和实验仿真验证了算法的可行性和优越性。主要得到以下结论:
1)针对暗通道先验不适用于含天空区域的雾化图像,提出分割天空与非天空区域,并采用不同的先验假设分别用于不同区域,提高了去雾算法对雾化图像适用性。
2)天空区域去雾使用颜色衰减先验,并使用梯度下降法计算透射率,可以有效地恢复雾化图像的天空区域,避免出现过饱和现象。
3)用加权平均法对暗通道先验的全局大气光值进行求解,使得去雾后的非天空区域更自然。
4)利用加权导向滤波进行去噪处理,极大地减弱了光晕现象,提高了天空与非天空区域边缘的清晰度,更好地保存了图像整体性。
5)在相同实验测试环境,并处理相同雾化图像时,本文所提算法在主观和客观评价中均优于主流的去雾算法。
6)本文提出算法,在图像复原,无人机监测,智能驾驶等领域,都有广阔的应用前景。