基于显著图的可变模板形态学去雾方法

2019-06-11 06:42董辉张斌
自动化学报 2019年5期
关键词:透射率形态学滤波

董辉 张斌

光在空气中传播时会被“雾”[1−2]反射、吸收和散射.光的强度和颜色会因雾的浓度和光线传播距离发生改变.这就造成了图像质量下降,包括图像模糊,对比度下降,色彩弱化,场景特征减弱.特别是有雾图像的深度信息被破坏,会影响后续图像处理和视觉计算效果.所以,在遥感、航空和水下图像处理,室外监控和目标识别应用中,去雾处理被广泛使用.图像去雾可以消除雾气干扰和颜色失真,提高对比度和视觉效果.

去雾技术中主要的挑战是有雾图像丢失了原始场景的深度信息,这样就不能使用大气散射模型对图像建模.所以,在去雾处理时,需要使用多幅图像或附加信息获得场景的深度信息,实现对有雾图像建模.当前,主要的去雾方法有三类.第一类采用图像处理方法.包括直方图均衡[3−4]和Retinex方法[5].基于图像处理的去雾方法只关注图像对比度,饱和度和亮度的提高.这类方法不能得到场景的深度信息、而且会恶化图像的视觉效果.第二类采用物理模型方法.这类方法使用附加信息、多幅图像或先验.使用附加信息的方法包括使用大气光偏振效应[6]和深度信息[7].这两种附加信息需要使用额外的器件,因而在实际应用中不能方便获得.使用多幅图像的方法通过采集同一场景不同天气条件下的多幅图像实现[8−10].在实际应用时,多幅图像并不能很轻易的获取.所以,基于假设[11−13]或先验[2,14]的方法得到越来越多的应用.这种方法首先对雾建模,然后通过逆过程实现去雾.这种方法使用单一有雾图像实现去雾,效果自然.第三类方法基于机器学习[15−18],针对特定大气条件训练模型.这类方法有较好的去雾效果,但是对非雾气造成的图像退化产生不好的影响.当前,去雾方法中最简单有效的是基于暗通道先验(Dark channel prior,DCP)的方法[2].但这一方法并不能很好地处理天空图像和光晕现象,而且计算量大.针对该方法的不足,一些后续工作对其进行了补充[19−21].

本文在DCP方法的基础上引入可变形自适应滤波和形态学重构,实现去除光晕现象.采用最优化介质传播系数[22]处理有雾图像天空区域.实验结果表明本文提出的算法能够普遍用于不同雾气条件的图像去雾.对天空区域和光晕的去除都有很好的处理效果.而且,该方法采用形态学运算,易于并行化和硬件实现.

1 背景

1.1 雾气图像模型

在计算机视觉中,大气光散射模型为:

其中,E为辐照度,d为光线传播的距离,λ为光的波长,E0(λ)为光源的照度(d=0),β(λ)为总散射系数,E∞(λ)为大气光的最大辐照.公式右边的第一项为入射光线的衰减模型,第二项为大气光模型.有雾图像模型[2,14]可以简化为:

其中,I(x)为观测图像,J(x)为场景辐照,A为全局大气光,t(t(x)=e−βd(x))为透射率.图1说明式(2)各项在图像中的意义.图像去雾的目的就是使用下式恢复出场景J:

图1 有雾图像模型Fig.1 Haze imaging model

去雾中的挑战是从单幅图像I中估算出A和t.显然未知条件大于约束.J不可能直接由式(3)算出.因此,需要使用先验或假设提供更多约束.

1.2 暗通道先验

图像去雾本质上是一个病态问题,所以需要经验观测值,多种假设或先验知识才能实现.Zhu等[11]发现了颜色衰减先验.Meng等[23]针对大气透射函数提出了内在边界约束.不同于其他方法基于有雾图像提出假设或先验,He等[2]基于无雾图像的统计特性提出了DCP.DCP基于无雾图像的一个基本特征:无雾图像中除天空区域,至少有一个颜色通道的亮度非常低.DCP提出三条先验:大气光值已知,大气透射率在图像块中是常数,J的暗通道亮度趋近于0.任意图像P的暗通道计算为:minΩDC(x)(minCPC).其中,PC为P的彩色通道,ΩDC(x)为中心点x的邻域.minC∈(R,G,B)计算每个像素的最小颜色通道值,minΩDC(x)计算x邻域ΩDC(x)中的最小值.暗通道的计算过程如图2所示.

