郑州大学学报(理学版)  2020, Vol. 52 Issue (1): 72-78  DOI: 10.13705/j.issn.1671-6841.2019013

引用本文  

辛娇娇, 陈本豪, 郭元术, 等. 基于改进暗通道先验的图像去雾算法[J]. 郑州大学学报(理学版), 2020, 52(1): 72-78.
XIN Jiaojiao, CHEN Benhao, GUO Yuanshu, et al. Image Defogging Algorithm Based on Improved Dark Channel Prior[J]. Journal of Zhengzhou University(Natural Science Edition), 2020, 52(1): 72-78.

基金项目

河南省交通厅重点项目(220024140173)

通信作者

郭元术(1962—),男,河南信阳人,教授,主要从事通信信号处理研究,E-mail:ysguo@chd, edu.cn

作者简介

辛娇娇(1995—),女,山西临汾人,硕士研究生,主要从事图像处理研究,E-mail:915927100@qq.com

文章历史

收稿日期:2019-01-12
基于改进暗通道先验的图像去雾算法
辛娇娇, 陈本豪, 郭元术, 张红丽, 高洁    
长安大学 信息工程学院 陕西 西安 710000
摘要:针对暗通道先验去雾算法在含有浓雾、亮白、非均匀光照区域造成的图像失真的问题,提出了一种改进的自适应局部阈值分割和自适应参数优化相结合的去雾算法。首先根据暗通道先验理论运用局部阈值分割出亮白区域和非亮白区域,然后采用引导滤波将求取的原始透射率进行细化,并通过亮白区域与非亮白区域加权求取更加精准的大气光强,提高了大气光强的鲁棒性,使得该算法适用于暗通道去雾效果不好的浓雾高亮区域和非均匀光照区域。最后,通过雾天图像降质模型恢复出无雾图片,将该算法与几种常用的去雾算法进行比较。结果表明,该算法在绝大多数情况下恢复的图片清晰自然,解决了图像去雾后视觉效果不好的问题,同时也有效改善了亮白区域色彩失真的现象
关键词局部阈值分割    大气光强    暗亮通道先验    图像去雾    
Image Defogging Algorithm Based on Improved Dark Channel Prior
XIN Jiaojiao, CHEN Benhao, GUO Yuanshu, ZHANG Hongli, GAO Jie    
School of Information Engineering, Chang′an University, Xi′an 710000, China
Abstract: To solve the problem of image distortion caused by dark channel prior defogging algorithm in areas with dense fog, white light and non-uniform illumination, an improved defogging algorithm which combined adaptive local threshold segmentation and adaptive parameter optimization was proposed. Firstly, according to the dark channel priori theory, the local threshold was used to divide the bright white region and the non-bright white region. Then the original transmittance was refined by guiding filter. After that, the more accurate atmospheric light intensity was obtained by weighting the bright white region and the non-bright white region, which improved the robustness of atmospheric light intensity. Therefore, this algorithm was suitable for the dense fog highlight area and non-uniform light area with poor fog removal effect in dark channel. Finally, the fog-free image was restored by the image degradation model. Comparing the algorithm with several common defogging algorithms, the experimental results showed that the image restored by the algorithm was clear and natural in most cases, which solved the problem of poor visual effect after defogging and effectively improved the color distortion in the bright white area.
Key words: local threshold segmentation    atmospheric light intensity    dark and bright channel prior    image defogging    
0 引言

计算机视觉系统如今广泛应用于各个领域,如交通监控、航天航空、医药工程等,这些应用场景都对采集的图像视觉质量要求较高。然而近年来,每到冬季我国的大部分地区经常出现大面积雾霾天气,恶劣天气严重影响着人们的日常出行和生产活动。尤其在雾霾条件下,自然光因光线在雾霾天气中被散射而使色调发生偏移[1],获取的图像因此丢失了大量细节信息,导致拍摄出的图片出现对比度低、细节信息丢失、图像失真、可利用价值低等问题[2-3],因此消除雾霾天气所导致的图像负面效果从而恢复出相应的无雾图像有着显著的研究意义和应用价值[4-5]

