4. 矿区影像预处理与质量控制
矿区时序变化检测的可靠性,首先取决于进入分析环节的每一景影像是否“干净、可比、可用”。与普通地表覆盖监测相比,矿区面临更棘手的问题:露天采坑与排土场形成的高反射率裸岩、粉尘与复垦植被混杂的地表、频繁的爆破与运输活动,以及大量小面积、高对比度的变化斑块。这些特点使得云掩膜、大气校正和合成策略的选择必须更有针对性,而不能照搬大区域植被监测的默认参数。本节围绕四个环节展开:云与云阴影掩膜、大气校正产品选择、影像合成与去重、影像可用性评估与时间序列完整性检查。
云与云阴影掩膜:从“能遮住”到“遮得准”
Landsat 与 Sentinel-2 的常用产品已附带质量波段,例如 Landsat Collection 2 的 QA_PIXEL 位标志和 Sentinel-2 L2A 的 SCL 场景分类层。在 GEE 中,最直接的做法是用位运算提取云、云阴影、卷云和雪标志。以 Landsat 8/9 C2 L2 为例,常用位为:填充位 0、膨胀云位 1、卷云位 2、云位 3、云阴影位 4、雪位 5。掩膜时通常保留“非云且非阴影”的像元:
var qa = img.select('QA_PIXEL');
var cloudShadowBit = 1 << 4;
var cloudBit = 1 << 3;
var cirrusBit = 1 << 2;
var mask = qa.bitwiseAnd(cloudShadowBit).eq(0)
.and(qa.bitwiseAnd(cloudBit).eq(0))
.and(qa.bitwiseAnd(cirrusBit).eq(0));
var clean = img.updateMask(mask);
需要强调的是,位掩膜只是起点。矿区常见的薄云、烟尘和爆破扬尘往往不被云标志捕获,而采坑边坡的阴影又容易被误判为云阴影。实践中建议叠加两个补充手段:一是用 QA_RADSAT 或 QA_AEROSOL 剔除饱和与高气溶胶像元;二是对关键年份做目视抽查,把误掩膜严重的区域记录下来,必要时用缓冲区膨胀(如对云标志做 1~2 像元膨胀)来覆盖薄云边缘。对于 Sentinel-2,SCL 中类别 3(云阴影)、8(中概率云)、9(高概率云)、10(卷云)应剔除,类别 4(植被)、5(裸土)、6(水体)保留,类别 7(低概率云)是否保留需结合矿区实际判断——在粉尘重的采场,类别 7 常混入扬尘,建议剔除。
大气校正产品选择:地表反射率优先
时序变化检测要求不同时相影像具有可比性,因此应优先使用已做大气校正的地表反射率(SR)产品,而不是大气层顶反射率(TOA)。Landsat C2 L2 提供 SR 与 ST,Sentinel-2 L2A 提供经 Sen2Cor 处理的 BOA 反射率。选择时需注意三点:其一,Landsat C2 L2 的 SR 产品在 2021 年后处理版本统一,跨年比较前应确认所有影像来自同一 Collection 与同一处理版本;其二,Sentinel-2 L2A 在 2022 年前后基线版本有差异,跨基线拼接可能引入系统性偏移,建议在合成前用稳定参考区(如矿区外围未扰动裸地)做相对辐射归一化;其三,矿区高反射裸岩在 SR 产品中仍可能出现饱和,需结合 QA_RADSAT 剔除。
若研究区跨越 Landsat 与 Sentinel-2,二者 SR 产品的波段响应与空间分辨率不同,直接混用会引入偏差。可行做法是:以 Landsat 为主时序,Sentinel-2 仅用于补充云空缺年份,并在合成前将 Sentinel-2 重采样至 30 m、按波段做线性回归匹配到 Landsat 参考影像。示例中若以 2015—2024 年露天煤矿为对象,可设定 Landsat 8/9 为主、Sentinel-2 为辅,匹配时选取每年 7—9 月无云影像各 3~5 景。
影像合成与去重:中值合成与时间窗口
单景影像受云和阴影影响大,直接逐景比较噪声高。常用策略是按时间窗口做中值合成(median composite),既压制残余云和异常值,又保留地表变化的年际信号。窗口长度需与变化速率匹配:露天矿扩张快,建议按季度或半年合成;复垦区变化慢,可按年度合成。合成前必须去重——同一日期或相邻日期的多景影像若重复参与,会因观测几何差异放大噪声。GEE 中可用 ee.Filter.maxDifference 按时间戳去重,或先按 system:time_start 排序后取每景唯一日期。
var col = ee.ImageCollection('LANDSAT/LC09/C02/T1_L2')
.filterBounds(roi)
.filterDate('2020-06-01', '2020-09-30')
.map(maskCloud);
var dedup = col.sort('system:time_start')
.distinct('system:time_start');
var composite = dedup.median().clip(roi);
合成后还应检查合成影像的有效像元比例。若某年合成结果中有效像元不足研究区面积的 60%,说明该年云覆盖过重,应扩大时间窗口或引入辅助传感器,而不是强行使用。
影像可用性评估与时间序列完整性检查
完成掩膜与合成后,需要对整条时间序列做“体检”。可用性评估建议至少包含三项指标:每期有效像元占比、研究区平均云量、以及关键监测区(采坑、排土场、复垦区)的局部有效像元占比。时间序列完整性检查则关注两点:一是时间间隔是否均匀,是否存在连续多年缺失;二是各期影像的辐射一致性,可用稳定参考区的均值时序曲线判断是否存在跳变。
下图给出本节预处理与质量控制的主流程与关键判断点,便于对照操作:
以一个 2015—2024 年露天煤矿的示例场景说明判断逻辑:假设研究区面积约 120 km²,按年度中值合成后统计,2015、2016 年有效像元占比分别为 72% 和 68%,2017 年因云覆盖过重仅 41%,2018—2024 年均在 65% 以上。此时 2017 年不达标,处理方式不是直接使用,而是把合成窗口从 7—9 月扩展到 6—10 月,并引入 Sentinel-2 同期影像补充,重新合成后有效像元占比提升至 63%,方可进入分析。同时检查稳定参考区(矿区外围未扰动裸地)的年均值曲线,若某年出现超过 15% 的突变,应排查是否为处理版本差异或大气校正异常,而不是真实地表变化。
需要提醒的是,质量控制不是一次性动作。矿区地表变化快,同一套掩膜阈值在不同年份、不同季节的表现可能不同。建议在正式分析前,对每年选取 2~3 景影像做目视抽查,重点看采坑边缘、排土场坡面和复垦区,确认云掩膜没有误伤高反射裸岩、也没有漏掉薄云与扬尘。只有把“干净、可比、完整”三个条件同时满足,后续的变化检测结果才具备可信度。