图2 暗通道计算Fig.2 Calculation of dark channel

大气光值A假设为已知值,式(2)归一化为:

其中,C表示R、G、B三个颜色通道.像素x的邻域ΩDC(x)中常量透射系数t表示为(x).式(4)等号两边进行最小值运算得到:基于无雾图像的非天空区域暗通道值趋近于零这一先验,以及大气光值非负,式(5)简化为:

然后图像场景J(x)可以通过下式计算得到:

这样,有雾图像就实现了去雾处理.使用这一方法恢复出的图像效果好,计算简单.但是,在去雾过程中,假设图像在每一个像素邻域中透射率相同.这样恢复出的图像在某一图像块中深度不连续的位置会产生光晕现象.为解决这一问题可以使用导向滤波(Guided image filter,GIF)[20].

1.3 讨论

通常情况下,基于DCP的去雾方法能够有效地对单幅有雾图像去雾.但是,仍存光晕现象和天空区域彩色失真现象.

1.3.1 光晕现象

像素邻域大小的选择在DCP方法中非常关键.在去雾运算中,邻域越小Jdark(x)的计算结果误差越大,恢复的场景图像过饱和越明显.但是,大的邻域会使得透射率在一个过大的区域内都保持恒定,在邻域内存在深度边缘时,会产生强的光晕现象,如图3所示,邻域越大,去雾后的图像光晕影响越大.因此,GIF、散射模型[24−25]、混合DCP[26],保边处理[12,27]和视觉恢复[28]等技术被用于解决光晕问题.但是这些技术都有其自身的限制.散射模型方法需要预先得到Trimap图或用户手动标记前景背景.其他方法需要大量的计算和存储资源.而且,上述方法都是使用固定尺寸的图像块对一幅图像进行处理.使用形状不变的邻域会破坏图像块中深度突变位置的深度信息,造成透射率计算的错误.比如使用GIF,大尺寸窗口能够分散深度边缘周围的光晕.但是,去雾后图像深度边缘模糊,如图4所示,窗口越大,光晕越弱,但是叶子和树枝边缘的对比度越差.

本文采用自适应结构元和形态学重构计算透射率,为了实现不同深度的保边滤波,实现在深度近似的结构中完成滤波和细小纹理消除,同时保持图像的深度边缘.同时,因为形态学运算的天然并行性,易于并行加速和硬件实现.首先使用有雾图像对每一像素点计算其合适的结构元,然后使用这些结构元完成中值滤波输出模板图像.有雾图像的暗通道图像作为标记图像.使用标记图像和模板图像完成形态学膨胀重建运算,结果即为精细化的暗通道图像.

1.3.2 颜色失真

DCP中,不同区域使用同一恒定的大气光值并不适合,特别是在天空区域,会产生严重的色彩失真.当图像中像素I大于选定的A时,J(X)=1/t(I−A)+A会得到大于255的数值,这样就产生了结果的上溢,造成恢复图像的颜色失真.文献[2]中,假设大气光值大于所有目标亮度.但是,当目标亮度大于AC时,式(7)会计算出错误的透射率(x),如图5所示.为了减少天空区域的色彩失真,文献[29]引入启发式边界,假设地面区域的透射率只与其距地平线的垂直距离有关,超过地平线的天空区域透射率置为0.这一方法对于非天空区域会产生发黄和偏暗的效果.文献[30]根据有雾图像的统计直方图自动检测雾气程度,然后引入非负天空区域补偿项,用于调整天空区域(x)的初始值.但是这一方法会产生明显的块效应.

图3 不同邻域大小对去雾的影响Fig.3 Haze removal results by different patch sizes