目前,主流的去雾方法根据原理的不同可分为两类:一类是基于图像增强的方法,例如直方图均衡化、Retinex算法[6]、同态滤波、小波变换等,这类方法通过增强图像对比度,改善整体视觉效果,实现图像去雾,但是没有考虑雾天图像降质的本质问题,去雾效果不理想。另一类是基于物理模型的图像复原方法,例如Tan[7]根据有雾图像对比度普遍较低的先验条件使用最大化复原图像的局部对比度的方法进行去雾,得到的去雾图像存在过饱和的问题。Tarel[8]等假设在某个区域内,大气耗散函数逼近最大值,然后根据中值滤波估计其取值,因为在景深突变区域,中值滤波的去雾能力较弱,可能出现光晕现象。Fattal[9]通过独立成分分析的方法估计透射率,该方法对浓雾图像处理效果不好,而且不能处理灰度图像。目前,基于图像复原的主流去雾方法是基于He[10]的先验知识理论的去雾算法,根据暗通道先验理论估计出初始透射率,利用引导滤波算法优化初始透射率,从而达到去雾的目的。但是当图像中出现大片天空、浓雾、白色、非均匀光照区域时,去雾效果不好,并且大气光强有时估值过高,导致去雾后图像色度偏暗。

针对这些问题,本文提出了一种基于暗通道先验理论,利用局部阈值分割图像和自适应参数优化相结合的去雾算法,该算法有效解决了浓雾、高亮、光照不均匀区域的去雾问题。同时去雾后的图像具有较好的清晰度以及较高的图像对比度,去雾鲁棒性好、精准性强,可有效实现去雾。

1 暗通道先验算法理论 1.1 基于暗通道的去雾算法

文献[10]通过对户外无雾图像进行大量的统计实验后,得到了一个客观的统计规律,即暗通道先验知识。该思想内容是:在绝大多数户外无雾图像的任意区域内,总有某些像素在某个颜色通道上有一个很小的值,这个值为0或者接近于0,称之为暗通道先验知识。对于暗通道的求解,首先需要将一幅彩色图像在RGB颜色空间中进行分解,并取其最小值,以便求得R、G、B三个颜色通道中最小分量通道,其公式为

$ {J_{{\rm{dark}}}}\left( x \right) = \mathop {\min }\limits_{y \in \mathit{\Omega }\left( x \right)} \left( {\mathop {\min }\limits_{c \in \left\{ {r, g, b} \right\}} {J_c}\left( y \right)} \right) \to 0, $ (1)

式中:c表示R、G、B三通道的某个通道;Ω(x)表示以像素为中心点的局部区域;Jc(y)表示在Ω(x)区域中的某个像素值通道;Jdark(x)表示暗通道值,根据前文介绍在无雾图像中暗通道值是一个很小的值,其总是接近于0或者等于0。

不妨假设大气光强A是已知的,并且认为在局部区域内图像透射率不变,用$\tilde{t}(x) $表示,两边取暗通道,即对两边分别取最小值可得

$ \mathop {\min }\limits_{y \in \mathit{\Omega }\left( x \right)} \left( {\mathop {\min }\limits_c \frac{{{I_c}\left( y \right)}}{{{A_c}}}} \right) = \tilde t\left( x \right)\mathop {\min }\limits_{y \in \mathit{\Omega }\left( x \right)} \left( {\mathop {\min }\limits_c \frac{{{J_c}\left( y \right)}}{{{A_c}}}} \right) + 1 - \tilde t\left( x \right)。$ (2)

根据暗通道先验知识,Jc(y)近似为0,式(2)可变形为

$ \tilde t\left( x \right) = 1 - \mathop {\min }\limits_{y \in \mathit{\Omega }\left( x \right)} \left( {\mathop {\min }\limits_c \frac{{{I_c}\left( y \right)}}{{{A_c}}}} \right), $ (3)

