Print

发布时间: 2016-09-25
摘要点击次数:
全文下载次数:
DOI: 10.11834/jig.20160911
2016 | Volumn 21 | Number 9




    图像理解和计算机视觉    




  <<上一篇 




  下一篇>> 





暗通道先验图像去雾的大气光校验和光晕消除
expand article info 赵锦威, 沈逸云, 刘春晓, 欧阳毅
浙江工商大学计算机与信息工程学院, 杭州 310018

摘要

目的 针对暗通道先验图像去雾方法中存在的大气光误判以及光晕效应等问题,提出一种基于大气光校验和光晕消除策略的改进算法。 方法 首先,采用基于支持向量机的大气光校验方法对候选大气光的有效性进行判断,剔除太阳光、车灯等高光区域的干扰;然后,采用基于块偏移的精细透射率计算方法获得边缘保持的透射率,极大地抑制了无雾图像中光晕像素的数量;最后,采用基于导向滤波的光晕像素检测和校正方法进一步消除了残留的少量光晕像素。 结果 本文算法有效抑制了大气光的误判现象,大大消除了光晕效应,提升了无雾图像的细节可辨认度,最终获得的无雾图像细节丰富、颜色深度感饱满。 结论 本文算法在无雾图像的可见度增强等诸多方面超越了已有的方法,在视频监控、交通监管和目标识别等领域具有较大实用价值。

关键词

图像去雾; 暗通道先验; 块偏移; 大气光; 光晕消除

Dark channel prior-based image dehazing with atmospheric light validation and halo elimination
expand article info Zhao Jinwei, Shen Yiyun, Liu Chunxiao, Ouyang Yi
School of Computer Science & Information Engineering, Zhejiang Gongshang University, Hangzhou 310018, China
Supported by: National Natural Science Foundation of China(61003188, 61379075); Natural Science Foundation of Zhejiang Province, China(LY14F020004)

Abstract

Objective To address false candidate atmospheric light and halo effects in dark channel prior-based image dehazing methods, an improved image dehazing algorithm is proposed, with atmospheric light validation and halo elimination strategies, which can reveal high visibility in haze-free images. Method As dark channel prior-based methods do not verify the validity of atmospheric light and may fail to select a proper one, a support vector machine-based classifier is trained and utilized to reject the false candidate atmospheric light. The halo effect is introduced to haze free results with coarse transmission maps in dark channel prior-based approaches. Thus, a patch shift-based fine transmission estimation method is adopted, which can preserve edges in the input image and suppress halo effects in the haze-free image significantly. Several pixels may still remain with halo effects near sharp edges, which are detected and corrected by the proposed halo elimination strategy using the guided filter. Finally, the haze-free image is obtained by solving the haze image formation model. Result Experimental results demonstrate that the false candidate atmospheric light is rejected and the halo effect is diminished significantly when our algorithm is applied. The resulting haze-free images possess superior visibility, rich image details, and depth. Conclusion Our algorithm outperforms the state-of-the-art image dehazing methods and significantly improves visibility in haze-free images, which meets the requirements of applications such as video surveillance, traffic navigation, and object detection.

Key words

image dehazing; dark channel prior; patch shift; atmospheric light; halo elimination

0 引言

一般地将空气中的混浊媒介(比如尘埃、湿气等)对户外景物图像的干扰所造成的可见度降低的现象称为雾霾效应。如何快速、高效地进行雾天降质图像的复原已经成为计算机图形学和计算机视觉交叉领域的热点研究问题。

