基于颜色衰减先验的小波融合图像去雾
2018-06-26张一凡王园宇
张 敏,张一凡,王园宇
太原理工大学 计算机科学与技术学院,山西 晋中 030600
1 引言
雾天会造成图像的色彩饱和度降低,对比度与清晰度下降。这给诸如图像分割、图像识别等工作造成困难。因此对图像进行去雾处理具有重要意义。当前的去雾算法主要分为两类,一类是图像增强的方法,典型的有Kim等的直方图均衡方法[1],基于颜色恒常理论Retinex的去雾算法[2],以及同态滤波法[3]。此类方法没有考虑雾图像的成因,只是通过提高图像对比度,改善了图像的视觉效果,这种方法不能从根本上对图像进行去雾,而且容易丢失图像信息[4]。另一类是图像恢复的方法,根据大气散射物理模型,通过寻找先验知识,求解模型中的未知量,获得清晰图像。Tan等[5]发现,清晰图像的对比度相对于雾图像要高,并假设区域内大气值平滑,通过提高局部图像的对比度获取清晰图像,但该方法恢复出的图像过饱和。He等[6]通过对大量清晰无雾图像的统计,发现暗通道先验知识,以此提出一种简单的估计透射率的方法,并用软抠图算法对透射率进行细化,恢复出清晰图像。由于暗通道先验在天空等白色区域失效,导致估计出的透射率不准确,而且软抠图算法的时间复杂度较高,许多学者在其基础上进行了改进。随后He等[7]提出了引导滤波,它是一种能够在对图像进行平滑的同时,保持图像边缘的滤波器,引导滤波方法在很大程度上提高了暗通道去雾算法的去雾速度。Tarel等[8]通过双边滤波器估计图像透射率,该方法恢复出的图像在景深突变的地方halo现象明显。Zhu等[9]发现雾图像的亮度饱和度与图像景深信息之间存在线性关系,据此提出颜色衰减先验知识,建立景深信息关于图像饱和度、亮度的模型,通过监督学习的方法解出景深信息,从而对图像进行去雾,该方法简单有效,但容易受训练样本的影响,且大气消光系数β的选择对去雾效果影响较大。
本文在颜色衰减先验知识的基础上,建立透射率关于图像亮度与饱和度的线性回归模型,通过机器学习中的线性回归算法对透射率进行训练,避免了对参数消光系数β的人工选择。在此基础上应用小波变换图像融合算法对透射率进行细化,提高了透射率的准确性。图像恢复过程实现了参数的自动计算,得到的恢复图像质量好、速度快。
2 大气散射物理模型
去雾过程中广泛采用的是Narasimhan等[10-11]提出的大气散射物理模型:
式中,I(x)表示雾图像在位置x的像素值,J(x)表示无雾条件下的图像的像素值,即要恢复的清晰图像,A表示大气光值,t(x)表示介质透射率,β表示大气消光系数,d(x)表示景深信息。其中只有I(x)是已知的,去雾的实质就是求出t(x)和A的值,代入式(1)中解得J(x)。且由式(2)看出,d(x)→∞时,t(x)→0,此时式(1)能简化为:
也就是A的值可以由景深最远处雾图像的像素值估计,去雾的关键就是求解透射率t(x)。
3 去雾算法
3.1 大气光值估计
常用的估计大气光值的方法有四叉树算法[12-13],和文献[6]中提到的算法。由于四叉树算法的稳定性强且收敛速度快,本文采用四叉树算法估计大气光值A。四叉树算法的步骤是,计算雾图像在三个通道上的最小值图像,求取最小值图的过程可以避免引入噪声。将通道最小值图像分割成四块,计算这四块的亮度均值,选出其中亮度均值最大的块,再分割为四块,选其中亮度最大的块。一直重复该过程,直到分割的图像小于设定阈值,这里的阈值设置为30×30像素。
将得到的A值和后续估计出的透射率代入式(1)中即可得到清晰图像,为了避免透射率过低造成图像失真,给透射率设定一个下限0.1,得到的去雾公式如下:
3.2 粗估计透射率
3.2.1 建立透射率关于图像亮度饱和度的线性模型
随着雾浓度增加,图像亮度增加而饱和度剧烈下降,而且很明显雾浓度与图像的景深信息成正比关系。据此文献[9]提出了颜色衰减先验知识,即景深d(x)与图像亮度v(x)饱和度s(x)之间的差值成正比,即d(x)∝v(x)-s(x)。对式(2)两边同时取对数,可得lnt=-βd(x),β在雾天条件下,可看作一个常数[14]。由此看出lnt(x)与图像的景深信息成反比即lnt(x)∝-d(x),于是建立一个(x)=lnt(x),关于 v(x)和 s(x)的线性模型:
式中ε(x)是一个误差项,用来代替模型的随机误差,假设其服从均值为0,方差为σ2的正态分布ε(x)~N(0,σ2)根据正态分布的性质:
解出其中的参数θ0、θ1、θ2、σ2就可以得到粗估计透射率的值。
3.2.2 训练样本的生成
训练样本的准确性,决定了线性回归算法的有效性[15]。文献[9]中,为每幅清晰图像构造一个同样大小的取值为(0,1)之间的随机图像作为景深信息,并且在RGB三个通道上设定不同的A值,作为图像的大气光值。用其训练结果进行去雾处理,恢复出的图像会带有随机噪声,如图1(b)所示,而且,如果三个通道上的A取相同的值,恢复出的图像在密集区域失真,如图1(c)所示。
图1 训练样本对去雾结果的影响
Saxena等人[16-18]为了研究3D建模,用红外设备测量了大量户外图像的景深信息,可信度高,据此能产生准确的训练样本[19]。从该数据集中得到的是图像的景深d(x),为获得透射率t(x),需要β值,本文采用统计学的规律获得β的取值区间,具体步骤如下:
(1)暗通道先验[6]估计出图像的透射率;
(2)颜色衰减先验[9]估计出图像的景深;
(3)将透射率和景深代入式(2)中,得到 β值。在Google等搜索引擎中收集500幅雾图像,通过计算得到β的分布直方图,如图2。由图2看到,β∈(0,2.5),且在[1.1,1.2]区间分布密集。将数据集中的清晰图像J(x),景深 d(x),以及 β 的分布情况,代入式(1)、(2)中,并为每幅图像随机产生一个A值,A∈(0.85,1)[9,19],得到训练样本。具体产生训练样本的过程如图3所示。
图2 β的取值分布
图3 训练样本的生成过程
式中i代表像素点,使式(7)取最大值的参数值,就是所求值,将式(7)两边取对数,可以将乘积运算转化为加法运算:
3.2.3 学习策略
t1(x)满足正态分布,得到其联合密度函数,如式(7)所示:
σ可以看作一个常量,于是求式(8)的最大值,可以化为求下式的最小值:
使式(8)取最大值的σ值为:
此时只需用梯度下降算法求式(10)的最小值。分别对式(10)中的参数求偏导数得到:
本文的训练过程如下:
fort=1:n n是迭代次数
forj=1:k k为图像数
fori=1:l l为每幅图像的像素数
temp=t1(i)-(θ0+θ1v(i)+θ2s(i))
S=S+temp;
vS=vS+v(i)*temp;
sS=sS+s(i)*temp;
end
σ2=S2/n;
θ0=θ0+S;θ1=θ1+vS;θ2=θ2+sS ;
end
end
将所有的像素点循环一次作为一次循环,输入t1(x)、v(x)、s(x)的值,输出训练参数的值,t1(x)与 v(x)-s(x)成反比,参数的初始值设置为θ0=0,θ1=-1,θ2=1。
经过大约10亿左右像素点进行训练,得到的最佳训练结果是 θ0=0.171 8,θ1=-1.231 8,θ2=1.068 2,σ2=0.016 7 ,将参数值代入式(5)中得到 t1(x),进而得到粗估计透射率t1(x),用t1(x)对图像进行去雾,对薄雾图像效果明显,但对雾浓区域的处理效果不理想。雾浓的区域,图像亮度很高,趋于最大值,饱和度极低,接近最小值,此时两者之间的差值趋于恒定,代入式(5)中计算出的透射率无法体现原有差异,因此恢复出的图像,层次感不明显。如图4所示,图4(b)图像整体呈现灰白,尤其远处的物体,看不见轮廓,去雾不彻底。
图4 粗估计透射率去雾
3.3 图像灰度图反转图作为透射率进行去雾
雾天气条件下,彩色图像的亮度和饱和度发生了变化,导致视觉效果不佳,如果转化为灰度图像,能显示出被雾掩盖的细节。但图像灰度图也是受雾气影响的图像,因此尝试将图像灰度图取反作为透射率对图像进行去雾处理,取反的过程,削弱了雾气对图像的影响。实验结果表明,将图像的灰度图反转图记为t2(x),作为透射率可对图像进行去雾处理。如图5所示,图5(b)中远处的景物清晰,与图4(b)相比,去雾效果提升明显,但恢复出的图像颜色偏暗。
3.4 透射率融合
图5 图像灰度图反转图去雾
将粗估计透射率与雾图像灰度图的反转图融合,可以在体现图像透射率信息的同时,携带原图像的细节,提高透射率的准确性。基于小波变换的图像融合能够最大限度地保留两幅图像的特征,因此本文采用小波融合的方法对两个透射率进行融合,对透射率进行细化。小波融合的过程中首先对图像进行分解,第一层小波分解会得到水平、垂直、对角线3个方向上的高频信息,1个低频信息,高频带部分体现像素变化快的边缘信息,低频带部分体现图像的整体轮廓。进行第二层分解时,只对第一层分解得到的低频带重复以上分解,以此类推,经N层小波分解后会产生3N+1个频带,3N个高频带,一个低频带。分别对其中的高频、低频部分采用以下融合规则:
(1)高频部分,选择绝对值大的系数:
式中,hF是融合后的高频系数,hF1、hF2分别是小波分解后t1、t2的高频系数。
(2)低频部分,将两个系数进行加权平均:
式中,lF是融合后的高频系数,lF1、lF2分别是小波分解后t1、t2的低频系数。
经两者融合后去雾的效果如图6所示。可以看到图6(b)中,远处的景物清晰,图像对比度适中。
图6 融合后的透射率去雾
将得到的大气光值A和细化后的透射率代入式(4)中,即可得到清晰图像,本文的去雾流程图如图7所示。
图7 去雾流程图
4 实验结果分析与比较
为了验证本文算法的有效性,将实验结果与经典的去雾算法进行比较,从主观、客观两个方面对本文去雾方法进行评价。本文实验在MATLABR2012b平台上进行,计算机配置为Intel®CoreTMi7-4790 CPU 3.6 GHz,RAM 4 GB,操作系统为64位Windows 8。
4.1 去雾效果分析
为了验证本文算法的有效性,分别与He[6]、Tarel[8]、Zhu[9]等的去雾算法进行了比较,如图8所示。从图中看出He的方法在景深突变的区域会出现白色的残留,图像亮度低;Tarel的方法,halo效应明显,而且浅色物体的色彩严重失真;Zhu的方法恢复出的图像亮度低;本文算法恢复出的图像景深突变区域过渡自然,而且结合了原图像的特点,色彩与原图相似度高。
4.2 去雾客观评价
4.2.1 去雾质量分析
为了客观验证算法的有效性,引入了质量评价函数的概念,分别从直方图相似度d、亮度v、方差σ2,三个指标对图像进行量化评价,它们的定义如下:
图8 不同算法去雾结果比较
式中,H1、H2分别表示雾图像和去雾后图像的直方图中bin的个数和;N表示图像像素个数,vi表示每个像素的亮度值;xi表示每个像素的像素值,xˉ表示整幅图像的像素平均值。d体现出两幅图像的结构相似性;v体现出图像亮度大小;σ2体现出图像对比度高低。本文算法与He[6]、Tarel[8]、Zhu[9]等的算法的客观比较数据,如表1所示。从表1可以看出,本文算法恢复出的图像与原图像的直方图相似度高、亮度高、对比度适中。
表1 不同去雾算法的质量客观比较
4.2.2 去雾时间分析
本文算法是在颜色衰减先验的基础上,求取透射率的过程是一个简单的线性求和,耗时少。Zhu等[9]用颜色衰减先验估计出粗估计透射率后,优化投射率的过程中首先对粗估计透射率进行分块,取每一块的最小透射率作为整块区域的透射率,这样得到的景深信息块效应明显,最后用引导滤波对上一步的运算结果进行处理,本文中优化过程是对透射率进行了小波融合。这两个过程所需时间差异不大。He[6]算法中耗时最多的是计算暗通道,求取暗通道的过程是一个循环运算,随着图像的增大,耗时成倍增加,Tarel[8]的算法在图像增大到1 200×1 600时,去雾时间需要4 min以上,达不到实时去雾。本文算法的去雾时间稳定,与Zhu[9]的方法效率持平。表2是本文算法与以上去雾算法时间比较。
表2 不同去雾算法的效率客观比较 s
5 结束语
本文首先依据颜色衰减先验知识建立透射率关于亮度饱和度的线性模型,并用线性回归算法求解模型中的参数,得到粗估计透射率。产生训练样本的过程中使用的数据相对准确,训练出的模型更具普适性。最后用小波分解融合的方法,将粗估计透射率与图像灰度图的反转图相融合,将融合后的图像作为透射率进行去雾处理。本文在颜色衰减去雾的基础上,避免了大气散射系数的选择,自动化程度高,而且结合了原图像的固有特性,表现出强的鲁棒性,恢复出的图像彩色自然。
[1]Kim T K,Paik J K,Kang B S.Contrast enhancement system using spatially adaptive histogram equalization with temporal filtering[J].IEEE Transactions on Consumer Electronics,1998,44(1):82-87.
[2]李菊霞,余雪丽.雾天条件下的多尺度Retinex图像增强算法[J].计算机科学,2013,40(3):299-301.
[3]Seow M J,Asari V K.Letters:Ratio rule and homomorphic filter for enhancement of digital colour image[J].Neurocomputing,2006,69(7/9):954-958.
[4]唐美玲.单幅图像去雾算法的研究与应用[D].长沙:湖南大学,2014.
[5]Tan R T.Visibility in bad weather from a single image[C]//Proceedings of IEEE Conference on Computer Vision and Pattern Recognition,2008:l-8.
[6]He Kaiming,Sun Jian,Tang Xiaoou.Single image haze removal using dark channel prior[C]//IEEE Conference on Computer Vision and Pattern Recognition,2009:1956-1963.
[7]He Kaiming,Sun Jian,Tang Xiaoou.Guided image filtering[J].IEEE Transactions on Pattern Analysis and Machine Intelligence,2013,35(6):1397-1409.
[8]Tarel J P.Fast visibility restoration from a single color or gray level image[C]//Proceedings of IEEE International Conference on Computer Vision,2009:2012-2208.
[9]Zhu Qingsong,Mai Jiaming,Shao Ling.A fast single image haze removal algorithm using color attenuation prior[J].IEEE Transactions on Image Process,2015,24(11):3522-3533.
[10]Narasimhan S G,Nayar S K.Vision and the atmosphere[J].International Journal on Computer Vision,2002,48(3):233-254.
[11]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.
[12]曾浩,尚媛园,丁辉,等.基于暗原色先验的图像快速去雾[J].中国图象图形学报,2015,20(7):914-921.
[13]马书一,郝巧红,管庆吉,等.基于特征融合的快速图像去雾方法[J].吉林大学学报:理学版,2016,54(1):100-106.
[14]Narasimhan S G,Nayar S K.Vision and the Atmosphere[J].International Journal of Computer Vision,2002,48(3):233-254.
[15]王力冠,冯瑞.基于霍夫森林和半监督学习的图像分类[J].计算机工程与应用,2016,52(20):20-25.
[16]Saxena A,Chung S H,Ng A Y.Learning depth from single monocular images[J].Advances in Neural Information Processing Systems,2005,18:1161-1168.
[17]Saxena A,Chung S,Ng A.3D depth reconstruction from a single still image[J].International Journal of Computer Vision,2008,76(1):53-69.
[18]Ashutosh S,Sun M,Andrew Y N.Learning depth from single monocular images[J].IEEE Transactions on Pattern Analysis and Machine Intelligence,2009,30(5):824-840.
[19]麦嘉铭,王美华,梁云,等.特征学习的单幅图像去雾算法[J].中国图象图形学报,2016,21(4):464-474.