其中:$\tilde{t}(x) $为初始透射率。当有一定景深成像时,雾是不可避免存在的,如果去雾太彻底,反而显得不真实,这种现象被称为“空间透视”,因此,引入一个去雾保真参数ω=0.95, 于是式(3)可以表达为

$ \tilde t\left( x \right) = 1 - \omega \mathop {\min }\limits_{y \in \mathit{\Omega }\left( x \right)} \left( {\mathop {\min }\limits_c \frac{{{I_c}\left( y \right)}}{{{A_c}}}} \right), $ (4)

为了更直观地观察到去雾算法,将公式变形为

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

式(5)中,t0是为了避免透射率过小而设置的一个阈值,防止因t(x)太小而导致图像复原出现失真,经验值t0=0.1。

根据上述暗通道先验知识,对一些有雾图像能取得较好的去雾效果,但是并不能满足所有的情况。文献[10]取原图所对应暗通道内前0.1%最大像素点的值作为大气光强,而当一张图像中有大面积浓雾、亮白、非均匀光照区域时,会导致大气光强估计不准确。因为在这些区域,其暗通道值不为0或者不接近于0,很可能这些值都会很大,所以有雾图像中的暗元素是准确获取透射率的关键,然而在处理天空区域时,由于这部分区域几乎不包含暗元素,从而导致该区域的透射率估值小。因此有必要针对浓雾、亮白、天空和因雾霾影响造成的非均匀光照等区域改进算法,使得其大气光强、传输透射率鲁棒性更强,适用范围更大,去雾效果更好。

2 本文算法

针对上述问题,本文提出了一种基于改进的暗通道先验的自适应局部阈值分割和参数优化的去雾算法。该方法通过局部阈值精准分割图像,提高大气光强获取的准确度以及加权求取透射率来达到去雾效果。整个算法主要分为以下步骤:利用局部阈值的方法精准分割成二值图像;通过暗亮通道图求取自适应程度更高的大气光强;将大气光强作为阈值,求取加权的透射率,再通过引导滤波算法,得到细化的透射率;最后基于雾天图像降质模型反演出去雾图像。

2.1 局部阈值分割图像

阈值分割方法[11]是常用的图像分割[12]方法之一,本文采用局部阈值法,即用与像素位置相关的一组阈值对图像各区域分别进行有效分割,将图像划分为若干个小图像,先对分割的小图像进行处理,再将分割后的图像连接起来,就能有效完成整张图像的阈值分割。其具体步骤如下。

1) 将图像分为m块,其中各个子块图像面积可以不相等。

2) 对每个子块图像分别计算其分割阈值。

3) 对每个子块图像分别进行阈值分割,并最终将子块合并到一起,进而完成整幅图像的分割。

局部阈值的好处在于每个像素位置处的阈值不是固定不变的,而是由其周围邻域像素的分布来决定的,亮度较高的图像区域的二值化阈值通常会较高,亮度较低的图像区域的二值化阈值通常会较低。这样对于不同亮度、对比度、纹理的局部图像区域将会拥有相对应的阈值,最终有效分割出复杂背景图像的非亮白区域与亮白区域。

2.2 改进的加权大气光强

本文使用加权平均求取大气光强A的方法。将有雾图像设为I(x),亮白区域为L(x),像素总数为M,亮白区域像素数目为m,由前文可知雾天图像的暗通道为

$ {I_{{\rm{dark}}}}\left( x \right) = \mathop {\min }\limits_{y \in \mathit{\Omega }\left( x \right)} \left( {\mathop {\min }\limits_{c \in \left\{ {r, g, b} \right\}} {I_c}\left( y \right)} \right), $ (6)

则暗通道图中的最大像素值Id_max可表示为

$ {I_{d\_\max }} = \mathop {\max }\limits_{c \in \left\{ {r, g, b} \right\}} \left( {{I_{dark}}\left( x \right)} \right)。$ (7)