已有基于多幅图像的去雾方法要求较多的先决条件,如同一场景下的多幅不同图像[1-2]或场景深度信息[3]等,因此在实际应用中的限制因素较多。基于单幅图像的去雾方法主要分为两大类。一类是基于图像增强的方法,它主要通过增强图像的对比度,达到物体颜色鲜明、边缘清晰等目的,从而产生视觉上无雾的感觉。Tan等人[4]通过最大化无雾图像的对比度来达到去雾的目的,但却会造成严重的颜色失真。由于该方法容易造成图像局部对比度的过饱和,Kim等人[5]通过最小化信息损失函数来达到最大化对比度的目的, 但依然不能解决去雾后图像细节、边缘损失等问题。另一类是基于先验模型的图像去雾方法,具有代表性的是颜色线先验方法[6]和暗通道先验方法[7]。颜色线先验是指在一个较小的图像块内,像素的颜色值在RGB空间中呈现出1维的色彩分布。该方法得到的无雾图像总体上保持了较高的对比度和清晰度,但是由于图像中的部分区域缺乏可靠的颜色线,恢复得到的无雾图像中的部分区域缺乏深度感,不够自然。

暗通道先验是指对于不包含天空的户外无雾图像中的大部分像素,以其为中心的图像块中,至少存在一些像素的某个颜色通道的值接近于0。该方法对于大部分有雾图像都有较显著的去雾效果,但是计算大气光时容易受到太阳光、车灯等高光区域的影响使得选取的大气光偏大,导致最终恢复得到的无雾图像整体偏暗。另一方面,该方法在图像中深度变化较大的区域不能保持边缘,导致求解得到的透射率图像损失了边缘信息,最终产生光晕效应。因此何恺明等人[7]采用软抠图方式细化粗糙透射率来减弱光晕效应。但是软抠图方式计算复杂度高、耗时长,不满足实时去雾场合的需求。导向滤波算法[8]虽然能够解决软抠图方法的缺陷,但它实际上是将光晕从物体边缘分散到图像中的其余部分,并不能从根本上真正解决光晕的问题。

针对暗通道先验图像去雾算法中存在的缺陷,国内外提出了很多改进算法。Gibson等人[9]采用标准中值滤波代替软抠图方式细化粗糙透射率。Wang等人[10]采用变差函数来改进大气光的选择。尽管这些方法都取得了一定的效果,但是没有从根本上解决暗通道先验图像去雾方法的缺陷。

针对以上问题,本文提出一种暗通道先验图像去雾改进算法,采用支持向量机(SVM)进行误判大气光的校验,并采用块偏移和残留光晕像素的检测与校正策略来消除光晕效应。实验结果表明,本文算法得到的无雾图像显著消除了光晕效应,颜色深度感更加饱满,呈现出更好的去雾效果。

1 本文算法

本文算法首先采用基于支持向量机的误判大气光校验方法减少了太阳光、车灯等高光区域的大气光误判现象。接着通过基于块偏移策略的精细透射率计算方法获得边缘保持的透射率,有效减少了光晕像素的产生。接着通过残留光晕像素的检测与校正方法剔除少量残留光晕像素并最终获得无雾图像。本文算法的流程图如图 1所示。

图 1 本文算法流程图
Fig. 1 Flowchart of our algorithm

在此,雾天图像退化模型的数学表达式为

$ \boldsymbol{I}\left( x \right) = \boldsymbol{J}\left( x \right)t\left( x \right) + \boldsymbol{A}\left( {1 - t\left( x \right)} \right)\; $ (1)

式中,I为观测到的有雾图像,t为光线在有雾介质中的透射率,A为大气光强度,J为待求解的无雾图像,x为图像中的像素。图像去雾算法的目标就是已知I, 在tA未知的情况下恢复求出J

假设已经求得tA,对式(1)进行变换,得到恢复无雾图像J,即

$ \boldsymbol{J}\left( x \right)= \frac{{\boldsymbol{I}\left( x \right) - \boldsymbol{A}}}{{\max \left( {t\left( x \right),{t_0}} \right)}} + \boldsymbol{A} $ (2)

t0为防止分母为0引入的阈值,一般取值为0.1,令$ k = \frac{1}{{\max \left( {t\left( x \right),{t_0}} \right)}} $, 则

$ \boldsymbol{J}\left( x \right) = k\boldsymbol{I}\left( x \right) + \left( {1 - k} \right)\boldsymbol{A}\; $ (3)

1.1 基于SVM的误判大气光校验方法

