融合暗通道和颜色衰减先验的图像去雾算法
2018-08-22戢凯王晓峰
戢凯,王晓峰
(上海海事大学信息工程学院,上海 201306)
0 引言
最近几年,自然环境愈发恶劣,雾霾天气频发,这在影响人们正常生产生活的同时,也对自然景观取景后图像的可视性和可理解性造成严重的削弱作用,自然环境有雾状态下的取景作为情况之一更是不可避免。因此,去雾算法研究成为近几年图像处理领域的热点问题,且具有重要意义。
随着国内外学者的持续研究,提出了多种雾天图像去雾方法。方法主要分为两类:基于图像增强的方法和基于图像复原的方法[1]。第一类方法中比较典型的有直方图均衡算法[2]、Retinex方法[3]和Fattal方法等。这类方法从人类的视觉感知入手,增强有雾图像的对比度或矫正图像中的颜色从而增强图像的可视性。该类方法未从根本上去雾,因此去雾效果不明显。第二类方法通过建立大气散射物理模型,对有雾图像从物理成因的角度进行建模,通过求模型的逆过程来还原无雾图像。求大气散射模型的逆过程属于病态问题的求解,因此基于概率统计获取无雾图像先验信息的方法成为该类方法处理图像去雾问题的主要手段,并且用这种方法取得了较好的图像复原效果。例如,文献[5]提出暗通道先验知识去雾,该方法直接从单幅有雾图像中获取介质传输图,通过求解有雾图像成像的逆过程去雾,达到了对一般场景的较好的去雾效果,但该方法存在着对天空区域的不适用性和图像边缘的光晕效应缺陷。文献[6]考虑到同幅有雾图像的景深信息和颜色信息,解决了暗通道去雾中的光晕效应;文献[7]用引导滤波的方法替代文献[5]中的软抠图算法细化介质传输图,但细化后的透射率不够准确,仍会出现光晕效应;文献[8]受暗通道先验去雾的启发,运用流水线作业方式计算介质传输图,根据图像边缘信息对介质传输图作选择,提高了图像去雾的效率,但仍会出现光晕效应和天空区域图像失真现象。
针对上述文献中图像去雾算法存在的天空区域图像失真问题,本文提出融合暗通道先验和颜色衰减先验的去雾算法。先利用局部标准差函数和自适应阈值大津算法分割出原图像的天空区域和非天空区域,然后针对不同区域选择相应方式获取介质传输图,对分割边缘的介质传输图用均值滤波方法作平滑,最后对去雾后的图像作亮度增强处理。并且提出用天空区域的方差值和来衡量本文算法在解决天空区域失真问题的效果,理论分析和实验结果表明,本算法在一定程度上解决了暗通道先验去雾算法在天空区域的色彩失真问题,具有更好的去雾效果和更大的适用性。
1 模型及先验
1.1 大气物理散射模型
计算机视觉研究领域中,广泛被用于雾霾图像的物理模型[8]是:
式中,I(x,y)表示有雾图像,J(x,y)表示待恢复图像,A表示取景环境中的大气光值,t(x,y)为相应(x,y)处的介质传输图,又称透射率,且该值与图像像素点对应的景深存在关系[9]:
式(2)显示有雾图像的介质传输图与景深呈指数相关关系,如果景深值d(x,y)已知,即可求得介质传输图td(x,y)。从单幅有雾图像中恢复出无雾图像的过程即是运用此式从I(x,y)中算得J(x,y)的值。由于A,t未知,因此由物理模型得到无雾图像的恢复过程属于病态问题的求解。
1.2 暗通道先验
文献[5]通过统计大量无雾图像,发现自然景观图像中非天空或非大片白色区域的像素点中,总有一些像素点在某个通道的值很小且接近于0,即对于无雾图像J,其暗通道定义为:
根据(3)式,对(1)式作变形和取最小值处理:
1.3 颜色衰减先验
文献[9]通过统计大量有雾图像,发现其像素的亮度和饱和度变化与图像场景中雾气的浓度有关系,由于大气环境中雾的叠加效应,雾浓度间接反映了图像场景中的景深信息,景深越大的地方,叠加的雾层越多,雾浓度越大,因此,有雾图像像素亮度和饱和度与雾浓度的关系可转化为亮度和饱和度与景深的关系。图1(c),(d)分别显示了雾天图像像素点的亮度值和饱和度值随图像场景景深的变化关系。
文献[9]提出,有雾图像的亮度与饱和度的差值与景深呈线性关系,其表达式为:
其中,i(x,y)为像素点(x,y)处的亮度值,s(x,y)为像素点(x,y)处的饱和度值,θx为系数,取值分别为θ0=0.121779,θ1=0.959710,θ2=-0.780245,由此式可知,获得有雾图像的亮度值和饱和度值之后,即可求得景深值。
2 本文算法
图1 输入图像,图像亮度、饱和度随景深的变化关系
文献[5]中暗通道先验去雾方法在天空和大片白色区域出现颜色失真问题,这说明在该区域暗通道先验知识去雾方法不适用,受颜色衰减先验的启发,在包含大片白色的天空区域,用颜色衰减先验矫正暗通道先验获取到的介质传输图。由文献[9]可知,有雾图像的亮度与饱和度的差值与景深呈线性关系,具体表现如图1(b)所示,分析该变化曲线可知:景深值较大时,线性关系明显。统计大量包含天空区域的有雾图像,发现在同幅有雾图像中,天空所在的大片白色区域往往在景深较大的地方。因此,在天空或大片白色区域,由较为明显的线性关系获得更为准确的景深值d(x,y),通过式(2)景深与介质传输图的关系,即可求得更准确的介质传输图。因此用颜色衰减先验矫正暗通道先验在天空区域的介质传输图,增强了暗通道先验估计出的介质传输图的准确性,从而解决暗通道先验去雾在天空区域的色彩失真问题。
为防止两种不同方式获取的介质传输图的差异造成的去雾后图像失真,在两种方法获得的介质传输图的邻接像素点处,用均值滤波的方法作平滑。然后根据大气物理模型求得去雾图像,最后,结合人眼视觉对图像亮度更敏感原理,增强去雾后图像的亮度值,得到最终的去雾后图像,改进的算法流程图如图2所示。
图2 改进算法流程图
2.1 天空区域分割
在有雾图像的天空区域用颜色衰减先验矫正暗通道先验获取到的介质传输图,需要在有雾图像中分割出天空区域。在大量包含天空区域的有雾图像中,其天空区域呈灰白色,色彩变化幅度小、平滑,各像素点颜色值之间的差值小;而非天空区域,受自然景观或人文景观的影响,色彩变化幅度大,各像素点颜色值之间的差值大。因此,基于此差异,结合天空区域一般在图像顶部的先验规律,本文算法对有雾图像各个通道各列的像素点值用局部标准差值函数自上到下算得该通道各列各像素点的标准差值,为了使分割更为精确,计算标准差值时选择最小的1×2的滑动窗口,对三通道各列像素点的标准差值做累加处理,而后用自适应阈值大津算法求得有雾图像各列像素点的分割阈值,分别用各列的阈值对相应列做天空区域和非天空区域的分割,以此得到分割出天空区域和非天空区域的整体图像。对室外有雾图像作天空区域的分割实验,其效果如图3所示。
图3 天空分割效果图
图3(a)为原包含天空区域的有雾图像,图3(b)为在像素点列上使用局部标准差值函数和自适应阈值大津算法后的分割效果图像,图3(c)为按阈值在像素点各列上自上到下分割天空区域的最终效果图,其中图像上方白色区域即为天空区域,显示本文算法中的天空区域分割方法能够有效地对有雾图像的天空区域做分割,且新提出的对像素点各列使用最大津阈值分割算法而后拼接的分割方式,提高了分割的效率,且分割效果良好。
2.2 介质传输图的矫正
在有雾图像景深较低的非天空区域,暗通道先验去雾算法表现良好,在有雾图像的天空区域,基于暗通道先验获取到的介质传输图不够准确,引发了天空色彩失真现象。为纠正这一不良现象,用颜色衰减先验获取到的介质传输图td(x,y)矫正天空区域的介质传输图 ts(x,y),其公式:
其中,td(x,y)由(2)式介质传输图与景深的指数相关关系求得,(2)式中的d(x,y)由(6)式颜色衰减先验模型得到,ts(x,y)由(5)式暗通道先验模型算得。
2.3 大气光值的获取
式(1)中A指的是取景环境中的大气光值,由(1)式求取无雾图像,需要准确估算出值A。文献[10]选取有雾图像亮度值在整个图像前0.1%的对应的得像素点作为大气光值。显然该方法容易受到图像中亮光源或者相关取景对象的影响,造成大气光的估计值偏大,从而使最终去雾效果的变差。文献[12]采用四叉树方法估计大气光值A,这在一定程度上避免了大气光值受局部亮光源的影响。结合本文算法中的天空区域分割,受四叉树估计大气光值的启发,在天空分割的基础上,寻找亮度值排在天空部分前0.1%对应像素点作为大气光值的估计。本文对大气光值估计的效果与文献[11]中估计大气光值的方法作对比,实验结果如图4所示。
图4 大气光值的估计
图 4中(a)为原图,(b)中红色区域为文献[11]方法获取的大气光值所在的区域,显然该方法受到了图像中亮度值较大的取景对象的影响,(c)中红色区域为本文方法获取大气光值的区域,实验结果显示本文对大气光值的估计比文献[11]中的方法更准确,避免了在有雾图像中亮光源的干扰,可获得更准确的大气光值估计。
运用概率统计的方法获得有雾图像对应的先验信息t(x,y)和A后,即可运用(1)式恢复无雾图像J(x,y)。最后,运用人体视觉对亮度信息有更强的敏感度,增强去雾后图像的亮度值,获得最终的无雾图像。
3 实验结果与分析
用大量包含天空区域的有雾图像对本文算法的效果进行测试,图像来源于文献[5]、[8]、[10]等使用过的图像。实验所用电脑的配置为:Intel Core i3-3110(CPU@2.4GHz),4.00GB RAM,软 件 环 境 为MATLAB R2012A。对本文算法的去雾效果分别从主观定性对比分析、客观天空区域方差值和运行时间三个角度进行评价。
3.1 定性对比结果
本文算法测试了大量图像。鉴于篇幅限制,这里仅展示对文献[5]、[8]、[10]中的有雾图像的去雾效果,且与原文献中方法的去雾效果作对比,实验结果如图5所示。
从实验结果可以看到,文献[5]的基于暗通道先验的方法去雾效果明显,尤其是在景深较低的非天空区域,达到了较好的细节保持效果;在大片白色或天空区域,文献[5]中的去雾算法出现了颜色失真和边缘光晕的现象。文献[8]中复用暗通道先验知识结合边缘信息去雾,一定程度上解决了光晕现象,但是无法解决天空色彩失真的弊端,且文献[8]选择不同精度的介质传参数图,这使基于暗通道先验去雾在天空部分的颜色失真现象更加明显,如图5(c)各图像的天空区域所示。由图5(d)的各图像可知,本文融合颜色衰减先验和暗通道先验知识去雾算法整体的去雾效果较好,去雾后的图像色彩自然;在景深较低的非天空区域,保留了暗通道先验去雾的细节保持优良的特点;在大片白色的天空区域,本文引入的基于颜色衰减先验去雾方法,有效地解决了暗通道先验算法造成的色彩失真问题。如图4 所示,与图 5(b)、5(c)的图像对比,本文方法去雾后的图像图5(d)天空区域色彩更加自然。
3.2 天空区域方差对比结果
本文算法针对暗通道先验去雾方法在天空区域造成的色彩失真问题提出解决方案。通过观察大量使用暗通道方法去雾后的图像得知,去雾后天空部分色彩失真主要表现为出现明显的色彩不平滑现象,如图5所示,(2)、(3)、(4)、(5)四幅图像中的(b)(c)列暗通道去雾效果,这违反了天空区域颜色变化幅度小、色彩平滑的先验规律,而本文的算法对有雾图像去雾后,天空区域依然较为平滑。因此,结合本算法中的天空区域分割,提出分别对使用两种方法去雾后图像的天空部计算方差值和方法,计算时使用3×3的滑动窗口,来量化本文解决天空部分色彩失真的效果。实验结果如表1所示。
表1 各方法在天空区域图像的方差值对比(值保留整数部分)
由表1可知,原图像天空区域色彩方差值较小;文献[5]的去雾方法造成了天空区域色彩方差值大幅度的提升,这验证了暗通道先验去雾方法造成的天空的色彩失真问题;文献[8]在天空区域的色彩方差值与文献[5]在同一个数量级上,证明该方法也无法解决天空色彩失真问题;本文方法处理后的去雾图像在天空区域的方差值较原图像大,但是与文献[5]和文献[8]的去雾效果对比,本文方法在天空区域的方差值有大幅度的下降,这验证了本文算法有效解决了暗通道去雾算法在天空区域出现的色彩失真问题。
3.3 算法运行时间对比结果
在大量图像去雾算法的实际运用中,不仅需要去雾效果优良,还要不破坏算法的实时性。因此,为验证本文算法的有效性,从运行时间的角度对本文算法作定量分析。实验结果如表2所示。
由表2可知:文献[5]中的算法耗时最长,文献[8]的耗时最短,文献[8]采用流水线的方式计算介质传输图,这大大节省了去雾算法的运行时间。本文算法耗时与文献[8]中的去雾方法耗时稍长,本文算法引入天空区域分割,引入的针对像素点列的最大津阈值分割算法作区域分割提高了使用该算法求全局阈值的运算速度,算法运行时间虽有延长,但并未破坏实时性要求,且在一定程度上解决了暗通道先验去雾方法中的天空区域色彩失真问题,因此本算法在实际生产生活中具有更大的使用价值。
表2 各方法的运行效率对比(单位:s)
4 结语
本文提出了一种融合暗通道先验和颜色衰减先验的去雾算法。该算法在列上用最大津阈值分割算法对有雾图像的天空区域作分割;对分割后的天空区域的去雾,用颜色衰减先验矫正暗通道先验获得介质传输图;对暗通道先验去雾算法中大气光值的估计容易受到人工光源或取景对象影响的弊端,本文结合天空区域分割,在天空区域求得大气光值;最后通过求大气物理模型的逆过程来还原无雾图像。
实验结果表明,本文算法在不大量增加运行时间、保持去雾算法实时性的同时,保留了暗通道去雾算法对较低景深图像的细节保持功能,解决了暗通道先验去雾算法中天空色彩失真问题,提高了算法的去雾效果和适用性。但本文提出的基于局部标准差值函数的天空分割方法存在分割不精确确问题,这使得天空区域的边缘仍然会有少量颜色失真,如何更快速准确的分割出天空区域,彻底避免失真现象,是下一步需要研究的方向。