亮白区域像素通道最大值的中值Lmedia

$ {L_{{\rm{media}}}} = media\left[ {\max \left( {L\left( x \right)} \right)} \right], $ (8)

改进的大气光强可表示为

$ A = k{L_{{\rm{media}}}} + \left( {1 - k} \right){I_{d\_\max }}, $ (9)

式中:k=m/M,表示亮白区域的权值。此时求得的大气光强更加精准且鲁棒性更强。

2.3 暗亮通道先验算法

在本文前面内容,可以看到暗通道先验不适合大面积浓雾、亮白和非均匀光照区域,在这些区域中,暗通道值普遍较高,不满足暗通道先验理论。针对这些问题,在文献[12]的基础上提出了暗亮通道先验的算法。文献[13]提出了暗通道与亮通道的概念,该文献取通道的最大值,认为这些值接近于1或者等于1,称之为亮通道。当一幅图像中包含大面积的浓雾、亮白、非均匀光照区域时,这些区域符合上述特性,其像素通道值接近于1或者等于1。对于上述区域,本文提出了一种亮通道先验理论。

根据前面内容描述的大气光强的特征,只要暗通道数值大于大气光强的区域,定义为亮通道区域,然后根据暗亮通道先验分别求得初始透射率,将这两个初始透射率进行区间判断,求得各自符合暗亮通道区域的初始透射率,同时对式两边取颜色通道最大值,可得

$ \mathop {\max }\limits_c \left( {\frac{{{I_c}\left( y \right)}}{{{A_c}}}} \right) = {{\tilde t}_i}\left( x \right)\mathop {\max }\limits_c \left( {\frac{{{I_c}\left( y \right)}}{{{A_c}}}} \right) + 1 - {{\tilde t}_i}\left( x \right), $ (10)

式中各参数所表示的内容与前面提到的相同。然后对式(10)两边求区域最大值,并且将Jlight(x)→1代入,也加入ω来保留少量的雾气来提高视觉上的真实性,可得

$ {{\tilde t}_i}\left( x \right) = 1 - \omega \frac{{1 - \mathop {\max }\limits_{y \in \mathit{\Omega }\left( x \right)} \left( {\mathop {\max }\limits_c {I_c}\left( y \right)} \right)}}{{1 - A}}。$ (11)

将式(11)与式(4)相结合,并根据前面求得的暗亮通道先验图和大气光强,最终求得的初始透射率tdl(x)为

$ {t_{{\rm{dl}}}}\left( x \right) = \left\{ \begin{array}{l} 1 - \omega \frac{{\mathop {\min }\limits_{y \in \mathit{\Omega }\left( x \right)} \left( {\mathop {\min }\limits_c {I_c}\left( y \right)} \right)}}{A}, \;\;\;\;\;\;{I_{{\rm{dl}}}}\left( x \right) < A, \\ 1 - \omega \frac{{1 - \mathop {\max }\limits_{y \in \mathit{\Omega }\left( x \right)} \left( {\mathop {\max }\limits_c {I_c}\left( y \right)} \right)}}{{1 - A}}, {I_{{\rm{dl}}}}\left( x \right) \ge A, \end{array} \right. $ (12)

式中:Idl(x)为在暗亮通道图中的像素值。

如果用初始透射率处理有雾图像,反演出来的去雾图像在边缘处会有白色雾状现象产生,并且在中间的平滑区域也会有方块效应的出现。所以采用引导滤波[14]算法细化初始透射率,最终恢复出的无雾图像视觉上更加清晰自然。相较于暗通道先验求取的透射率,本文改进的透射率对大片的浓雾、亮白、非均匀光照区域去雾效果大为改进。

3 实验结果及性能分析

实验所用软件为Matlab2016a, 操作系统为64位Windows 10,硬件采用的处理器为英特尔第三代酷睿i5-3337U、CPU 1.80 GHz、4.0 GB内存。所用引导滤波窗口大小为r=60,滤波参数为esp=10-6。本文将用文献[10]的算法、文献[9]的算法、文献[6]算法与本文算法进行对比实验,选取了两张图片进行去雾效果比对,如图 1的(a)、(b)所示。

图 1 实验图像 Fig. 1 Experimental image
3.1 主观分析

主观分析是以观察者对图像的认知作为评价标准,主要分为两种。

1) 绝对评价:以原始图像作为参考图像,以人的肉眼观察作为评价标准。

