王叶天鉴,胡昌华*
(1.广州市城市规划勘测设计研究院,广东 广州 510060)
云是由大气中的水蒸气遇冷液化成的小水滴或凝华成的小冰晶混合组成的漂浮在空中的可见聚合物,会造成特定时间段遥感数据的缺失或扭曲,不利于测绘产品的生产[1]。检测和处理遥感数据中的云层有助于排除或减轻云的干扰,提高遥感数据质量和测绘产品生产效率[2-3]。20 世纪70 年代以来,国内外学者针对遥感数据中云层的检测和处理展开了大量研究,早期主要针对中低分辨率的单幅多光谱遥感影像,运用的特征和方法较简单[4];21 世纪以来,随着传感器技术的进步和以Landsat 系列为代表的遥感数据的逐步开源化[5],针对高分辨率、多源、多时相遥感数据的云层检测和处理研究不断发展,同时计算机领域的成果被不断引入,大幅提高了云层检测和处理的效率。
云层检测和处理要求提取遥感数据具有代表性的特征。地物的辐射特征是被最早、最广泛运用的特征[6]。随着数据量的增加和理论研究的深入,空间特征和时间序列特征也得到了研究与应用[7],积雪数据、数字高程模型、地表温度数据等非遥感数据的引入进一步提高了检测和处理效率[8]。多种特征的综合运用提高了检测和处理的效率,但不可避免地增加了云层检测和处理方法的复杂度,且使云层检测和处理逐渐成为两个独立的过程。云层检测和处理紧密相关但并不相同,前者为了发现遥感数据中存在的云层,后者为了排除遥感数据中云层的干扰并尽可能还原被云层遮蔽地物的特征。目前,不少学者对云层检测的方法进行了整理[9],但对云层处理方法的整理归纳尚未获得足够重视。本文基于现有文献,按照“检测—处理—评定”的顺序,首先介绍特征的选择;再分析和整理现有云层检测和处理算法,并对它们的应用情况进行简要介绍;然后介绍现有主流的效果评定方法;最后归纳现有算法的不足之处,展望将来研究方向。
云层检测要求对遥感数据进行分析处理,通过特定方法提取云层的独特特征,以区分云层和其他地类目标。云层检测方法可大致划分为基于物理机制、基于序列和基于机器学习3大类。
该类方法从云层的形成机制出发,利用影响云层生成的重要因素和云层本身的物理特征进行建模,实现对云层和/或云层阴影的检测;通常要求从遥感数据中获取能有效区分云层和其他地物的特征,以确定一个或一组阈值,用于从遥感数据中分割出云层和/或云层阴影。常用的特征包括纹理特征、亮度特征、温度特征、光谱特征[10-11]以及包括1.38 μm红外波段在内的针对高空云层的辐射特征[12]。该方法在云层检测中得到了广泛应用,并被用于权威的遥感影像云层数据获取。Fmask是其典型代表,针对Landsat系列卫星的数据特点设计,以Landsat 的大气表观反射率和亮度温度为输入,建模区分潜在的云层和无云区域,并结合归一化的温度、光谱特异性和明度的概率分布模型进一步探测云层;同时利用云层阴影在近红外波段的辐射特征,结合传感器的空间姿态等信息,探测云层阴影[13]。针对Fmask 的改进和拓展使其在其他类型遥感数据中也得到了应用[14-15],常用的同类方法包括SPOTCASM[16]、SAFNWC[17]、XBAER-CM[18]等。
该类方法通过定位多时相遥感数据中的明显变化,判断是否为云层造成的变化,并定位云层或无云区域。这种明显变化可以是像素灰度值的变化,也可以是拟合的遥感时间序列数据模型的变化。该类方法需要一定数量且质量满足要求的无云数据作为基准数据,相较于传统方法,对薄云、高层云和云层阴影拥有更好的探测效果,并能有效排除水面、人工建筑等造成的干扰[19],从20 世纪90 年代的ISCCP 计划开始,便逐渐引起了科研工作者的注意[20]。MACSP[21]、BCT等早期算法[7]需要使用多时相遥感数据进行影像合成,对时间序列特征应用不充分。随着遥感数据量的增加和研究的深入,后续算法可直接处理多时相遥感数据构成的时间序列[22-23]。Tmask是其典型代表[23],基于Landsat7 的数据设计,首先通过Fmask 分别处理多时相遥感数据中的每一份数据;然后结合多时相遥感数据的时空信息,利用一种改进的迭代加权法分析Landsat7 的波段2(绿波段)、波段4(近红外)和波段5(中红外),逐像素构建时间序列模型;最后与原始波段数据进行对比,以有效探测云层和云层阴影。与Fmask 相似,Tmask 也得到了改进和拓展,并显著影响了后续云层检测算法的设计[24-26]。
前两类方法需对云层的先验知识进行选择,该类方法则将云层检测视为一种特殊分类问题,对先验知识的要求较低,根据训练数据构建分类器,将遥感数据输入分类器,获取分类结果,再根据分类结果提取云层和/或云层阴影。贝叶斯网络、支持向量机、神经网络、小波分析等传统方法作为前两类方法的辅助,在云层检测中已得到广泛应用[27-30]。近10 年来,深度学习作为机器学习的进一步发展,被引入遥感领域[31]。深度学习方法基于数据本身,进一步独立于物理模型等先验知识,且能有效应对大量的复杂数据和场景。卷积神经网络作为深度学习的经典算法,在不同类型的遥感数据云层提取中得到了应用[32-33],并被不断改进和完善[34-35]。循环神经网络[36]以及DABNet、GeoInfoNet等包含物理机制信息和序列信息的针对地理数据的深度学习方法也被引入云层检测的研究中[37-38]。
云层检测结果本身就是一种地理数据产品[39];但在更复杂的应用场合,单独的云层检测并不能满足实际需求。这些应用场合要求进一步排除云层对遥感数据的干扰,还原被云层干扰的地物信息,以提升遥感数据质量,增加可用的遥感数据总量。因此,云层处理逐渐从云层检测中独立出来,并得到广泛重视。针对不同种类的云层,提出了不同的方法,大致可分为针对厚云层的处理和针对薄云层的处理。
厚云层往往严重甚至完全遮蔽下方的地物目标,造成其几何、辐射和纹理等特征严重扭曲甚至完全丢失。传统针对厚云层的处理可概括为“剔除—置换”,即直接删除云层检测方法提取的待处理遥感数据上有厚云层的部分,再利用另一份作为参考的无云层数据进行置换。这类方法中,小波变换法和图像修复法对云层分布和大小的要求较苛刻[40-41],而同态滤波法、影像融合法则对纹理等特征要求较苛刻[42]。以Landsat为代表的多时相遥感影像方法可有效解决上述问题。该类方法一些基于“剔除—置换”逻辑,以多时相遥感数据合成作为参考的无云数据,以弥补传统方法的不足[43];另一些则直接利用多时态的遥感数据建模,再利用构建的时间序列模型推测被云层遮挡部分的原始数据,不仅有效提高了遥感影像的数据质量,而且增加了可判读和解译的遥感数据总量。参考文献[44]将字典学习引入厚云层处理,并针对多时态遥感数据的时间相关性,对字典学习中的K-SVD和贝叶斯网络部分进行拓展,对时间相关性进行建模,以实现对厚云层严重遮蔽目标的定量数据恢复。参考文献[45]提出了STWR 方法,避免了对无云基准数据的过度依赖,使存在云层的数据也可参与时间序列模型的构建。同时,深度学习的引入进一步改进了多时态遥感数据的建模,提高了模型的强健性[46-47]和还原数据的准确性。
薄云层部分遮蔽下方的地物目标,这些地物目标的几何、辐射和纹理特征被扭曲,但可通过特定的算法还原。相对厚云层处理,薄云层处理更重视对被部分遮蔽地物目标信息的还原。对薄云层进行处理且不破坏被部分遮蔽的地物目标信息是一个挑战。一些薄云层处理方法与厚云层处理方法类似,同样按照“剔除—置换”流程进行[48],在特定场合也可用于厚云层处理。另一些方法则直接基于云层形成的物理机制进行建模,通过大气校正同时完成云层检测和处理,还原地物目标的原始数据[49]。更多方法则致力于利用机器学习方法还原被部分遮蔽的地物目标信息。同态滤波、自适应滤波、模糊聚类、纹理分析等方法得到了广泛应用[50-53]。随着以Landsat为代表的多时相遥感影像数据的逐步开源以及深度学习研究和应用的不断深入,基于多时相遥感影像的薄云层处理研究也广泛展开[54-56]。这些方法不适用于厚云层处理。
不同应用场合对云层检测和处理效果的评定要求存在显著差异,部分仅要求区分有云无云,部分需定量评估云层处理的效果[57-59]。整体精度和由其衍生得到的平均用户精度作为常用的分类精度指标,被广泛应用于云层检测的效果评估[13,16,23,26,37]。查全率、F1-score和交并比等指标同样得到了广泛应用[34,38]。云层的处理涉及对地物目标还原效果的定性或定量评价,常用的评定指标包括平均绝对误差[44]、平均相对误差[44]、均方根误差[45]、平均结构相似性[47,55-56]、平均峰值信噪比[55]、峰值信噪比和色度变化[56]等,仅部分场合使用云层检测的评定指标[48]。实际研究中,由于待处理数据类型、硬件性能、应用场景等不同,不同方法使用的效果评定指标往往存在明显差异,不利于相互之间的效果比较。
云层检测和处理的效果评定要求有可靠的参考数据进行对比。参考数据来源可分为人工标记分类的遥感地物目标库[37-38,60-61]、激光点云和SAR 等非光学成像的遥感数据[62-63]和权威的云层观测数据产品[6,64-65],这3 类参考数据互有侧重,适用于不同场合。权威的云层观测数据产品主要应用于评定多光谱/高光谱单幅/多时相遥感数据的云层检测和处理[66-67];人工标记分类的遥感地物目标库普适性强,可应用于评定各类遥感影像的云层检测和处理;而激光点云和SAR等非光学成像的遥感数据则更多是作为光学遥感数据的辅助[68-69]。在部分场合,地面观测数据也可作为参考数据[70]。
遥感影像上云层的检测和处理研究取得了丰硕成果,获取的测绘产品也在实际生产生活中得到了广泛应用。然而,目前的主流算法依然存在一些问题:首先当地表存在大量水域、冰雪或城市建成区或明显的雾/霾时,对薄云的检测和处理效果将受到严重干扰,且云层阴影检测和处理算法效果明显不如对云层本身的算法;其次目前的云层检测和处理算法在基于物理机制的模型和基于机器学习的模型的应用上,还不能对两种模型进行有效结合;最后多源遥感数据在云层检测和处理中仍以相同种类不同传感器遥感数据的综合应用为主,不同种类传感器数据的综合应用还停留在较初级的阶段。
为解决上述问题,将来云层检测和处理研究应进一步引入深度学习的研究成果,并发展云端的基于统一框架的算法平台,实现对多源遥感数据和多时相遥感数据的综合应用,以及对基于物理机制的模型和基于机器学习的模型的有机结合,从而实现对遥感影像上云层更准确高效地检测和处理。