Haze removal from a single remote sensing image based on a fully convolutional neural network 链接
Ling K, Puyun L, Xiaodong Z, Guanzhou C, Kun Z, Qing W, Xiaoliang T.
Journal of Applied Remote Sensing, 13(3), 036505 (2019).SCI
在遥感影像中,薄雾常常会影响影像后续处理(如目标检测、影像分类等工作)的效果,降低了遥感影像的利用率。单张遥感影像去雾任务是一个秩亏问题,现有的去雾方法大都通过引入多种先验知识来实现影像去雾。本文引入了深度学习算法,提出并构建了一个全卷积神经网络HRFCN以估计透射率图,进而以此为根据合成去雾影像。实验证明,本文提出的模型可以在目视效果和相似性指标上同时达到可观的效果。
1. 简介
雾给遥感影像带来了大量噪声,它大大降低了影像的可见度和对比度,使其表面颜色变淡,影像数据信息量减少。遥感图像如果包含大量的有雾区域,会使许多后续数据处理与解译任务(如影像分割、目标检测和识别、影像分类等)的效果受到大幅影响。我们迫切需要一个有效的去雾算法来解决这个问题。如下图展示了同一区域遥感影像去雾前后的对比,左图为带有厚雾的遥感影像,右图为使用暗通道去雾算法的效果:

经典的去雾算法通过引入先验知识来实现这一功能,这些方法可以分为基于图像增强的算法和基于图像恢复的算法。前者在影像处理中常常会忽视影像的细节部分;而后者又过于注重纹理信息,导致对于白色目标过于敏感,同时,这些算法适用于自然影像,在场景复杂的遥感影像上的表现则差强人意。
为了解决这些问题,我们引入了深度全卷积网络(Fully Convolutional Network,FCN)模型。因此,适合遥感影像的去雾数据集和适合遥感影像的卷积神经网络的结构设计成为了解决遥感影像去雾问题的重点所在。本文设计了泛化能力较强的去雾数据集合成方法以及轻便有效的神经网络:HRFCN。
2. 框架方法
本算法的基本框架仍然基于图像恢复的基本思路,采用大气折射模型作为我们的物理理论基础模型,通过计算大气透射率图来计算雾对原始影像的影响,从而获得去雾后的影像。
2.1 大气折射模型
大气散射模型由Koschmieder等人提出,并由Narasimhan 和 Nayar等人改进,它描述了带雾影像的产生过程,并将求无雾影像这一问题简化成了求大气透射率图的问题。这一模型可以使用下列公式表示:
$$
I(x) = J(x)t(x) + \alpha(1-t(x))
$$
其中,I(x)和J(x)分别表示在像素点x上,摄影直接得到的图像和景物的实际电磁波辐射值,α表示全局大气亮度,在该模型下,每张影像的大气亮度被假定是全局不变的,而t(x)则是在图像中每一点的大气透射率。
该物理模型可以被理解为带雾影像中每个像素的亮度值即为景物的电磁波辐射值和全局大气亮度的线性叠加,而透射率就是线性叠加的权重,视觉上反映为云雾的浓度。而图像去雾的过程,就是通过I(x)求解J(x)的过程。每一点给定的带雾影像像素值即I(x)时,分别求解全局大气亮度和该点的大气透射率,可以使用下列公式求出地物对应的原本辐射值:
$$
J(x) = (I(x) - \alpha)/t(x) + \alpha
$$
不难发现,当某一点的t趋近于0时,该点的像素值即为全局大气亮度。因而,本文使用这一特性来近似求解全局大气亮度:
$$
\alpha = \max \limits_{y\in{ x|t(x) <= t_0} } I(y)
$$
严格来说,t0应该被设置为0,然而由于可能不存在t为0的像素,因而在实际操作中近似地将t0取为接近0的极小值即可。所以,全局大气亮度可以由透射率图推导近似得出,因而透射率图即为在大气散射模型下,求解无雾影像的关键。
基于该模型,我们可以计算出透射率图值,与带雾影像叠加后即可得到去雾影像。基于现实世界中云雾的特点,我们认为云雾的分布与地物分布统计上无关,并且邻近地物的云雾分布也是相近的。为了进一步简化模型,本文还引入了两个假设:(1)不同带雾影像的透射率图在纹理上是相近的;(2)充满云雾的像素应该是纯白色的,即大气像素值α为1,我们基于以上理论来设计了遥感影像去雾模型。
2.2 训练数据集合成流程
本文获取了湖北省上空的若干真实带雾影像,并采用了暗通道先验、非局部去雾和暗目标去除等多个算法对上述影像进行透射率图求解,取其中效果最好的结果,获得了与真实云雾分布情况相近的透射率图,然后我们对这些影像进行了随机翻转、添加高斯噪声等数据增强操作。在此基础上,我们再对原始无雾影像进行数据增强,并与透射率图叠加获得带雾影像,从而获得大量的去雾算法影像对,构建了一个泛化能力较强的合成训练数据集。如下图展示了合成数据集的全部流程。