2) 相对评价:没有原始图像作为参考图像,以其他相关去雾算法的结果和本文算法进行对比。最终的去雾图如图 23所示。

图 2 高楼图像的相关去雾算法和本文算法的去雾效果对比 Fig. 2 Comparison of defogging algorithms for high building images

图 3 池塘图像的相关去雾算法和本文算法的去雾效果对比 Fig. 3 Comparison of defogging algorithms for pond images and defogging effects of the algorithms

通过图 2可以看出,文献[10]的算法天空区域呈现蓝色,文献[9]的算法天空区域过亮,且建筑出现蓝色,两者都出现较为明显的失真。文献[6]的算法天空区域呈现暗灰色,整体图像偏暗。相比较而言,本文算法图片恢复较好,失真度较小,图片清晰明亮,视觉效果最好。

通过观察图 3可以得到,文献[9]算法的图像出现严重的失真,文献[10]算法和文献[6]算法去雾效果较好。但是文献[10]算法整体图像偏暗,文献[6]算法在水面部分和左上角建筑呈现黑色,图像出现少量失真。相比较而言,本文算法在去雾后最大程度保留了原有色彩,失真程度最低,视觉效果最佳。

3.2 客观分析

主观分析因为不同的观察者、不同的图像类型、环境等有较大的感官差异,因此也需要根据客观分析对图像质量作出评价,本文将采用3种评价指标,分别是峰值信噪比、结构相似性、信息熵。

1) 峰值信噪比反映图像失真程度,其值越大,代表图像失真越小,即图像的质量越好。

2) 结构相似性的取值范围是[0, 1], 越接近于1,则表明二者结构相似性越高,失真也就越小,图像质量越好。

3) 对图像而言,信息熵越大,表示图像的信息量越大,即图像细节越丰富。

图 23的客观评价比较结果如表 1所示。

表 1 图像去雾后客观评比结果 Tab. 1 Objective evaluation results after image defogging

对比高楼图像去雾评价指标可以看出,本文算法的信息熵略低于文献[11]的算法,但却提供了最高的峰值信噪比和结构相似性。说明此图中本文算法失真程度最小,去雾效果最为真实自然,这与主观评价结果一致。

对比池塘图像去雾评价指标可以看出,虽然本文算法的信息熵略低于文献[6]的算法,但是通过观察文献[6]的去雾图像可以看出,其牺牲了图像的失真度来保持图像的信息量。综合来看,本文提供了最高的峰值信噪比和结构相似性,说明此图中本文算法失真程度最小。

4 结论

针对已有的去雾算法不能有效解决含有大面积浓雾、亮白、非均匀光照区域等复杂背景图像,以及大面积的高像素值带来的大气光强估值不准确的问题,本文提出了基于改进暗原色先验的局部阈值分割和自适应参数优化的去雾算法。该算法有效解决了原有算法不适用于大面积浓雾、亮白、非均匀光照区域和去雾后图像偏暗的问题,去雾效果良好、图像对比度高、色彩明亮、边缘信息保持良好且在视觉效果上更加真实自然。