本文将文献[22]中提出的损失函数用于整幅图像的透射率计算.该损失函数包括两部分:对比度项和信息损失项.通过损失函数的约束,避免了有雾图像中亮度大于大气光值的像素,在去雾处理时发生溢出.本文提出计算亮通道(R、G、B三通道中的最大值),使用亮通道计算透射率.然后融合由亮通道和重构图分别计算的透射率,得到最终的透射率(x).这样能够有效避免天空区域的色彩失真.

图4 DCP+GIF方法使用不同大小邻域的去雾效果Fig.4 Haze removal results by DCP+GIF with different patch sizes

图5 使用DCP去雾后天空区域的颜色失真现象Fig.5 Haze removal results with large sky region

图6 本文去雾算法流程Fig.6 Flowchart of our proposed algorithm

2 本文算法

本文提出的算法流程如图6所示.包括自适应滤波,形态学重构和天空区域处理:

1)由有雾图像I的灰度图计算显著图(Salience map,SM)[31].SM作为导向图计算自适应结构元.生成的结构元对最小颜色通道图像dc1进行中值滤波.得到保留了边缘,抑制了细节的结构图像AF.

2)由I计算最小颜色通道dc1和暗通道dc2.根据dc2和I计算大气光值A.以dc2为标记图像,AF为模板图像完成形态学膨胀重构运算,获得精细化暗通道图像dc3.结合A计算暗通道透射率tdc.

3)由I计算最大亮通道bc.根据bc计算亮通道透射率tbc.逐像素比较tdc和tbc,输出最大值得到最优透射率(x).最后,由(x),A和I恢复出去雾图像.

去雾处理的中间过程如图7所示.自适应滤波图、暗通道图和亮通道图由I计算得到.暗通道和自适应滤波图完成重构运算.使用重构图像计算tdc.亮通道进行一次膨胀运算再计算tbc.融合两种透射率后使用式(8)实现去雾.

2.1 形态学重构

透射率t的表达式为:

其中,β表示散射系数,d(x)表示场景深度.t仅与场景深度有关.令f和g分别表示标记图像和模板图像,并且f≤g,测地膨胀定义为:

其中,b为结构元(Structure element,SE),⊕表示膨胀运算,∧表示按像素对应取最小值.大小为n的测地膨胀定义为:

标记图像f对模板图像g的膨胀形态学重建表示为:

其中,k为迭代次数.当迭代运算达到稳定,即时,迭代停止.膨胀重建能够在不改变物体形状的前提下消除标记图像中的细小结构.将形态学重建引入透射率的优化计算,需要选择合适的标记和模板图像.AF(Igray)和dc2分别作为模板和标记图像进行形态学重构运算,结果如图8所示.与采用GIF的方法比较,采用形态学重构恢复的有雾图像具有更好的对比度和纹理结构.但是采用形态学重构恢复图像,在同一场景深度,很难去除细纹理集中区域的细纹理.因此,要提高去雾的效果,需要解决的问题是:保证深度边缘不被模糊,抑制相近场景深度的密集细纹理.为此,我们引入了可变形自适应滤波.

图7 本文去雾算法中间过程Fig.7 Flowchart of proposed haze removal procedure

2.2 可变形自适应滤波

最小颜色通道既有图像的强边缘信息,也有细纹理和噪声.最优的模板图像应该仅包含完整且定位准确的深度边缘信息.形态学运算中,通常使用开启和闭合运算去除图像细边缘和噪声.但是会模糊图像边缘.所以,采用自适应可变形中值滤波对模板图像进行预处理,能够很好地去除噪声和细纹理,同时保持准确的深度边缘,如图9所示.

我们采用显著图[31]作为导向图(Pilot)计算可变结构元.SM计算过程如算法1所示.计算出导向图后,使用算法2,实现对每个像素的自适应中值滤波.去雾效果如图10所示,去雾后的图像避免了光晕效应,而且对比度得到了增强.

图9 自适应滤波结果Fig.9 Adaptive filtering results

图10 使用自适应中值滤波和形态学重构实现的去雾结果Fig.10 ADSE filter and morphological reconstruction results