本文算法借鉴暗通道先验图像去雾方法,输入图像I的暗通道Idark的计算方式为

$ {\boldsymbol{I}^{{\rm{dark}}}}\left( y \right) = \mathop {\min }\limits_{y \in \Omega \left( x \right)} \left( {\mathop {\min }\limits_c \frac{{{I^c}\left( y \right)}}{{{A^c}}}} \right)\; $ (4)

在暗通道先验图像去雾方法中,大气光的选择易产生误判,导致选取的大气光比有雾图像中的真实大气光要亮,因而其去雾结果明显偏暗甚至于难以辨清细节[10]。为了解决大气光误判问题,本文从有雾图像中提取特征,借助支持向量机(SVM)训练特征分类器对候选大气光的可靠性进行判断。根据暗通道先验,大气光反映的是太阳光和车灯等直射光源之外的环境散射光经图像中雾霾衰减之后的结果。因此,在大气光周围的像素颜色值波动一般较为平坦。另外,在常用的站立拍摄模式下,雾最浓的区域一般位于有雾图像的偏上方。

本文所训练的SVM模型建立在基于暗通道先验的大气光估计方法基础之上,其目的是剔除其中误判的大气光。该过程可简化为对候选大气光的二值分类问题。如果没有基于暗通道先验的大气光估计方法作为基础,直接以自然界的图像作为样本训练误判大气光的检测模型,将需要海量的样本以及提取足够多的具有区分性的特征。通过对误判大气光的统计分析发现,误判大气光一般为太阳光、车灯和反射强光等第三方直射光源。这些发光区域与背景环境之间总是存在发生像素颜色值突变的边缘交界部分,即像素颜色值方差较大的部分。然而,由于浓雾的覆盖,在真正的大气光周围的像素颜色值都较为接近,即其方差较小。因此候选大气光周围图像块的方差可以作为辨别误判大气光的第1个特征。另一方面,由于真正的大气光一般位于天空区域,即图像的偏上方,因此引入候选大气光在图像中的相对位置作为第2个特征。

本文训练特征分类器的过程如下:给定l组样本[11],记每组样本的特征向量为xi=(σi, Δyi),以yi∈{1, -1}, (i=1, …, l)标记正负样本,σi是以候选大气光为中心,r为半径的图像块内像素颜色值的方差。Δyi为当前候选大气光点在有雾图像中竖直方向上的相对位置。采用LIBSVM软件包[12]中提供的C-SVC分类模型,其可表示为

$ \begin{array}{*{20}{c}} {\mathop {\min }\limits_{w,b,x} \frac{1}{2}{\boldsymbol{w}^{\rm{T}}}\boldsymbol{w} + C\sum\limits_{i = 1}^l {{\xi _i}} }\\ {s.t.\;\;\;{y_i}\left( {{\boldsymbol{w}^{\rm{T}}}\varphi \left( {{X_i}} \right) + b} \right) \ge 1 - {\xi _i}}\\ {{\xi _i} \ge 0,i = 1, \cdots ,l} \end{array}\; $ (5)

式中,w表示特征向量,C为误差项的惩罚系数,yi为样本标签,ϕ(xi)为将xi转化到高维空间的映射函数,ξi为误差项。记K(xi, xj)=ϕ(xi)Tϕ(xj)为核函数。选取径向基函数(RBF)作为分类器所采用的核函数,即K(xi, xj)=exp(-γ||xixj||2),γ>0。取γ=0.007 81。采用交叉验证策略来优选可靠性高且泛化性能好的分类器。实验结果显示,本文分类器的交叉验证精度达95%以上。

在计算方差σi的过程中,以相对较大的半径选取图像块,即图像块大小为20×20。这是因为通过对大量户外监控图像的观察发现,一般的有雾图像中车灯、太阳光等光源的大小一般小于20×20的大小。然而,在真正的大气光点周围,20×20大小的图像块内的像素颜色方差仍然是比较小的。因此,选取以固定大小的图像块窗口计算方差。