从下表可以看出,与其他模型中采用的合成去雾影像数据集算法相比,本方法泛化能力更强。

2.3 网络设计
以480×480分辨率的带雾影像作为HRFCN的输入,以对应的相同尺寸的透射率图作为输出。一方面是因为去雾影像与带雾影像之间的差异较小,直接以去雾影像作为输出很容易使得神经网络陷入局部最小点,不能充分利用训练数据集的大量遥感影像数据来学习复杂的函数。另一方面是因为大气折射模型等人类知识先验的引入,可以在训练数据集样本量较小的情况下显著提升模型精度,使得模型得到最好的预测效果。HRFCN由卷积模块和回归模块组成,网络结构如下图所示。

卷积模块首先使用两个卷积层提取原始图像的低层次信息,然后使用三个池化块将影像下采样至60×60分辨率,这样避免了网络结构中出现的细节信息过于冗余的情况。每个池化块由一个最大池化层(MaxPooling)和两个卷积层组成,其中,每个卷积层模块的结构如下图所示。一般来说,为了将图像上采样至原始图像大小,可以使用上采样层(Up-Sampling)或者转置卷积层。在本文提出的网络中的回归模块中,本文使用Up-Sampling层并辅以均值池化层(Average-Pooling)作为均值滤波功能,避免“马赛克”现象。而在网络的最后,使用sigmoid函数回归估计结果。除回归层外的所有层都使用了ReLU作为激活函数。此外,为了获取多尺度下更加丰富的影像特征信息,本文在Conv2和Ave层之间设置了跳跃连接层期待得到更好的效果。

3. 验证实验
3.1 网络训练指标
本文从AID,EvLab等公开的遥感影像场景分类与语义分割数据集中,采集了3000张2000×2000分辨率的清晰影像备用。然后在湖北省上空拍摄得到69张真实的带雾无人机影像,使用暗通道先验去雾算法估计其对应的透射率图,将它们分别重采样到480×480分辨率。本文认为全卷积网络的泛化能力能够通过对少量透射率图样本的学习,处理样本以外的透射率图构成的带雾遥感影像。
3.2 实验结果
为了评估模型质量,比较去雾影像和原始清晰影像的差异,本文使用MSE、结构相似性(structural similarity , SSIM)、峰值信噪比(peak signal-to-noise Ratio, PSNR)、时间消耗四个指标。由于比对在对影像进行归一化后进行,MSE值域为0到1,指标越大则像素级的差异程度越大;SSIM值域也为0到1,指标越大则相似性的程度越大;PSNR值域为0到正无穷大,指标越大则去雾图像相比于真实图像保真的程度越大。
如下图所示,本文的模型在各个指标上都达到了远高于其他模型的效果,而且本文模型指标方差也远低于其他模型,这意味着本文的模型更具有稳定性。

本文将各个模型去雾之后得到的结果连同地面真实值(Ground Truth)汇总在下图中,从左到右依次是带雾影像、HRFCN去雾影像、暗通道先验去雾影像、Dehaze-Net去雾影像、MSCNN去雾影像以及地面真实值。本文注意到,Dehaze-Net和MSCNN两种算法得到的去雾结果在白色目标上效果不佳,并且有时甚至会产生低对比度图像,例如第一张中的房屋和最后一张的河边。而DCP算法在浅色区域的效果明显不如人意,例如第三张中的飞机跑道和第四张的农田,去雾效果出现了严重的失真。同时该算法获得的去雾影像普遍存在去雾程度过高而去雾影像画面偏暗的情况。

为了进一步展示我们算法的效果,我们对比了该算法在现实带雾影像去雾后的效果。如下图中,左侧展示了带有雾的影像,右侧展示了去雾后的影像,圆圈部分展示了同区域下的影像细节。本文发现去雾后的影像能够展示出更生动的画面,更适于遥感影像应用。

4.结论
云雾作为现实生活中的一种常见现象,常常会降低可见光遥感影像的视觉质量。本文介绍了一种全新的遥感影像去雾算法,获得了较好的效果。
如何引用本文:
1 | @article{10.1117/1.JRS.13.036505, |
(作者:廖溥昀,陈关州,朱坤)