算法1.显著图(SM)计算

输入.灰度图像I(x).

输出.显著图.

步骤 1.计算I(x)的二维离散傅立叶变换:F[I(x)].

步骤2.计算频谱幅值A,相位谱P和log谱L:A=(F[I(x)]),P=φ(F[I(x)]),L=lg(A).

步骤3.V=hn⊗L,其中hn为均值滤波模板.

步骤4.计算谱残差:R=L−V.

步骤 5.计算SM:SM(x)=g(x)⊗F−1[exp(R+P)]2,g(x)为高斯滤波模板.

算法2.自适应中值滤波

输入.导向图SM,dc1,结构元限制范围Ω(边长为2r+1的矩形).

输出.自适应中值滤波后的图像.

步骤1.j=1,循环步骤2∼5.

步骤2.以当前像素为中心,选取区域Ω,Ω中每一像素i计算沿不同路径到中心点的像素值距离,Ω内结构元长度d(x,y)的均值T作为结构元长度上限.

步骤3.比较Ω内各像素点结构元长度d(x,y)与T,若d(x,y)>T,自适应SE当前位置置0;否则,置1.

步骤4.使用当前得到的自适应SE对dc1进行中值滤波,结果为输出图像当前像素的灰度.

步骤 5.j⇐j+1,移动到下一像素,直到(j=N),结束循环,其中,N为图像像素个数.

2.3 天空区域处理