图 2为输入有雾图像,图 3图 4中的(a)图展示了本文算法选取大气光的剔除过程。从图中红色矩形框出的误判大气光可以看出,本文算法不但能够剔除车灯等第三方光源,而且可以排除靠近物体边缘的可靠性低的像素(易受串色的影响)。最终选取的大气光(以绿色矩形框出)比暗通道先验图像去雾方法更为可靠。

图 2 输入有雾图像
Fig. 2 The input haze images ((a) the train image; (b) the forest image)
图 3 火车图像去雾实例
Fig. 3 Train image dehazing example ((a) the rejection of false candidate atmospheric light; (b) the coarse transmission map[7]; (c) patch shift based fine transmission estimation; (d-e) the dehazing results based on (b) and (c) respectively; (f) the dehazing result based on guided image filtering of (c); (g) the halo detection result; (h) the transmissioncorrection result; (i) our dehazing result)
图 4 森林图像去雾实例
Fig. 4 Forest image dehazing example ((a) the rejection of false candidate atmospheric light; (b) the coarse transmission map[7]; (c) patch shift based fine transmission estimation; (d-e) the dehazing results based on image (b-c) respectively; (f) the dehazing result based on guided image filtering of image (c); (g) the halo detection result; (h) the transmissioncorrection result; (i) our dehazing result)

1.2 基于块偏移的精确透射率计算策略

记有雾输入图像为I,采用暗通道先验图像去雾方法得到的粗糙透射率图像为$ \boldsymbol{\widetilde t} $。计算公式为

$ \boldsymbol{\widetilde t}\left( x \right) = 1 - \mathop {\min }\limits_{y \in \Omega \left( x \right)} \left( {\mathop {\min }\limits_c \frac{{{I^c}\left( y \right)}}{{{A^c}}}} \right)\; $ (6)

对比I$ \boldsymbol{\widetilde t} $两幅图像可以发现,在图像I中属于边缘的区域,在$ \boldsymbol{\widetilde t} $中相应的边缘均向外扩散,产生了偏移。这是导致后续无雾图像恢复时产生光晕的根本原因。因此本文采用块偏移来抑制边缘扩散问题的产生。块偏移最早被应用在纹理滤波算法中用来保持物体的强边缘[13]

记计算暗通道时选取的图像块窗口半径为r,以输入图像I中的每一个像素点I(x)为中心的图像块包含(2r+1)2个像素。分别以这(2r+1)2个像素为中心,r为半径,共有(2r+1)2个窗口。记Δ(Ωq)=Imaxq)-Iminq), Imaxq)和Iminq)分别为以像素q为中心的图像块内像素值的最大值与最小值。记(2r+1)2个窗口内Δ(Ωq)值最小的窗口的中心像素为I0(x)。

$ P\left( {\frac{{{I^c}\left( x \right)}}{{{A^c}}}} \right) = \mathop {\min }\limits_{y \in \Omega \left( x \right)} \left( {\mathop {\min }\limits_c \frac{{{I_0}\left( y \right)}}{{{A^c}}}} \right) $ (7)

标记使用了块偏移策略的透射率值为t1(x),即

$ {t_1}\left( x \right) = 1 - P\left( {\frac{{{I^c}\left( x \right)}}{{{A^c}}}} \right) $ (8)

图 3图 4中的(b)(c)展示了原始的粗糙透射率计算方法和采用块偏移策略之后的透射率计算方法之间的比较。通过对比可以发现,本文采用块偏移策略计算得到的透射率能够在很大程度上避免边缘的扩散,从而减少无雾图像恢复时光晕的产生。

1.3 残留光晕像素的检测与校正方法

图 3图 4中的(d)(e)的对比可以看出,采用块偏移策略得到的透射率具有保持边缘的效果,恢复得到的无雾图像中光晕所占的比重大大减小。然而在一些比较尖锐的边缘,由于块偏移策略的局限性,光晕依然是存在的。为了尽可能去除残留的光晕,得到更精确的透射率,提出残留光晕像素的检测与校正方法。

