基于暗通道先验理论的图像去雾算法改进
2021-04-12车雯雯李竹林徐雪丽
车雯雯,李竹林,徐雪丽
(延安大学 数学与计算机科学学院,陕西 延安 716000)
现如今,雾霾天气频繁出现[1],无论用什么设备捕捉到的图像,都会受到大气中悬浮的水汽气溶胶等微小颗粒物光学散射的影响,导致拍摄的图像不清晰。如果是在雾霾天气下的户外拍摄,图片将会变得更模糊,前景和背景混为一体研究对象不突出,使得图像利用价值不高,给交通、国防、航空等领域的研究和应用带来一系列的影响[2]。因此,多年来图像去雾一直是计算机视觉研究的热点,国内外许多研究者提出了可行的方法,同时也存在一些不足[3-5]。所以,探究具有更好适用性与可靠性的图像去雾算法仍是一个极具挑战的课题[6]。
目前的图像去雾算法主要有两大类:一类是图像增强法,另一类是图像复原法。常见的图像增强去雾方法有Retinex算法[7]和直方图均衡算法[8],该类方法的实质并不是属于真正的去雾,而是通过增强图像对比度来突出研究对象,虽然效果不是特别理想,但是该方法的优点是成本低,易操作。图像复原法是基于物理模型一种去雾方法,何恺明在2009年提出了暗通道先验原理去雾算法(以下简称何算法)[9],很多研究者在此基础上提出了自己的改进方法[10-14]。因此,近些年基于暗通道先验原理去雾的图像复原取得了很大突破,大量实验表明,图像复原比图像增强效果更好。然而该理论基于物理模型,是根据雾形成的原理反解出无雾图像,在求解的过程中,存在假设与估算,导致图像复原结果存在图像颜色失真、亮度下降、轮廓处光晕现象明显等缺点。本文针对上述缺点,在暗通道先验原理去雾算法的基础上,提出了一种结合双边滤波的常数c补偿算法,既保护了图像的边缘又通过常数c对图像的亮度进行补偿,最后将大气光及透射率当成一个整体并结合峰值信噪比构造了优化条件的迭代算法,实现了自适应图像去雾。实验表明这种方法有良好的去雾效果,减少了光晕现象且降低了图像的失真。
1 滤波
图像去雾中常用的滤波有均值滤波、中值滤波和双边滤波等[15]。均值滤波也称为线性滤波,采用的主要方法为邻域平均法,基本原理是用邻域均值代替原图像中的各个像素值,这种滤波在图像去噪的同时也破坏了图像的细节部分,使图像变得模糊,不能很好地保护图像细节。中值滤波法是一种非线性平滑技术,它的基本原理是将每一像素点的灰度值设置为该点某邻域窗口内的所有像素点灰度值的中值,缺点是易造成图像的不连续性[11]。以上算法中图像的边缘信息不能很好的被保留,所以本文利用文献[16,17]的双边滤波来进行边缘保护。
1.1 双边滤波
双边滤波(Bilateral filter)是一种结合图像的空间邻近度和像素值相似度的一种折衷处理的非线性的滤波方法,能达到保边去噪的目的,且具有简单、非迭代、局部的特点[18]。其表达式为:
Ifiltered(x)=
(1)
(2)
其中,Ifiltered是滤波后的图像,I是原图像,x是滤波图像中的像素,Ω是像素x的窗口,fr是平滑不同程度范围的核(rangekernel),gs是空间的卷积核。跟一般的卷积相比,就是把图像中变化剧烈的部位(边缘)加一个小的权重,这样求和之后值就很小了,边缘的像素点没有被模糊,起到了保护边界的作用[19]。
1.2 双边滤波结果
对彩色图像先进行R、G、B三通道颜色分离,分别对R、G、B分量进行双边滤波,最后再对三通道进行合成形成新的彩色图像,如图1所示,可以看出双边滤波之后的有雾图像边缘处更清晰。
图1 双边滤波结果图
2 暗通道先验理论
2.1 图像降质原因
光线通过有尘埃的空气或遇到小微粒而使传播方向改变,并向各个方向散开,称之为散射[20]。散射使原传播方向的辐射强度减弱,而增加向其他各方向的辐射。尽管强度不大,但从遥感数据角度分析,太阳辐射照在地面又反射到传感器的过程中,两次通过大气,在照射地面时,由于散射增加了漫入射的成分,使反射的辐射成分有所改变。返回传感器时,除反射光外还增加了散射光也进入了传感器。通过二次影响增加了信号中的噪音成分,造成图像的质量下降[21]。
2.2 暗通道先验理论
何恺明经过大量实验统计之后,发现在不含有天空区域的无雾图像每个子区域至少在一个颜色通道上存在亮度很小的值[9]。假设一幅图像是J,那么这幅图像的暗通道可以表示为:
(3)
而对于无雾的非天空区域其暗通道接近于0,即:
Jdark(x)→0。
(4)
由大气散射模型可知单幅图像复原过程可由物理模型(5)描述:
I(x)=J(x)t(x)+A(1-t(x)),
(5)
其中J(x)为去雾后的图像,I(x)为雾霾天气下所拍摄的图像,A为大气光的值,t(x)为透射率(0≤t(x)≤1)。推导出A和t(x)的值J(x)也就迎刃而解。所以推导A和t(x)是实验的关键。
由(5)式可得:
J(x)=(1-A)/t(x)+A,
(6)
对3个通道进行局部最小值,再对(5)式两边同时除以A进行标准化,可得到:
(7)
根据(4)式,无雾图像区域暗通道趋于0,所以(7)式可变为:
(8)
假设在上述过程中大气光A值已知的情况下,通过(8)式可计算出透射率的粗略值。
3 暗通道先验理论算法的改进
本节中首先通过引入常数c对透射率进行补偿,然后结合峰值信噪比构造优化条件,设计迭代去雾算法,模拟实验结果表明,算法的改进取得了较好的效果。
3.1 常数c补偿
(9)
何恺明同时提出暗通道先验理论来估测大气光的值[9],对大多数图像复原去雾算法而言,大气光值A可以由输入图像的像素计算获得这种方法具有很好的鲁棒性[4]。
在实际中,可以借助于暗通道图来从有雾图像中获取该值。具体步骤如下:先从暗通道图中按照亮度的大小取前0.1%的像素;再在这些位置中,在原始有雾图像J(x)中寻找对应的具有最高亮度的点的值,作为A值,可以表示为:
A=max(max(Jdark(x)))。
(10)
经过大量实验后,图2是以其中的两幅图片为例子显示不同c值下的图像复原效果。
图2 不同c值的复原效果图
通过大量对比实验,发现图像随着c的增大发生明显的变化。c的取值太小,图像不清楚;取得越大,图像越模糊。最终选取c的大小为0.1,效果最佳。
将这种方法用于含天空区域的图像,模拟实验结果显示效果并不理想,甚至出现色彩严重失真,近景目标轮廓出现光晕甚至近景无雾景显得更模糊。所以此算法中c=0.1并不适用于含天空区域的亮度较高的图像。
3.2 迭代算法
一般情况下,研究者在研究图像去雾时都把大气光和透射率分开单独优化。在文献[23]中,作者提到了将两者作为一个整体采用迭代的算法进行优化,当亮度平均值达到一定标准时停止运算。但当有雾图像中含有大量白色建筑时亮度平均值就会整体偏大,导致该算法有一定的误差。基于这个缺点本文引入峰值信噪比作为算法停止优化的评判标准。
暗通道先验的迭代算法:采用二元优化策略将有雾图像多次去雾,直至达到优化标准。由(5)式可知输入图像、输出图像、透射率及大气光之间存在一定的关系。将条件初始定义为:
(11)
其中I为有雾图像,将I赋值给J0,A0是有雾图像J0的大气光值,t0为有雾图像J0的透射率。由物理模型可推导出迭代公式:
(12)
其中n等于1、2、3,先用3.1中的方法计算出大气光A的值,将第一次的复原图像作为第二次的输入图像一次次迭代直到达到优化条件停止迭代。
3.3 峰值信噪比
峰值信噪比(Peak signal-to-noiseratio)是一个工程术语指到达噪音比率的顶点信号[24]。由于许多信号都有非常宽的动态范围,峰值信噪比常用对数分贝单位来表示。峰值信噪比经常用作图像压缩等领域中信号重建质量的测量方法,它常简单地通过均方误差(MSE)进行定义。峰值信噪比作为一种评价图像质量的客观指标其数学表达式为:
(13)
(14)
其中MAXI是表示图像点颜色的最大数值,如果每个采样点用8位表示,那么就是255。式中MSE为原图像与处理后图像的方差,I(i,j)为输入图像,J(i,j)为处理后的图像,m,n为图像的尺寸。
优化过程中,当
|PSNRi-PSNRi-1|≤ε(ε=0.001),
此时的A和t作为最佳值。
3.4 算法的具体步骤
迭代去雾算法步骤如下:
Step1输入大气退化图像I并且将I赋值给J0;
Step2由式(12)得到大气光Ai的值,i=1,2,3…n,(n为最高迭代次数);
Step3由式(6)得到第i次的去雾图像Ji;
Step4由式(15)(16)得到去雾图像的峰值信噪比,如果达到优化条件则输出此时的A,t的值,否则进行Step5;
Step5将Jn-1赋值给Jn重复Step2—Step4,直至峰值信噪比递增值小于0.001 dB。
最后由(6)式得到最终的去雾图像。
4 图像复原
4.1 图像结果比较
现将何算法、双边滤波保护算法、常数c补偿算法及迭代去雾算法结果进行比较:
其中(a)和(f)是有雾图像,(b)和(g)是何算法得到的去雾图像,(c)和(h)是增加常数c补偿算法得到的去雾图像,(d)和(i)结合双边滤波的常数c补偿算法,(e)和(j)是迭代算法得到的去雾图像。由图3可以观察到4种算法的去雾结果在亮度和清晰度上都有明显的提高。
图3 几种去雾算法结果的比较
4.2 仿真结果分析
常用的评判实验结果性能的方法有MES均方差、PSNR峰值信噪比、COV协方差及CONTRAST亮度对比度等[25]。如图3所示,可以很直观的看出去雾结果,但这只是直观效果。对图3中的图像进行性能评价参数计算,结果如表1和表2所示,其中表1是图3中(b)—(e)算法的各类性能参数值;表2是图3中(g)—(j)算法的各类性能参数值。
表1 去雾算法性能对比(b)-(e)
表2 去雾算法性能对比(g)-(j)
由图3、表1及表2可以看出,常数c补偿算法与何算法在性能参数上几乎相接近。双边滤波去雾算法在各参数方面有进一步的提高。迭代算法各项参数较佳,尤其在均方差与亮度对比两方面突出,且在主观体验上与其它去雾算法相比较图像更为清晰。
5 小结
本文从图像复原角度出发,研究几种图像去雾处理的方法。通过引入常数c对透射率进行补偿且通过实验得出,当c值为0.1时,具有较好的去雾结果,但是结果仍然不理想。通过引进双边滤波对图像边缘进行保护提出了基于常数c补偿的双边滤波算法,实验结果表明复原后的图像边缘饱和度更强效果更好。将大气光和透射率看成一个整体通过迭代的算法进行优化,不仅实现了自适应去雾,实验结果也表明不管是去雾后图像的清楚度还是各项评价性能参数均取得很好的结果。但是本文算法仍然存在很多不足,算法的实时性需要进一步提高,对于含有天空区域的有雾图像仍需进一步展开研究。