在雾霾环境下,由于大气中粒子的散射作用,使得户外拍摄的图像能见度和对比度降低,图像颜色信息不同程度地丢失,导致图像严重降质,影响了图像的视觉效果和图像特征的提取。这不但影响了视频监控检测、卫星导航、地形勘测等在计算机视觉领域的应用和发展,还带来了严重的安全隐患,因此,对有雾图像的清晰化处理具有重要的现实意义。
目前为止,图像的去雾算法主要分为两种:一类是基于图像增强的处理方法,雾天图像增强方法不考虑图像降质原因,试用范围广,能有效地提高有雾图像的对比度,突出图像的细节,改善图像的视觉效果;但对于突出部分的信息会造成一定损失,图像增强方法具有主观性。另一类是基于大气散射物理模型的方法。这类方法基于物理模型利用大气散射模型,利用先验知识,通过求解图像降质过程的逆过程来恢复清晰图像,此方法具有客观性。大气散射模型中包含三个未知参数,所以这是一个欠定方程,无法直接求得场景深度或者大气条件信息。现有方法多数是利用有雾图像本身构造的约束条件来估计模型中的参数,最终还原场景的反照率。
Narasimhan等[1-4]提取不同天气下的同一场景的多幅彩色图像的景深,并根据大气散射模型恢复图像。Tan[5]假设局部区域中的大气光为常数,构造边缘强度的代价函数,使用图分割理论估计大气光,最大化局部对比度来达到去雾的目的;但该方法无法获得真实场景反照率,恢复图像过饱和,且在景深突变处会出现光晕。Tarel等[6]利用中值滤波估计估计大气散耗函数,该方法恢复的图像清晰逼真;但中值滤波边缘保持的缺点导致在景深突变处去雾能力较差,参数设置不当会引起Halo(光晕)效应。Fattal[7]假设图像局部区域的反照率为常数,以及局部反照率和物体表面色度局部不相关,利用独立成分分析来估计反照率;该方法去雾效果依赖于输入数据的统计特性,当独立成分不显著或颜色信息不足将导致统计估计不可靠。 He等[8]所提算法假设在至少一个颜色通道的局部区域内,反照率趋于零,使用最小值滤波对介质传播函数进行估计,借助图像软抠图对介质传播函数细化;这种利用大规模稀疏线性方程组求解问题耗费大量的时间和空间,并且该方法处理含有天空区域和场景中含有白亮物体的图像会导致严重失真,去雾不彻底。He等[9]提出使用导向滤波代替软抠图细化透射率图,这大大降低了算法的复杂度;但是选取有雾图像作为导向图导致去雾不彻底。杨燕等[10]提出利用最小值图像的局部最大值作为导向图估计大气散射函数,由于导向图是灰度图像,提高了运算的效率,并且大气耗散图保持了局部平稳且在景深突变处边缘保持的特性;但处理图像也存在去雾不彻底的现象。韩正汀等[11]提出对最小值图像与其双边滤波图像的差异图像进行双边滤波处理,再与最小值图像求差得到二次差异图像,利用差异图像得到导向图;虽然在求解导向图过程中进行了深度处理,但远景去雾效果仍然较差。
针对上述几种方法去雾不彻底、场景边缘出现Halo效应的问题,本文基于双边滤波和导向滤波,提出一种基于导向图优化的单幅图像深度去雾算法。本文算法思路如下:首先,通过双边滤波和中值滤波最小值图像得到局部均值和标准差,平均近似最小值减去三倍方差得到新的导向图;然后,根据导向图的强度定义一类暗区域,若该区域像素点强度较大则使用最小值图像代替,采用He等[12]提出的快速引导滤波获得大气散耗图;最后,根据大气散射物理模型恢复清晰图像。该方法有效去除了Halo效应,近景去雾彻底,远景处去雾效果显著,特别是图像边缘清晰,细节丰富,整体色彩真实自然。
1 大气散射物理模型大气散射物理模型是由McCartney提出来的,近期几乎所有基于物理模型的方法均建立在该模型之上,只是利用方式的不同,该模型描述了雾化图像的退化过程:
$I(x)=J(x)t(x)+A(1-t(x))$ | (1) |
其中:I(x)为已知的有雾图像;J(x)为场景反照率;即清晰的无雾图像;A为无穷远处的大气光强;t(x)为透射率。透射率t(x)可表示为:
$t(x)={{e}^{-\beta d(x)}}$ | (2) |
其中:β为大气散射系数,与可见光的波长有关,β=1/λr(0≤r≤4) ,r值取决于大气中悬浮的微粒大小,微粒越大,r值越小,对于浓雾,r≈0,此时的β近似为常数;d(x)为场景的深度,即成像设备与场景之间的距离。
由式(1) 可知,大气散射物理模型由两部分组成:第一项J(x)t(x)为衰减模型,描述了从场景点传播到观测点之间的削弱过程;第二项为大气光模型,描述了周围环境光中的各种光经过大气粒子散射后,对观测点所观测到的光强的影响。本文中对大气光A的估计采用文献提出的方法:从暗通道图中按照亮度的大小取前0.1%的像素,在这些位置中寻找对应原始图像具有最高亮度点的值作为A的值。透射率t(x)的取值与大气散射系数和景深有关,无法直接求解。在此引入大气耗散函数V(x),其表达式为:
$V(x)=A(1-t(x))$ | (3) |
通过估算出大气耗散函数V(x)和大气光强A便可间接求得透射率t(x)。
2 结合双区域滤波的导向图求解引导滤波是通过一幅导向图像对输入图像进行滤波,输出的图像在保证输入图像整体特征的同时,能充分获取导向图像的变化细节。理想的导向图应该具有以下特征:1) 保持在边缘处的特征;2) 图像景深相近处趋于平滑;3) 导向图与输入图像尽可能相近,使线性回归方法所得的代价函数最小化,最终减小输入输出图像的差异。He等[9]算法用引导滤波算法代替软抠图过程,暗通道图像结合大气光A计算得到初始透射图,再对初始透射图进行引导滤波得到精确的透射图,最后根据大气散射模型恢复图像。在估计暗通道图像时,使用最小值滤波器对最小值图像滤波具有其固有的缺陷。最小值滤波器的原理是将窗内的周围像素和中心像素排序,然后将中心像素和最小值像素比较,如果中心像素比最小值像素强度值小,则替换中心像素为最小值。最小值滤波可以去除图像中的亮斑,同时也会增大暗区域的面积。如图 1所示,区域所示为滤波窗口,当滤波窗口处于景物突变的边缘时,A侧为像素强度值小的暗区域,B侧为像素强度值大的亮区域,且窗的中心像素位于强度值大的C区域中,经过最小值滤波,中心像素即图中红点处会被窗内强度值最小的像素代替,滤波后C区域成为一条强度值介于A、B区域的灰暗的过渡带,场景边缘也被模糊,整个C区域像素强度就会被错误的估计,这导致整个图像的场景边缘出现一条“模糊带”,所以暗区域的面积被放大,恢复的图像出现明显的Halo现象。图 1中Δ所示曲线为滤波窗边缘。
文献中使用原有雾图像作为导向图,具有RGB三通道的彩色图像不但大大增加了算法的空间时间复杂度,而且会使景深相同处的细节过于丰富,不够平滑,去雾不够彻底。文献[10]取最小值图像的局部最大值作为导向图,同样也出现了去雾不彻底的问题,在远景区域尤为明显,如图 2线框内区域所示,并且场景边缘处出现Halo现象。引导滤波在导向图的引导下使输出的图像与输入图像差异最小化,上述两种方法的导向图是雾图或者初始滤波图,其纹理细节模糊不清,特别是在场景的边缘处信息丢失,输出图像无法保留导向图像的变化细节,这是导致最终去雾不彻底的主要原因之一。文献[11]方法对导向图作了深度处理,导向图是灰度图像,但是二次差异图像不够平滑,导致在远景处去雾效果不理想。
本文对导向图进行深度滤波处理,本文导向图的求解如下。
首先对有雾图像的RGB通道取最小值,得到W:
$W(x)=\underset{c\in \{R,G,B\}}{\mathop{min}}\,({{I}^{c}}(x))$ | (4) |
其中c为3个颜色通道R,G,B中的某一通道。
对最小值图像进行双边滤波得到边缘保持的局部均值图B:
$B(x)=Bil(W(x))$ | (5) |
对最小值和局部均值图像差值的绝对值进行中值滤波得到标准差:
$δ(x)=med(|W(x)-B(x)|)$ | (6) |
局部均值图减去三倍的标准差得到导向图:
${{g}_{guide}}(x)=B(x)-3\delta (x)$ | (7) |
式(7) 中使用中值滤波得到标准差,进而通过局部均值与标准差取差值得到导向图。
传统的计算标准差求解式:δ(x)=med(|I(x)-W(x)|),文献[13]的求解方法:δ(x)=Bil(|I(x)-W(x)|)。均值滤波虽然能平滑图像,速度较快,但是中值滤波无法滤除噪声,只能弱化噪声,不能很好地保持边缘细节,这样很容易导致标准差δ在突变的边界处都大于它所在区域的均值,产生Halo效应。双边滤波既能保持图像平滑,又能保留边缘特征,但文献[13]对最小值图像进行双边滤波后,又一次使用双边滤波处理得到标准差。一方面双边滤波无法滤除高频成分,只能对低频成分较好地滤除。而对最小值图像W双边滤波后得到平滑边缘保持的局部均值图B,最小值图像W与局部均值图B做差值后,在局部区域会出现强度较低的脉冲噪声,而中值滤波器恰好能有效地去除脉冲噪声。另一方面,中值滤波较双边滤波复杂度低,实现速度更快。所以对标准差求解使用中值滤波是更好的选择。
在导向图定义一类暗区域,当导向图的像素强度大于最小值图像时,用最小值图像代替。得到最终的导向图g(x):
$g(x)=\left\{ \begin{matrix} {{g}_{guide}}(x),{{g}_{guide}}(x)\le W(x) \\ W(x),{{g}_{guide}}(x)>W(x) \\ \end{matrix} \right.$ | (8) |
图 3列出了文献算法、文献导向滤波算法和本文算法的导向图。
由式(3) 可知,大气散射函数应当满足两个约束条件:1) 每个像素点处的取值都为正,即V(x)>0;2) 大气散射图在每个像素点处的取值不大于雾化图像的最小颜色分量,即V(x)≤W(x),W(x)即为式(4) 。
本文采用引导滤波估计大气散耗图,暗通道图g(x)作为导向图,滤除W(x)中的噪声,可以得到局部平稳且在景深突变处边缘保持的大气散耗图。引导滤波克服了双边滤波梯度反转的弊端,具有局部线性的平滑保持边缘的滤波性质,其表达式为:
${{q}_{i}}={{a}_{i}}{{I}_{i}}+{{b}_{i}};i\in {{\omega }_{k}}$ | (9) |
其中:Ii为导向图;qi是滤波器的输出图像;ai、bi是以k为中心的窗口ωk内的系数,在窗口内为固定值。由式(9) 可得,∇q=a∇I,线性模型保证了窗口中Ii有边缘时,qi才会产生相应的边缘。引导滤波是在图像Ii的引导下使输入图像和输出图像相差最小的局部线性滤波器,利用线性回归方法求得窗口代价最小的窗口系数。在窗口ωk中的代价函数为:
$E({{a}_{k}},{{b}_{k}})=\sum\limits_{i\in {{\omega }_{k}}}{[{{({{a}_{k}}{{I}_{i}}+{{b}_{k}}-{{p}_{i}})}^{2}}+\varepsilon a_{k}^{2}]}$ | (10) |
式中ε是防止a过大的调整系数。通过回归分析可以得到(ak,bk)的最优解表达式如下:
${{a}_{k}}=\frac{\frac{1}{|\omega |}\sum\limits_{i\in {{\omega }_{k}}}{{{I}_{i}}{{p}_{i}}-{{\mu }_{k}}\overset{-}{\mathop{{{p}_{k}}}}\,}}{\sigma _{k}^{2}+\varepsilon }$ | (11) |
${{b}_{k}}=\overset{-}{\mathop{{{p}_{k}}}}\,-{{a}_{k}}{{\mu }_{k}}$ | (12) |
其中:|ω|为窗口ωk中的像素数;σk2与μk分别为窗口ωk中I的方差与均值;k为窗口中p的均值。由于点i可能被包含在多个窗口中,不同的窗口ak、bk的取值也不一样,因此需要计算以点i为中心的窗口内ak、bk的平均值,然后求出qi的值:
${{q}_{i}}=\frac{1}{|\omega |}\sum\limits_{k\in {{\omega }_{k}}}{({{a}_{k}}{{I}_{i}}+{{b}_{k}})}=\overset{-}{\mathop{{{a}_{i}}}}\,{{I}_{i}}+\overset{-}{\mathop{{{b}_{i}}}}\,$ | (13) |
由于式(10) 的输入输出差异最小化的条件限制,输出图像保留了输入图像的总体特征,同时由于式(9) 建立的线性模型,滤波结果能充分获取导向图像的变化细节。
通过式(8) 所得的导向图,滤除W(x)中的纹理细节,可以得到局部平稳并且在景深突变处保持边缘的大气耗散图V0(x),即:
${{V}_{0}}(x)=guidfilter(g(x),W(x))$ | (14) |
其中V0(x)是对W(x)引导滤波后得到的大气散耗函数的粗略估计。得到的大气散耗图V0(x)局部平稳且在景深突变处较好地保持了图像边缘,由于导向图g(x)是灰度图像,大大降低了算法复杂度,极大地提高了运算速度。
对于雾化图像来说,图中场景与成像设备的距离越远雾霾越浓,大气散射光的取值就会越大,场景也就会越模糊,导致对比度降低;相反,大气光的取值较小,对比度较高。因此,可以通过图像的对比度来估计场景与成像设备的距离,用上文中的最小值图像及其滤波图像差值的绝对值δ(x)表征对比度。当对比度较大时,说明是近景区域;相反,为远景区域。当大气散射光本身取值较大时,错误判断的可能性较大,根据文献[12]结合大气光和对比度得到精确的大气散耗函数:
${{V}_{c}}(x)={{V}_{0}}(x)-{{V}_{0}}(x)\delta (x)/A$ | (15) |
式中:δ(x)/A用来衡量像素点x的相对亮度值,当雾较浓时,V0(x)较大,对比度δ(x)较小,得到较大的大气耗散函数Vc(x);若近景处V0(x)较大时,其对比度δ(x)也较大,得到较小的大气耗散函数Vc(x)。这样大气耗散函数的估计便剔除了大气光因素的影响,从而得到精确的大气散耗函数值。使用式(16) 约束大气散耗函数Vc(x)的上下限值:
$V(x)=max(min(\lambda {{V}_{c}}(x),W(x)),0)$ | (16) |
其中λ为调整因子,本文设定值为0.9,旨在保留远景处一定的雾,以增加深度感和真实感。
4 还原图像得到准确的大气耗散函数V(x)和大气光A后,利用式(3) 得到透射率表达式:t(x)=1-V(x)/A。
对于天空区域以及明亮物体区域透射率估计出现偏差,这是因为在明亮的天空区域以及明亮物体区域即使在无雾的条件下,它们的像素值也很大,在这些区域内找不到像素值接近0的暗原色点,所以暗原色先验规律在这些区域不成立。为了克服这个缺点,就需要调整明亮区域的透射率弱化该区域雾的影响。可以根据最小值图像W(x)与大气光A的距离来判断该区域是否为明亮区域,引入参数K,对于|W(x)-A|小于K的区域认为是明亮区域,需要重新计算透射率。根据文献[14]对于|W(x)-A|大于K的区域保持原透射率不变,此处K取80,归一化后取K=80/255。调整后的透射率为t1,其表达式为:
$\begin{align} & {{t}_{1}}(x)=\left\{ \begin{matrix} t(x),|W(x)-A|\ge K \\ \frac{K}{|A-W(x)|}t(x),|W(x)-A|<K \\ \end{matrix} \right. \\ & \\ \end{align}$ | (17) |
本文实验是在处理器为Intel Core 2 Duo CPU T6600 2.20 GHz的32位操作系统的PC上使用Matlab 7.8.0 (R2009a)进行仿真。实验参数:双边滤波半径为5,定义域和值域方差分别为3、0.1;快速引导滤波半径为56,调整系数为0.01,抽样率s为局部窗口半径的1/4。
由于文献[9-10]的算法都是基于大气散射物理模型和暗通道先验,所以将本文算法与文献[9]的暗通道先验的引导滤波算法、文献[10]提出的基于引导滤波的自适应去雾算法进行去雾效果比较。如图 4所示,通过各算法去雾效果对比可以看出,文献[9]算法处理存在明亮区域的有雾图像时,会造成图像整体色彩失真,如图 5(b)、6(b)和7(b),并且文献[9]算法将有雾图像作为导向图不但增加了算法的复杂度,而且存在去雾不彻底的现象,如图 2(c)、图 6(b)、8(b)所示;文献[10]提出将最小值图像的局部最大值作为导向图,导致白色物体边缘像素强度值增大,出现白色的晕,虽然去雾速度得到了一定的提高,但是远景去雾效果较差,去雾不彻底,在景深突变处出现了Halo现象,如图 2(b)、图 5(c)、6(c)、 7(c)和8(c)远景去雾不彻底,图 4线框内所示出现的Halo现象。相比文献[9]算法和文献[10]的算法,利用本文算法得到的去雾图像,在保证近景去雾效果的同时,远景去雾效果也得到了改善,明亮区域恢复更为真实。通过将导向图双区域滤波,图像的色彩饱和度进一步提升。如图 5(c)、5(d)所示,本文算法与文献[10]的算法相比在远景处去雾更好,近景去雾更加彻底,色彩饱和度得到加强。如图 7(c)、7(d)图像,本文算法消除了白晕,细节更加清晰丰富,如图中线框标记区域。对比图 8(b)、8(c)和8(d)以及图 9(b)、9(c)和9(d),本文算法在天空区域恢复效果明亮自然,远景去雾效果更好,近景去雾更彻底。因此,本文的整体去雾效果好于文献[9]算法和文献[10]的算法。
为了更全面评价去雾效果,本文采用Hautière等[15]提出的基于可见边的对比度增强评估方法和文献[16]提出的图像去雾的无参考客观质量评价方法。基于可见边的对比度增强评估方法结合对数图像处理模型求取对比度,参考指标为恢复后的新增可见边之比(e)、可见边的规范化均值();图像去雾的无参考客观质量评价方法从细节强度、色调还原强度和结构信息三个方面得到综合评价指标(Q)。当e、和Q这三项指标的值越大,表明去雾效果越好,其表达式为:
$e={{n}_{r}}-{{n}_{0}}/{{n}_{0}}$ | (18) |
$\overset{\_}{\mathop{r}}\,=exp(\frac{1}{{{n}_{r}}}\sum\limits_{{{P}_{i}}\in {{\wp }_{r}}}{log{{r}_{i}}})$ | (19) |
其中:n0表示退化图像的可见边数目;nr表示恢复图像新增加的可见边数;ri是恢复图像Pi处梯度与退化图像Pi处梯度的比值;Ωi是恢复图像的可见边的集合区域。表 1给出了各算法的去雾结果的新增可见边之比、可见边的规范化均值和综合评价指标Q的值。通过将文献[9]算法、文献[10]的算法与本文的算法数据比较可得,本文算法的新增可见边之比、可见边的规范化梯度均值和综合评价指标Q的值都较高,所以,本文算法的去雾效果更好。
本文对基于暗原色先验和引导滤波的去雾算法进行了理论分析和实验观察,指出其不足之处,基于双边滤波和导向滤波,提出一种基于导向图优化的单幅图像深度去雾算法。通过双边滤波和中值滤波最小值图像得到局部均值和标准差,用平均近似最小值减去三倍方差得到新的导向图;然后,根据导向图的强度定义一类暗区域,通过与最小值图像进行比较获取最优的导向图,采用快速引导滤波获得大气散耗图,最后根据大气散射物理模型恢复清晰图像。有效去除了Halo效应,与以前的引导滤波算法相比,对导向图进行了深度处理,导向图更加平滑,所以取得了近景去雾彻底、远景去雾明显的效果,达到了深度去雾的恢复效果。此外,去雾图像整体细节丰富,整体色彩真实自然。但本算法存在一定的局限性,对有雾夜景图像和部分雾气较浓的图像修复效果不明显。下一步的工作是改进双边滤波和引导滤波算法,降低算法的复杂度,进一步提高去雾速度。
[1] | NARASIMHAN S G, NAYAR S K. Chromatic framework for vision in bad weather[C]//Proceedings of the 2000 IEEE Conference on Computer Vision and Pattern Recognition. Washington, DC:IEEE Computer Society, 2000, 1:598-605. |
[2] | NARASIMHAN S G, NAYAR S K. Vision and the atmosphere[J]. International Journal of Computer Vision, 2002, 48 (3) : 233-254. doi: 10.1023/A:1016328200723 |
[3] | NARASIMHAN S G, NAYAR S K. Interactive (de) weathering of an image using physical models[C]//Proceedings of the 2003 IEEE Workshop on Color and Photometric Methods in Computer Vision. Washington, DC:IEEE Computer Society, 2003:1-8.http://www.docin.com/p-547330288.html?qq-pf-to=pcqq.c2c |
[4] | NARASIMHAN S G, NAYAR S K. Contrast restoration of weather degraded images[J]. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2003, 25 (6) : 713-724. doi: 10.1109/TPAMI.2003.1201821 |
[5] | TAN R T. Visibility in bad weather from a single image[C]//CVPR 2008:Proceedings of the 2008 IEEE Conference on Computer Vision and Pattern Recognition. Washington, DC:IEEE Computer Society, 2008:1-8. |
[6] | TAREL J P, HAUTIERE N. Fast visibility restoration from a single color or gray level image[C]//CVPR 2009:Proceedings of the 2009 IEEE Conference on Computer Vision and Pattern Recognition. Piscataway, NJ:IEEE, 2009:2201-2208. |
[7] | FATTAL R. Single image dehazing[J]. ACM Transactions on Graphics, 2008, 27 (3) : Article No. 72. |
[8] | HE K, SUN J, TANG X. Single image haze removal using dark channel prior[J]. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2011, 33 (12) : 2341-2353. doi: 10.1109/TPAMI.2010.168 |
[9] | HE K, SUN J, TANG X. Guided image filtering[J]. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2013, 35 (6) : 1397-1409. doi: 10.1109/TPAMI.2012.213 |
[10] | 杨燕, 白海平, 王帆. 基于引导滤波的单幅图像自适应去雾算法[J]. 计算机工程, 2016, 42 (1) : 265-271. ( YANG Y, BAI H P, WANG F. Single image adaptive defogging algorithm based on guidance filtering[J]. Computer Engineering, 2016, 42 (1) : 265-271. ) |
[11] | 韩正汀, 路文, 杨舒羽, 等. 基于导向滤波优化的自然图像去雾新方法[J]. 计算机科学与探索, 2015, 9 (10) : 1256-1262. ( HAN Z T, LU W, YANG S Y, et al. Improved natural image dehazing algorithm based on guided filtering[J]. Journal of Frontiers of Computer Science & Technology, 2015, 9 (10) : 1256-1262. ) |
[12] | HE K, SUN J. Fast guided filter[EB/OL].[2016-03-05] . https://arxiv.org/pdf/1505.00996v1.pdf. |
[13] | 王一帆, 尹传历, 黄义明, 等. 基于双边滤波的图像去雾[J]. 中国图象图形学报, 2014, 19 (3) : 386-392. ( WANG Y F, YIN C L, HUANG Y M, et al. Image haze removal using a bilateral filter[J]. Journal of Image and Graphics, 2014, 19 (3) : 386-392. ) |
[14] | 蒋建国, 侯天峰, 齐美彬. 改进的基于暗原色先验的图像去雾算法[J]. 电路与系统学报, 2011, 16 (2) : 7-12. ( JIANG J G, HOU T F, QI M B. Improved algorithm on image haze removal using dark channel prior[J]. Journal of Circuits and Systems, 2011, 16 (2) : 7-12. ) |
[15] | HAUTIÈRE N, TAREL J P, AUBERT D, et al. Blind contrast enhancement assessment by gradient ratioing at visible edges[J]. Image Analysis & Stereology, 2008, 27 (2) : 87-95. |
[16] | 李大鹏, 禹晶, 肖创柏. 图像去雾的无参考客观质量评测方法[J]. 中国图象图形学报, 2011, 16 (9) : 1753-1757. ( LI D P, YU J, XIAO C B. No-reference quality assessment method for defogged images[J]. Journal of Image and Graphics, 2011, 16 (9) : 1753-1757. ) |