导向滤波是一种保持边缘的图像滤波方法,被广泛应用在图像去雾算法中对粗糙透射率进行精细化求解。使用导向滤波之后的精细透射率进行去雾得到的图像从人眼视觉的观感上来说减少了很多光晕。

记采用块偏移策略得到的透射率t1恢复得到的无雾图像为J1,对t1进行导向滤波之后得到的透射率记为t2,以t2作为透射率恢复得到的无雾图像为J2。对比J1J2的亮度通道图像,发现经过导向滤波之后,产生光晕的区域其亮度都是减小的,但亮度减小的部分并不全是产生光晕的区域。因此亮度减小是产生光晕的必要而非充分条件。进一步分析发现,产生光晕的像素点其亮度减小的幅度相比亮度减小的点中非光晕点的亮度减小的幅度要大。因此标记亮度减小的点中减小的幅度位于前百分之一的点为透射率不可靠点,其余点标记为可靠点。不可靠点在计算粗糙透射率的时候由于块偏移策略失效而导致边缘细节丢失。由于导向滤波之后得到的精细透射率保持了大部分的边缘信息,因此这部分不可靠点的透射率应当由经过导向滤波之后得到的精细透射率代替。而对于可靠点,由于使用基于块偏移策略的透射率恢复得到的无雾图像中这部分点基本上不存在光晕,因此最终进行无雾图像恢复的时候,这部分可靠点的透射率仍然以基于块偏移策略的透射率代替。

2 实验结果与讨论

本文算法采用Visual C++结合OpenCV 3.0实现。PC处理器为Intel(R) Core(TM) i5-3210M,内存6.0 GB,操作系统为Windows 8.1。

图 5展示了本文算法与暗通道先验图像去雾方法[7]以及颜色线先验图像去雾方法[6]之间的效果比较。

图 5 图像去雾算法效果对比图
Fig. 5 Comparison of different image dehazing algorithms ((a) the haze images; (b) the dehazing results of reference [7]; (c) the dehazing results of reference [6]; (d) our results)

从实例1可以看出,由于采用了软抠图等方法对粗糙的透射率进行细化得到了精细的透射率对无雾图像进行恢复,暗通道先验方法整体上不存在光晕效应。在局部放大图中,即使是在树叶与墙的交界处,光晕效应也处理得很好。相比较之下,颜色线先验方法在树叶的间隙处仍然存在着未去除的残雾。本文算法在去除树叶间残雾的程度上与暗通道先验图像去雾方法较为一致,此外,从实例1图像的窗户部分对比可以看出,本文算法得到效果的对比度优于暗通道先验方法以及颜色线先验方法。

在实例2展示的去雾效果比较图中,暗通道先验方法在树干两侧同样深度区域去雾程度不同,导致从人眼观察来看两侧的亮度存在较大的差异。颜色线先验方法在树干边缘部分处理较粗糙,在边界处存在严重的颜色失真现象。从局部放大图来看,有雾图像中较为模糊的树的枝条在暗通道先验图像去雾方法的效果中依旧较为模糊。颜色线先验图像去雾方法虽然能够展现出枝条的轮廓,但是由于严重的颜色失真现象,效果很不理想。本文算法得到的结果在树干两侧同样深度的区域保持了同样的去雾程度,另外树枝的枝条也展现得比较清晰。

从实例3中的局部放大图可以看出,输入图像在天空的部分区域原始的色调是偏蓝的。而暗通道先验方法与颜色线先验方法的去雾效果中这一部分天空区域均呈现出了偏黄色的效果。而本文算法得到的结果在天空区域保持了与原始图像的颜色一致性。

图 6展示了本文算法得到的更多结果。从原图以及效果图的对比来看,本文算法得到的无雾图像颜色深度感饱满,细节丰富,在去雾的同时保持了高可见度和对比度,具有很强的实用性。

图 6 更多本文图像去雾算法效果
Fig. 6 More image dehazing results with our algorithm ((a) the input hazy images; (b) our dehazing results)

3 结论

