廖章回,姜 闯
陆军特种作战学院地理环境教研室,广西 桂林 541002
受雾霭天气的影响,遥感卫星和无人机传感器在接收成像信号的过程中会导致影像模糊、色彩失真等问题,极大降低信息判识度,影响指挥决策。遥感影像的云雾检测与去除对影像判读、目标检测及无人机的目标侦察具有重要意义[1-3],尤其是在算法处理效率与色彩复原上显得极为重要。
目前,图像去雾主要有图像增强和物理模型的方法,图像增强实质是对比度的增强,以Retinex算法[4-6]、同态滤波算法[7]和小波算法为代表[8-10],该方法能有效地提高图像清晰度,但其不考虑图像降质机理,不能适应不同的场景的图像且常常会损失图像信息使图像失真。物理模型去雾方法则是基于图像降质机理,构建相应物理模型,利用图像退化的先验知识或假设,逆向还原实现图像去雾。文献[11]提出的梯度轮廓先验法,并应用在遥感影像上,显著改善了遥感的空间和辐射信息。文献[12]用图像修复模型优化得到平滑的HTM(haze thickness map),对Landsat-8和Worldview-2进行试验,取得了较好效果,但整体算法较为复杂且未提及处理时间。文献[13]采用一种压缩感知方法对资源三号影像进行去雾试验,整体效果较好但算法处理时间较长且精度有待提高。文献[14]提出了暗通道先验算法,实现手法简单,去雾效果好,是去雾研究的一次突破性的进展,但该方法是基于常规图片测试后提出的,对于高分辨率遥感影像的适用性有待研究。基于此,国内外学者开始把暗原色先验方法引入遥感图像去雾处理研究[15-18],文献[19—20]将暗原色先验知识应用在航空影像的去雾中,考虑了影像中的白色建筑物、水泥路面等区域暗原色先验失效的实际情况,提出了相应的解决策略,但试验数据过于单一,处理耗时未具体考虑。文献[21]将其应用在自然灾害遥感图像去雾方面,考虑了去雾处理后通常会出现的颜色失真问题,进而做了对比度增强,但在处理时效性上也未做分析说明。文献[22—23]将其应用在无人机上,极大地提升了去雾实时性,但缺少与原算法定量的质量指标对比分析。
针对以上研究存在的不足,本文基于暗通道先验规律,结合遥感影像特点,首先对算法进行优化改进,既考虑去雾处理时效性,又顾及去雾后影像色彩失真问题;然后,利用多幅包含不同雾浓度的GF-2和无人机低空影像进行试验,避免数据源的单一偶然性;最后,采用灰度均值、标准差、信息熵、平均梯度、处理时间指标进行质量评价,通过IDL实现批量、高效、色彩复原度高的自动化去雾算法。
在计算机视觉和计算机图形中,用来广泛描述雾天成像的表达式为[24]
I(x)=J(x)t(x)+A(1-t(x))
(1)
式中,I(x)是获取的有雾影像;J(x)是无雾影像;A是大气折光;t是介质传输透射率。去雾是从已知的I求解出未知的J、A、t,这是一个不确定解方程,故需要一些约束条件。基于此,文献[14]通过5000多张普通的无雾图片进行统计分析,得出了暗原色先验规律,表示为
(2)
式中,Jdark(x)表示暗通道;c表示像素点R、G、B 3个颜色通道;Jc代表J的某一个颜色通道,而Ω是以x为中心的一块方形的局部区域,用暗通道的概念观察发现,户外无雾图像J,除了天空区域,J的暗通道亮度是非常低并且趋近0。
1.2.1 大气光A的估算
雾图像的暗原色通道可以看作雾密度的近似,因此,可以用暗原色通道来检测雾浓度最大区域,提高对大气光的估计。首先从暗原色通道中按照亮度的大小取前0.1%的像素,这些像素通常就是雾最浓区域的,然后在原始有雾图像中寻找这些像素位置对应的具有最高亮度点的值,作为A的值。
1.2.2 透射率t估计
在大气光A已知情况下,对雾天成像表达式每个颜色通道单独进行归一化
(3)
(4)
根据暗原色先验的规律,无雾自然图像的暗原色项Jdark(x)接近于0则有
(5)
把式(5)代入式(4)中,可以简单地估算出透射率
(6)
现实中,即使是晴天白云,空气中也存在着一些颗粒,看远处的物体时还是能感觉到雾的影响,另外,雾能让人感到景深的存在,因此,通过在式(6)中引入一个[0,1]之间的因子ω,保留一部分覆盖远景的雾
(7)
通过引入这个因子ω,能够为远处的物体保留一点雾,使图像的深度感得以保证,文献[14]中ω取值为0.95,ω取值越大,去雾越彻底,相反,去雾越少。
1.2.3 软抠图法(SoftMatting)细化透射率
粗略估计的透射率,在局部并不总是恒定的,这会导致估算的透射率分布图存在块状效应,即细节信息不突出、边缘不连续且不够平滑,继而会影响复原图像的效果,采用软抠图方法优化透射率图[13]
I=αF+B(1-α)
(8)
(9)
式中,E(t)是一个关于t的代价函数;L为拉普拉斯矩阵,是一个修正后的参数。第1项是平滑项,第2项是数据项,式(9)要求解的就是关于函数的最优解,从而得到精确的透射率图。
1.2.4 有雾影像复原
获得优化的透射率和大气折光后,根据式(1)可复原有雾影像,表达式为
(10)
式中,当t(x)的值很小时,会导致J(x)的值偏大,从而使图像整体向白场景过度。为此,对透射率t(x)设定了一个上限值t0,当t(x)值小于t0时,令t(x)=t0,文献[14]的试验取t0=0.1,这表明某些雾稠密的区域仍保留着一定数量的雾,最终影像恢复公式如下
(11)
式中,t0的取值,针对不同的图像有所不同,就遥感影像判读、侦察而言,因是从天空拍摄地面的场景,这样设定t0并不是十分合理,而且也在一定程度上增加了算法的时间消耗。
暗原色先验算法在处理常规户外影像已有较好的去雾效果,但引入遥感影像去雾时,也有不足之处:①暗原色先验规律在偏白色景物、天空区域、水面等较亮区域中是失效的,会导致求取这部分区域的暗通道值是错误的,继而导致通过暗通道估计的透过率图存在一定的错误,最终会引起复原后的图像在对应区域出现色彩失真现象。②由于软抠图细化透射率需要计算大规模线性稀疏矩阵方程使得算法具有很高的时间、空间复杂度,达不到批量高效的目的,严重限制了算法在实际去雾中的应用。③算法参数中的引入因子ω并不适用于遥感影像,ω的作用是保留一定的雾使得图像存在景深,而遥感影景深变化小,实际工程和科研应用中要求影像越清晰越好,故并不需要保留一定的雾使其具有深度感。引入因子t0针对常规图像去雾时取值0.1,在遥感影像去雾时并不适用,因遥感影像与常规影像有较大的差异,取值0.1最终会使得去雾影像变得过暗,此取值需要经过统计试验确定。
针对以上不足并结合遥感影像特点,对暗原色先验算法进行针对性改进。首先,分离出影像的失效区域,同时减弱亮白色道路、水体对获取暗通道值的影响;其次,在获得的暗通道值的基础上,采用导向滤波去细化影像的透射率以节省处理时间;然后,对影像复原模型中的参数进行试验性改进;最后,针对去雾后影像的暗淡失真现象,采用自动色阶增强影像色彩。本文算法流程如图1所示。
图1 本文算法流程Fig.1 A flowchart that improves the algorithm
文献[14]算法对白色场景、偏白色物体、水面等大面积较亮的图像是失效的,本文在获取暗原色的过程中,对暗通道值设置阈值,若像素点的暗原色值大于阈值,则该像素点在失效区域中,此时将阈值直接赋值为暗原色值,大于阈值部分不再参与运算,以便减小失效区域的影响,避免因局部失效区的错误计算导致全局暗通道值不准确。失效区在原始影像上的表现为灰度均值较高的区域,利用ENVI软件对试验影像中高亮区范围(白色房顶、水泥路等),进行灰度均值数据统计分析确定最小灰度统计值,统计算法流程如图2所示。
图2 阈值法设置暗通道失效区Fig.2 The dark channel failure area is obtained by threshold method
失效区域阈值表达式如下
(12)
图3 设置失效区域获得的暗通道对比Fig.3 Dark channel contrast map obtained by setting failure area
大面积亮色水域中的像素也可能会被错误地分类为云雾(如湖泊或河流水面),导致去云雾时也连同水体信息一起去掉,而水体对蓝波段的反射率差异较大,为减轻影像中较亮水面去雾后色彩失真现象,首先对水体区域进行检测分离,采用归一化差分水体指数NDWI(normalized difference water index)提取影像中的水体信息,利用水体在蓝绿波段反射率大的特征,重新合成一个在水域占比较小的蓝色波段,进而在新的蓝色波段上求取暗通道以减少较亮水面对暗原色先验方法的影响,具体方法如下[25]
NDWI=(B_Green-B_NIR)/(B_Green)+B_NIR)
(13)
式中,B_Green表示遥感影像的绿波段;B_NIR表示近红外波段,以NDWI值区分水域和非水域
water_area=NDWI≥0.1
non_water_area=NDWI<0.1
new_blue=B1×non_water_area+(B1+B2+B3)/
3×water_area
(14)
式中,water_area为水域;non_water_area为非水域;new_blue为合成新的蓝色波段;B1为蓝色波段。式(14)表示新蓝色波段为非水域的蓝色波段与水域的红、绿、蓝波段的均值之和,新蓝色波段减少了在水体区域的占比,从而减轻了水域对蓝光的反射,如图4所示,新蓝波段水域的暗通道值在对应的区域已经变得较暗,对求取的暗通道值影响较小。
图4 新蓝色波段暗通道前后对比Fig.4 A front-to-back comparison of the dark channels of the new blue band
原算法采用软抠图来优化粗略的透射率,虽能够得到较细腻的透射率,但是地物的边缘和轮廓不够突出且透射率平滑效果会减弱,软抠图还有一个致命的弱点就是处理速度很慢,处理单幅遥感影像可不用考虑时间因素,但是,若处理多幅甚至是批量处理,软抠图就会耗费大量时间,对硬件设备的要求就会很高,因此软抠图法在实际应用中有较大的局限性,而导向滤波器能自动检测边缘信息,在滤波的同时,能保持边缘细节,优化透射率图,导向滤波算法如图5所示[26]。
图5 导向滤波器Fig.5 Schematic diagram of guided filtering
输入待滤波目标图像p,引导图像I,半径r,ε为正则化参数。输出滤波输出图像q,滤波流程[26]如下。
(1)meanI=fmean(I);meanp=fmean(p);corrI=fmean(I.×I);corrIp=fmean(I.×p);
(2)varI=corrI-meanI.×meanIvarIp=corrIp-meanI.×meanp
(3)a=covIp./(varI+ε);b=meanp-a.×meanI
(4)meana=fmean(a); meanb=fmean(b);
(5)q=meana.×I+meanb。
上述流程中,fmean为一个窗口半径为r的均值滤波器(对应的窗口大小为2r+1),corr为相关,var为方差,cov为协方差。导向滤波优化透射率后效果如图(6)所示。由图6可以看出,用导向滤波对无人机影像的透射率优化效果最为明显(图6(c)),地物的边缘细节和轮廓得以凸出,边缘信息也变得平滑。
图6 导向滤波优化透射率对比Fig.6 Optimization of transmittance by guided filtering
图7 不同t0值的图像去雾效果对比Fig.7 Image defogging effects with different t0
由图7(a)、(e)可知,若直接使用原算法中的t0=0.1,影像去雾效果较好,分布均匀的雾都能够去掉,但同样看到了影像的整体色彩变得黯淡,影像地物细节难以判别;当0.1 算法在去除雾后,虽保持了较好的去雾效果,但影像出现整体色彩变黯淡现象,如图8(b)所示。原始影像也可直接自动色阶增强,能在一定程度上除去雾,但仍有部分均匀白雾未去除,如图8(c)所示。本文算法去雾后再经过自动色阶增强,影像整体去雾较好,影像清晰,对比度较好,符合人眼感官视觉舒适度较好,如图8(d)所示。 图8 本文算法去雾后的自动色阶增强效果Fig.8 The automatic levels after defogging 为验证本文算法对不同类型遥感影像的适用性,试验数据采用经素工厂进行辐射、几何校正、融合、网格后的国产GF-2有雾影像24幅(7300×6908像素)和西南某地无人机航测遥感有雾影像11幅,影像数据涵盖了均匀的薄雾影像、中等浓度有雾影像以及浓雾影像,地物类型包括了山区、城区、平原,本文去雾算法采用IDL编写(硬件:Intel(R)Core(TM)i7-6700HQ CPU,8 GB内存,软件:IDL8.5)。客观评价指标采用Matlab统计,其中影像均值体现影像整体的明暗情况,标准差体现影像的对比度,平均梯度能敏感地反映影像对微小细节反差表达的能力,信息熵则是图像的平均信息量,熵越大,图像纹理越清晰,色彩越丰富。 通过对比试验,分析本文去雾算法对不同雾浓度影像的性能,并与同态滤波、直方图均衡化和原暗原色先验以及自动色阶去雾方法进行对比分析,部分试验结果及定量评价指标如图9和表1所示。 表1 影像D20449去雾效果客观评价指标统计Tab.1 Statistics of objective evaluation indexes of image D20449 defogging effect 图9 轻度薄雾D20449无人机影像去雾Fig.9 Defogging of UAV image with light haze 由图9对比结果可以看出,经过本文算法处理后去雾效果最好,影像清晰度明显提升,影像色彩鲜艳但不失真(图9(f))。较原算法图9(d)而言,本文针对亮水体和水泥路进行了波段重组改进,解决了水体色彩失真现象,如黄色范围所示。由表1可知,原图灰度均值最大,符合有雾影像的亮色表现,本文算法得到的灰度均值为70.26,比原始图亮度低,但高于59.94,解决了原方法去雾后影像的黯淡现象,使得影像色彩得到了恢复增强。自动色阶得到效果相对较好,但是可以从图9(e)看出,左上角区域的雾并没有去除。同时表1中的标准差、信息熵、平均梯度的值分别比原图、同态滤波法和原算法中的高,表明本文算法去雾后的影像地物细节更明显、图像层次更丰富,更清晰,反差更好。从去雾的运算时间来看,本文算法从在单幅影像处理时间上由原算法的93.32″减少到21.80″,处理时间提升了4.28倍,表明用导向滤波优化透射率代替原算法中的软抠图法,计算时避免了高维稀疏矩阵的运算,大幅提高了运算效率。 中等浓度雾的GF-2卫星影像部分去雾试验结果对比如图10所示。 图10 中等浓度雾的GF-2_1633143影像去雾Fig.10 Defogging of GF-2 image with moderate fog concentration 由图10(d)、(f)可以看出,原算法去雾后的影像暗黑至无法识别出地物信息,本文算法处理后既在去雾效果上得到保证又能恢复影像的色彩,表明2.4节中的透射率下限值t0的改进起到了较好的作用,解决了影像暗黑现象。由表2可知,原始影像灰度均值最大,符合有雾影像在视觉上的亮色表现,原算法得到的灰度均值51.03处于较低值范围,影像表现黯淡,本文算法处理后得到71.3,影像比原始图像亮度低,比原算法得到的亮度高,表明在一定程度上去除了雾,同时也不至于变得黯淡,符合预期目标。另外,标准差、信息熵、平均梯度值均比其他方法去雾后的值大,也表明影像更加清晰,地物信息显现得更加丰富,图像的对比度更好。去雾的运算时间也由原算法的198.35″减少到33.25″,提高了5.9倍。通过主观视觉评价和客观定量指标得出,改进暗原色先验算法,对于中等浓度雾影像的去雾也能适用并且有较好的去雾效果。 表2 影像GF-2_1633143去雾效果客观评价指标统计Tab.2 Statistics of objective evaluation indexes of image GF-2_1633143 defogging effect 重度浓雾的GF-2影像去雾试验结果对比如图11所示。 图11 重度浓雾的GF-2_1556364影像去雾 Fig.11 Defogging of GF-2 image with heavy fog concentration 对于含浓雾的城区影像去雾试验结果(表3),可以看到同态滤波和原暗原色法的去雾效果,去雾后影像模糊不清、黯淡无色彩图11(b),直方图均衡化去雾影像质量较好,影像较为清晰(图11(c))。因直方图均衡化实质上是对影像行非线性拉伸,重新分配图像象元值,使一定灰度范围内象元值的数量大致相等,所以对于浓雾影像,其灰度值较大,经过直方图均衡化后,能将较大的灰度值配分到较小的灰度值中,从而达到减少白雾的效果。灰度值越大(即雾越浓)直方图均衡化去雾效果越明显,同时本文算法得到的处理结果与直方图均衡化后的结果,二者在影像上的视觉差异不大,均表现为清晰,地物信息丰富,色彩真实,具有层次感。其去雾后的灰度均值、标准差、信息熵、平均梯度值各项指标也均与轻度薄雾、中等浓度雾影像去雾后的指标变化规律相同。在同等试验条件下,单幅影像处理时间为28.65″,时间效率是原暗原色先验算法的6.5倍,表明2.3节中用导向滤波代替原算法中的软抠图法优化透射率,既可以更好地保护边缘细节,又可以节省计算时间,且处理时间的提升倍数随着影像含雾浓度的升高而升高。各定量指标表明,本文算法对于含浓雾的影像也能适用并且有较好的去雾效果。 表3 影像GF-2_1556364去雾效果客观评价指标统计Tab.3 Statistics of objective evaluation indexes of image GF-2_1556364 defogging effect 本文结合遥感影像特点对暗原色先验方法进行了改进优化,在同等试验条件下,就GF-2卫星影像和无人机低空影像与原算法进行了对比试验,通过目视结果及定量指标表明,本文算法解决了原算法中提及的缺陷问题,即原算法对白色区域或者亮色水体是失效的,从而改善了有雾遥感影像的质量,获得较好的色调保真度;同时提高了单幅遥感影像去雾的时间效率,从而实现批量快速处理,并且通过对不同雾浓度的影像批量处理发现,本文算法相对较为稳定(即针对薄雾、中等浓度雾、浓雾条件的影像都能达到较好的效果),避免单一影像结果存在的偶然性。本文没有设计阈值对影像所含雾浓度的类型进行自适应划分,只是通过影像灰度均值大小大致区分出薄雾、中等浓度雾和浓雾3个类型,下一步研究将考虑进行自动雾浓度分层分段处理。2.5 自动色阶法色彩增强
3 数据结果处理与分析
3.1 无人机影像去雾效果比较分析
3.2 GF-2影像去雾效果比较分析
4 结 论