自适应滤波和形态学重构有很好的去雾效果.但是天空区域的处理结果仍然不理想.我们引入文献[22]中的方法用于天空区域的去雾.式(3)可以重写为:J=(I(x)−A)+A.输入图像中灰度值在某一区间[a,b](0

其中,NΩ为区域Ω中像素个数,hC为彩色通道C的直方图,a和b表示数据截断发生的输入图像像素值.使总损失最小的最优化透射率t表示为:

其中,λL为控制权重.这样,计算t的两个约束项可以归为一个约束条件

注意到Econtrast是关于t的增函数.因此,最优化透射率t∗为能满足式(17)约束的最小值:

我们将式(18)改写为:

其中,ω是一个基于应用的常量.DC(x)和BC(x)分别为暗通道和亮通道.计算过程中各透射率如图11所示,最优透射率对天空和非天空区域都是适用的.

图11 各透射率结果Fig.11 Transmissions

3 实验结果

我们对多种不同类型的图像进行了测试.并将测试结果与Zhu等[11]、Meng等[23]和He等[20]工作进行了比较.比较时,使用Matlab R2013a实现所有算法,计算机使用Core i3-4130 CPU(3.4GHz)和4GB RAM.测试时使用相关工作论文中优化后的参数.

3.1 真实图像的定性结果

对6幅真实有雾图像采用不同去雾算法处理,结果如图12所示.其中(a)列为有雾图像,(b)∼(d)列分别为Zhu等[11]、Meng等[23]和He等[20]的处理结果.本文算法结果为(e)列.第1行有雾图像为重度雾气条件.文献[11]和文献[20]对图像中距离较远的部分处理效果较差.文献[23]和本文的算法对近距离和远距离图像的处理效果都比较好.第2行和第3行图像具有非常多的尖锐边缘和深度边缘,可以评价对光晕现象的抑制能力.本文算法去雾效果更好,颜色更鲜艳.第4行图像包含天空区域.文献[11,23]的结果在天空区域出现了颜色失真现象.文献[20]在天空区域未出现颜色失真,但去雾图像对比度较低.本文算法结果在天空区域无颜色失真现象.图像颜色鲜明,对比度高.第5行图像同时包含天空区域和水面.文献[20,23]的结果在天空区域和水面区域都出现了颜色失真现象.文献[11]去雾图像对比度较低.本文算法结果在天空和水面区域无颜色失真现象,去雾图像相比其他结果对比度高.第6行图像不包含天空区域,同时景深较小,细节很多.文献[23]出现了颜色失真现象.本文算法结果相比文献[11,20]对比度高,颜色鲜艳.

图12 真实图像不同去雾算法效果对比Fig.12 Comparison with other methods

3.2 合成图像的定量结果

用PhotoShop的Camera Raw功能,对无雾图像添加雾化效果.这样,可以定量评价各种算法的去雾效果.本文合成了Middlebury Stereo数据集中的4幅图像和4幅真实场景图像.其中,dolls、moebius、cones、books添加 80% 的雾气影响,代表薄雾环境.trees、mountain、woods添加 100% 的雾气影响,代表中等浓度雾气环境.buildings执行两次雾化操作,第一次添加100% 雾气影响,第二次再添加30%雾气影响,代表浓雾环境.采用MSE和结构相似度(Structural similarity,SSIM)[32]作为评价指标.MSE的计算如下:

其中,N为图像像素个数,G为无雾原图像,J为去雾处理后图像,JC和GC分别表示图像J和G的三个颜色通道.MSE值越小表示去雾效果越好.

SSIM用于评价图像结构信息的保留程度,计算如下:

图13 合成图像不同去雾算法效果对比Fig.13 Results on synthetic images based on stereo images

其中,µx和µy分别表示图像X和Y的亮度均值,σx和σy分别表示图像X和Y的标准差.C1和C2是常量.SSIM值越大表示去雾效果越好.

合成图像的去雾结果如图13所示.(a)列为加雾合成图像.(b)∼(d)列分别为文献[11]、[23]和[20]算法结果,(e)列为本文结果,(f)列为无雾原始图像.可以看出,本文方法和其他3种方法对于无天空区域且无较大景深的合成场景,均有较好的去雾效果.对于场景trees、buildings、mountain和woods,文献[23]的处理结果出现了严重的颜色失真.文献[20]在trees和mountain中也出现了明显的颜色失真.文献[11]虽然没有出现天空区域颜色失真,但是去雾效果不如其他方法,特别是在近景处仍有雾气.本文算法在包含天空区域和较大景深的有雾图像中,展现了良好的去雾效果.相应的量化评价结果如表1所示.本文算法对于真实场景合成的有雾图像的去雾效果最好.同时,对于其他图像,去雾结果的指标也可以接受.

表1 不同算法去雾结果定量评价指标值Table 1 Results of MSE and SSIM on the synthetic images

表2 不同算法去雾运算时间(s)Table 2 Computing times on the haze images(s)

3.3 计算复杂度

表2所示为各种去雾方法的计算时间.可以看到He的方法计算时间最短,本文算法计算时间最长.本文方法中,可变形结构元的计算消耗了88%的计算时间.然而,本文提出的算法最终以硬件实现为目的,所以算法不需要使用循环和保存中间图像数据,并且通过并行运算,易于在FPGA、多核处理器或GPU等处理器上实现,极大减少算法的执行时间.

4 结论

本文采用显著图做自适应可变形中值滤波结合形态学重构方法精细化透射率,消除细纹理和噪声,得到保留了强边缘和深度边界信息的结构图像,能够很好地处理非天空区域的去雾.结合最优化透射率方法,可以有效处理有雾图像天空区域颜色失真的问题.实验结果表明,本文提出的方法能够有效去除光晕效应,提高去雾图像对比度和色彩饱和度.同时,该方法能有效应用于包括天空区域的有雾图像,避免了其他方法对天空去雾处理时产生的颜色失真现象.另外,本文提出的方法易于并行化和硬件化.

猜你喜欢
透射率形态学滤波
噪声对相干衍射成像重构物体图像的影响
前交通动脉瘤形成和大脑前动脉分叉的几何形态学相关性研究
Budd-Chiari综合征肝尾状叶的形态学变化
基于EKF滤波的UWB无人机室内定位研究
图像去雾中的大气光强度自适应恢复算法研究
电流变液光学性能的研究
一种GMPHD滤波改进算法及仿真研究
基于自适应Kalman滤波的改进PSO算法
RTS平滑滤波在事后姿态确定中的应用
血细胞形态学观察对常见血液病诊断的意义分析