本文针对基于暗通道先验图像去雾方法中存在的大气光误判问题,采用SVM对候选大气光进行可靠性判断,排除了车灯等误判大气光。采用基于块偏移的策略对粗糙透射率计算进行了改进,保持了透射率中的边缘信息,大大减弱了无雾图像中光晕的产生。提出了一种光晕校正的方法对块偏移失效区域的残留光晕进行了进一步的校正细化。

实验结果表明,本文算法得到的无雾图像相比前人方法减弱了光晕,在保持高可见度的同时对比度和深度信息更加饱满。但是对于有雾图像中存在的物理上不符合暗通道先验的区域,本文算法去雾得到的结果容易产生色彩偏色等不良效果。本文算法主要适用于有雾图像中雾的分布整体比较均匀的情况。接下来的工作将致力于解决有雾图像中不符合暗通道先验区域的检测与校正以及将单幅图像去雾算法应用在视频去雾应用中。

志谢: 本文采用了国立台湾大学林智仁教授提供的LIBSVM程序库训练SVM支持向量机进行误判大气光的排除,并使用了北京大学数字视频编解码技术国家工程实验室提供的PKU-EAQA数据集作为SVM训练的样本,在此一并感谢。

参考文献

  • [1] 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
  • [2] Schechner Y Y, Narasimhan S G, Nayar S K.Instant dehazing of images using polarization[C]//Proceedings of the IEEE Computer Society Conference on Computer Vision and Pattern Recognition.Kauai, HI, USA:IEEE, 2001, 1:I-325-I-332.[DOI:10.1109/CVPR.2001.990493]
  • [3] Kopf J, Neubert B, Chen B, et al. Deep photo:model-based photograph enhancement and viewing[J]. ACM Transactions on Graphics , 2008, 27 (5) : #116. DOI:10.1145/1457515.1409069
  • [4] Tan R T.Visibility in bad weather from a single image[C]//Proceedings of IEEE Conference on Computer Vision and Pattern Recognition.Anchorage, Alaska, USA:IEEE, 2008:1-8.[DOI:10.1109/CVPR.2008.4587643]
  • [5] Kim J H, Jang W D, Sim J Y, et al. Optimized contrast enhancement for real-time image and video dehazing[J]. Journal of Visual Communication and Image Representation , 2013, 24 (3) : 410–425. DOI:10.1016/j.jvcir.2013.02.004
  • [6] Fattal R. Dehazing using color-lines[J]. ACM Transactions on Graphics , 2014, 34 (1) : #13. DOI:10.1145/2651362
  • [7] He K M, Sun J, Tang X O. 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
  • [8] He K M, Sun J, Tang X O. Guided image filtering[J]. IEEE Transactions on Pattern Analysis and Machine Intelligence , 2013, 35 (6) : 1397–1409. DOI:10.1109/TPAMI.2012.213
  • [9] Gibson K B, Vo D T, Nguyen T Q. An investigation of dehazing effects on image and video coding[J]. IEEE Transactions on Image Processing , 2012, 21 (2) : 662–673. DOI:10.1109/TIP.2011.2166968
  • [10] Wang J B, He N, Zhang L L, et al. Single image dehazing witha physical model and dark channel prior[J]. Neurocomputing , 2015, 149 : 718–728. DOI:10.1016/j.neucom.2014.08.005
  • [11] Chen Z Y, Jiang T T, Tian Y H.Quality Assessment for Comparing Image Enhancement Algorithms[C]//Proceedings of IEEE Conference on Computer Vision and Pattern Recognition.Columbus, OH, USA:IEEE, 2014:3003-3010.[DOI:10.1109/CVPR.2014.384]
  • [12] Chang C C, Lin C J. LIBSVM:a library for support vector machines[J]. ACM Transactions on Intelligent Systems and Technology , 2011, 2 (3) : #27. DOI:10.1145/1961189.1961199
  • [13] Cho H, Lee H, Kang H, et al. Bilateral texture filtering[J]. ACM Transactions on Graphics , 2014, 33 (4) : #128. DOI:10.1145/2601097.2601188