3. 研究区影像裁剪与云掩膜

在完成Sentinel-2 L2A级产品的获取与波段组织之后,下一步必须把“整景影像”变成“研究区可用影像”。这一步看似只是裁剪,实际上包含三个相互衔接的处理环节:用矢量边界限定分析范围、用场景分类(SCL)波段识别并剔除云与云影等无效像元、对裁剪与掩膜后的影像做质量评估。三者顺序与参数设置会直接影响后续铁染与羟基蚀变信息提取的可靠性,因此需要按工程化方式处理,而不是简单点几下裁剪工具。

一、基于矢量边界的裁剪:先统一坐标系,再控制像元对齐

裁剪的输入是研究区矢量边界(常见为Shapefile或GeoJSON面要素)与Sentinel-2 L2A影像。Sentinel-2 L2A产品默认采用UTM/WGS84投影,不同轨道带号不同,而研究区矢量常为CGCS2000或WGS84地理坐标。裁剪前应先把矢量重投影到与影像一致的UTM带号,避免在裁剪时由软件隐式重采样造成边界偏移。以某研究区为例,若影像为UTM Zone 48N(EPSG:32648),矢量也统一到EPSG:32648,再执行裁剪。

裁剪方式建议采用“按掩膜提取”(Clip raster by mask layer)而非“按范围裁剪”,这样输出保留矢量边界形状,边界外像元被赋为NoData。关键参数包括:输出范围取矢量边界、像元大小保持10 m(或20 m,视分析波段而定)、重采样方法选最近邻(Nearest),因为SCL是分类波段,必须用最近邻避免类别值被插值成无意义数值。若研究区跨两景影像,应先做镶嵌再裁剪,或分别裁剪后按时间与轨道分组,避免不同成像日期混在一起影响蚀变异常对比。

二、用SCL场景分类波段生成云掩膜

Sentinel-2 L2A产品自带SCL(Scene Classification Layer)波段,像元值对应不同地表类别。常用类别包括:4为植被、5为裸土、6为水体、8为云中概率、9为云高概率、10为薄卷云、11为雪。云掩膜的核心是把SCL中代表云、云影、雪、无数据等类别标记为无效,其余保留。典型做法是构建一个二值掩膜:有效像元为1,无效像元为0,再用掩膜对反射率波段做逐像元乘法或按掩膜裁剪。

在具体实现上,可用栅格计算器或Python(rasterio)完成。示例逻辑如下(参数为教学示例,实际应按研究区调整):

import rasterio
import numpy as np

with rasterio.open("SCL_20m.tif") as src:
    scl = src.read(1)
    profile = src.profile

# 教学示例:将云、云影、雪、无数据设为无效
invalid_classes = [0, 1, 3, 8, 9, 10, 11]
mask = np.isin(scl, invalid_classes).astype(np.uint8)
valid = 1 - mask  # 1为有效,0为无效

profile.update(dtype="uint8", count=1, nodata=0)
with rasterio.open("cloud_mask.tif", "w", **profile) as dst:
    dst.write(valid, 1)

需要注意,SCL为20 m分辨率,而蓝、绿、红、近红外为10 m。应用掩膜前应把SCL最近邻重采样到10 m,保证与反射率波段逐像元对齐;若直接对20 m掩膜做双线性重采样,会把类别边界模糊化,导致云边缘残留或误删。另一个常见问题是薄卷云(类别10)在SCL中覆盖范围偏大,若研究区位于高海拔或薄云频繁区域,可结合波段比值(如卷云波段B10阈值)做二次判断,但应保留原始SCL掩膜作为对照,避免过度剔除导致有效像元不足。

三、无效值处理与影像质量评估

掩膜之后,影像中会出现大量NoData像元。无效值处理包括两层:一是确保NoData值在后续计算中被正确识别(如设为-9999或NaN),避免被当作0参与统计;二是在做蚀变指数(如铁染用B2/B4、B11/B12组合,羟基用B11/B12)计算时,对无效像元做传播处理,即任一输入波段无效则输出无效。若使用波段运算,建议先统一NoData标记,再逐波段检查有效像元比例。

影像质量评估应给出可判断的指标,而不是只看“图好不好看”。建议至少统计:研究区总面积、裁剪后有效像元数、云及云影覆盖比例、各波段有效像元比例、以及按月份或轨道分组的可用影像数量。例如某研究区面积约1200 km²,单景裁剪后有效像元占72%,云与云影占21%,其余为边界外与无数据;若某月云覆盖超过40%,则该月影像不宜单独用于蚀变异常提取,应与其他月份合成或改用中值合成。质量评估结果应形成一张简表,作为后续选择影像、确定合成策略的依据。

Sentinel-2 L2A 研究区裁剪与云掩膜处理链 输入:L2A 影像 B2/B3/B4/B8/B11/B12 SCL 20 m 场景分类 研究区矢量边界 重投影至 EPSG:32648 面要素,边界外置 NoData 按掩膜裁剪 像元 10 m / 20 m 重采样:最近邻 SCL 重采样 20 m → 10 m 最近邻,保持类别值 生成云掩膜 无效类:0,1,3,8,9,10,11 有效=1,无效=0 应用掩膜 反射率 × 有效掩膜 无效像元置 NoData 质量评估 有效像元比例 云/云影覆盖 % 各波段有效比例 按月/轨道分组 可用影像数量 阈值判断: 云>40% 不单独使用 关键控制点 ① 矢量与影像坐标系一致,裁剪用“按掩膜提取”,重采样用最近邻; ② SCL 先重采样到 10 m 再参与掩膜,避免类别边界模糊; ③ 无效像元统一 NoData 标记,波段运算时做无效传播; ④ 质量评估给出比例与分组统计,作为后续合成与异常提取的筛选依据。

把上述流程固化为可重复执行的步骤后,建议每次处理都保留三份中间成果:裁剪后的原始反射率影像、SCL重采样后的分类栅格、以及最终的有效掩膜。这样在发现云边缘误删或边界偏移时,可以快速回溯到具体环节,而不是从头重做。对于铁染与羟基蚀变识别而言,裁剪与云掩膜不是“预处理杂活”,而是决定异常信息是否真实、是否可对比的第一道质量控制关口。