参考文献
[1]
禹晶, 徐东彬, 廖庆敏. 图像去雾技术研究进展[J]. 中国图象图形学报, 2011, 16(9): 1561-1576.
YU J, XU D B, LIAO Q M. Image defogging: a survey[J]. Journal of image and graphics, 2011, 16(9): 1561-1576. (0)
[2]
孙小明, 孙俊喜, 赵立荣, 等. 暗原色先验单幅图像去雾改进算法[J]. 中国图象图形学报, 2014, 19(3): 381-385.
SUN X M, SUN J X, ZHAO L R, et al. Improved algorithm for single image haze removing using dark channel prior[J]. Journal of image and graphics, 2014, 19(3): 381-385. (0)
[3]
吴迪, 朱青松. 图像去雾的最新研究进展[J]. 自动化学报, 2015, 41(2): 221-239.
WU D, ZHU Q S. The latest research progress of image dehazing[J]. Acta automatica sinica, 2015, 41(2): 221-239. (0)
[4]
李加元, 胡庆武, 艾明耀, 等. 结合天空识别和暗通道原理的图像去雾[J]. 中国图象图形学报, 2015, 20(4): 514-519.
LI J Y, HU Q W, AI M Y, et al. Image haze removal based on sky region detection and dark channel prior[J]. Journal of image and graphics, 2015, 20(4): 514-519. (0)
[5]
曾浩, 尚媛园, 丁辉, 等. 基于暗原色先验的图像快速去雾[J]. 中国图象图形学报, 2015, 20(7): 914-921.
ZENG H, SHANG Y Y, DING H, et al. Fast image haze removal base on dark channel prior[J]. Journal of image and graphics, 2015, 20(7): 914-921. (0)
[6]
张泽浩, 周卫星. 基于暗原色先验的图像去雾算法改进研究[J]. 电子技术, 2018, 47(10): 52-56.
ZHANG Z H, ZHOU W X. Research on improvement of image de-foging algorithm based on dark color priors[J]. Electronic technology, 2018, 47(10): 52-56. (0)
[7]
TAN R T. Visibility in bad weather from a single images[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. Anchorage, 2008: 1-8. (0)
[8]
TAREL J P, HAUTIERE N. Fast visibility restoration from a single color or gray level image[C]//IEEE 12th International Conference on Computer Vision(ICCV). Kyoto, 2009: 2201-2208. (0)
[9]
FATTAL R. Single image dehazing[J]. ACM transactions on graphics, 2008, 27(3): 72. (0)
[10]
HE K M, SUN J, TANG X O. Single image haze removal using dark channel prior[C]//2009 IEEE Conference on Computer Vision and Pattern Recognition(CVPR), Miami, 2009: 1956-1963. (0)
[11]
刘国奇, 邓铭, 李晨静. 融合RGB颜色空间的植物图像分割模型[J]. 郑州大学学报(理学版), 2019, 51(1): 18-23.
LIU G Q, DENG M, LI C J. Plant image segmentation model based on RGB color space[J]. Journal of Zhengzhou university(natural science edition), 2019, 51(1): 18-23. (0)
[12]
刘洪普, 杨乐, 侯向丹, 等. 一种改进的模糊C均值图像分割算法[J]. 郑州大学学报(理学版), 2017, 49(2): 67-72.
LIU H P, YANG L, HOU X D, et al. An improved fuzzy C-means algorithm for image segmentation[J]. Journal of Zhengzhou university(natural science edition), 2017, 49(2): 67-72. (0)
[13]
曲晨, 毕笃彦, 严盛文, 等. 基于明暗像素先验的随机游走图像去雾[J]. 系统工程与电子技术, 2017, 39(10): 2368-2375.
QU C, BI D Y, YAN S W, et al. Random walk image dehazing through a priori of light and dark pixel[J]. Systems engineering and electronics, 2017, 39(10): 2368-2375. (0)
[14]
陈书贞, 任占广, 练秋生. 基于改进暗通道和导向滤波的单幅图像去雾算法[J]. 自动化学报, 2016, 42(3): 455-465.
CHEN S Z, REN Z G, LIAN Q S. Single image dehazing algorithm based on improved dark channel prior and guided filter[J]. Acta automatica sinica, 2016, 42(3): 455-465. (0)