4. 矿区影像快速预览与质量检查

Landsat 9 的一景 Level-1 或 Level-2 产品解压后通常包含 11 个波段文件、一个 QA 质量波段以及元数据文件,单景数据量在 1 GB 上下。在正式进入辐射定标、大气校正、裁剪与指数计算之前,先花十几分钟做一次快速预览与质量检查,可以避免把云量过高、条带缺失或无效值异常的影像带入后续流程,从而节省大量返工时间。本节围绕四个动作展开:波段组合显示、直方图统计、无效值识别,以及基于前三者做出的可用性判断。

一、先建立“看什么”的参照:波段组合的物理含义

Landsat 9 的 OLI-2 传感器波段设置为:B1 海岸气溶胶、B2 蓝、B3 绿、B4 红、B5 近红外、B6 短波红外1、B7 短波红外2、B8 全色、B9 卷云;TIRS-2 提供 B10、B11 两个热红外波段。矿区预览最常用的三种组合各有明确用途:

  • 真彩色 4-3-2(红-绿-蓝):接近人眼所见,用于判断地物类型、道路与建筑分布、水体颜色,是向非遥感专业方沟通时最直观的组合。
  • 标准假彩色 5-4-3(近红外-红-绿):植被呈红色,裸岩、尾矿库、排土场、裸露地表呈灰白或青灰色,是识别矿区扰动范围与植被恢复情况的主力组合。
  • 短波红外组合 7-6-4 或 6-5-4:对含水矿物、铁染蚀变和土壤湿度敏感,适合观察酸性矿山排水影响区、尾矿表面湿度差异与采坑边坡岩性变化。

实际操作中,在 QGIS 中通过“图层属性 → 符号化 → 多波段彩色”指定 R/G/B 对应波段即可;在 ENVI 中使用 Band Math 或 Layer Stacking 后以 RGB 通道加载;在 Python 中可用 rasterio 读取三个波段并堆叠为三通道数组,再用 matplotlib 的 imshow 显示。需要注意两点:一是显示拉伸方式应选择 2% 线性拉伸或标准差拉伸,否则矿区高反射的裸岩与低反射的水体会同时被压暗或过曝;二是预览阶段不要急于做辐射定标,直接用 DN 值显示即可满足目视判读需求。

Landsat 9 矿区影像快速预览与质量检查 输入数据 B1–B11 波段文件 QA_PIXEL 质量波段 MTL 元数据 ① 波段组合显示 4-3-2 真彩色 5-4-3 标准假彩色 7-6-4 短波红外 ② 直方图统计 DN 值分布范围 均值 / 标准差 / 分位数 异常尖峰与截断 ③ 无效值识别 0 值填充 / 条带缺失 QA 云与阴影位 饱和像元与负值 可用性判断 云量 ≤ 10%? 矿区主体无缺失? 直方图无异常截断? 地物层次可分辨? 通过 进入预处理流程 不通过 换景或掩膜后重评 关键判读经验 · 假彩色中植被偏红、裸岩偏灰白,若整景偏红说明植被覆盖高,矿区扰动需放大定位 · 直方图出现 0 值尖峰或右侧截断,多为填充边界或饱和像元,需结合 QA 波段确认 · 云量阈值按任务定:变化检测宜 ≤ 10%,大范围背景调查可放宽至 30%

二、直方图统计:用数字确认“看起来正常”

目视判读容易被显示拉伸误导,直方图统计则给出客观依据。对每个波段计算最小值、最大值、均值、标准差以及 2%、98% 分位数,重点观察三类现象。第一,若某波段最小值恒为 0 且 0 值像元占比明显偏高,通常意味着影像边缘存在填充区或数据缺失。第二,若直方图在最大值附近出现陡峭截断,说明存在饱和像元,矿区中大面积高反射的白色尾矿或新翻裸土容易触发,后续计算指数时会产生虚假高值。第三,若均值与中位数偏离较大、分布呈明显双峰,往往对应云影与晴空地表混合,需要结合 QA 波段进一步分离。

以 Python 为例,读取单波段并统计的代码如下(示例参数,实际数值以所用影像为准):

import rasterio
import numpy as np

with rasterio.open("LC09_L2SP_xxx_B5.TIF") as src:
    arr = src.read(1)
    valid = arr[arr != 0]          # 排除填充值
    print("min/max:", valid.min(), valid.max())
    print("mean/std:", valid.mean().round(2), valid.std().round(2))
    p2, p98 = np.percentile(valid, [2, 98])
    print("2%/98%:", p2, p98)
    print("zero ratio:", (arr == 0).mean().round(4))

把 2% 与 98% 分位数直接作为显示拉伸的上下限,是预览阶段最稳妥的做法,既保留矿区暗部(水体、阴影)层次,又不让高反射地物过曝。

三、无效值识别:区分“没数据”和“数据不可用”

无效值有两类,处理方式不同。第一类是结构性无效,包括影像边缘的 0 值填充、Landsat 7 式的条带缺失、以及部分产品中的负值填充,这类像元在后续任何计算中都必须掩膜掉。第二类是质量性无效,即像元有数值但不可信,典型是云、云阴影、卷云和雪,Landsat 9 的 QA_PIXEL 波段以位标志(bit flag)形式记录这些属性。

QA_PIXEL 常用位含义为:bit 0 填充、bit 1 膨胀云、bit 3 云、bit 4 云阴影、bit 5 雪。判断某像元是否为云,可用按位与运算:(qa & (1 << 3)) != 0。实际检查时,建议先统计各标志位的像元占比,再叠加到假彩色影像上目视核对,确认云掩膜与真实云区一致。若云量占比超过任务阈值,或云团正好压在采坑、排土场等关键目标上,就应换用相邻时相影像,而不是强行修补。

快速检查小技巧:把 QA 波段按云、阴影、填充分别二值化后叠加为三色图层,一眼即可看出无效像元在空间上是否集中在矿区主体,还是仅分布在影像边缘。

四、形成可用性结论

三项检查完成后,用一张简短的检查记录把结论固定下来,便于团队复核和后续追溯。记录至少包含:影像标识与获取日期、云量百分比、矿区主体范围内无效像元占比、各关键波段 DN 值范围是否正常、所选波段组合、以及“通过 / 有条件通过 / 不通过”的结论与理由。有条件通过通常指云量可接受但局部有薄云,需要在后续流程中加掩膜;不通过则直接换景。这样一次十几分钟的预览,就把后续处理的风险前置拦截了。