引言
拿到一景卫星影像时,最先要看的是元数据而不是影像本身。元数据里写着空间分辨率、波段列表、量化位数、获取时间与太阳角,这些参数决定了这景影像能做什么、不能做什么。忽略它们直接开始处理,是新手最常见的错误来源。
影像参数的复杂性在于:分辨率不是四个独立指标的简单叠加,而是相互耦合的一组物理约束。空间分辨率提升会压低信噪比,光谱分辨率提升会分散能量,时间分辨率提升需要更多卫星或更宽幅宽,辐射分辨率的提升直接放大数据量。理解这些耦合关系,才能在看参数表时判断「这颗卫星的设计取舍是什么」。
本文从四个分辨率维度切入,逐层展开波段设计、传感器类型与数据格式。第 1 到第 4 节分别讲空间、光谱、时间、辐射分辨率,第 5 到第 7 节讲多光谱高光谱、SAR 与热红外 LiDAR 三类传感器,第 8 节讲数据格式与元数据,第 9 节讲波段组合与可视化。读完后应当能读懂任意一景影像的元数据,并判断它是否适合自己的任务。
目录
- 空间分辨率与像元尺寸
- 光谱分辨率与波段设计
- 时间分辨率与重访周期
- 辐射分辨率与量化位数
- 多光谱与高光谱传感器
- SAR 与微波遥感基础
- 热红外与 LiDAR 简介
- 数据格式与元数据
- 波段组合与真彩色合成
- 权衡取舍
- 常见坑清单
- 小结
1. 空间分辨率与像元尺寸
空间分辨率是单个像元对应的地面尺寸,通常用米表示。它由传感器的瞬时视场角与轨道高度共同决定:地面采样距离等于瞬时视场角乘以轨道高度。这意味着同样的光学系统,轨道越低分辨率越高,代价是幅宽越窄、重访越难。
1.1 像元尺寸与地面采样距离
地面采样距离 GSD = 瞬时视场角 IFOV × 轨道高度 H
例:IFOV = 10 微弧度,H = 700 km,则 GSD ≈ 7 米
幅宽 ≈ GSD × 探测器像元数(沿扫描方向的几何关系更复杂)
实际产品还会做重采样。Sentinel-2 的 10 米波段原生采样就是 10 米,而 20 米与 60 米波段在发布时被重采样到各自网格,不能与 10 米波段直接逐像元运算。
1.2 分辨率与可识别性
分辨率决定了能「看到」什么,但「看到」与「识别」是两回事。业界有一套经验判据:
- 探测(detection):目标至少占 1 到 2 个像元,只能判断「有东西」。
- 识别(recognition):目标占 4 到 9 个像元,能判断类别(车、船、房)。
- 辨认(identification):目标占 20 个像元以上,能判断型号或细节。
按此推算,10 米影像只能探测到 20 米以上的目标,想识别小汽车(约 4.5 米)需要 1 米以内的分辨率。
1.3 分辨率转换的代价
把低分辨率影像重采样到高分辨率网格不会凭空产生信息。上采样只是插值,不会恢复丢失的细节;下采样会丢失细节但能降低数据量与噪声。跨传感器融合时,必须先统一到较粗的网格,而不是较细的网格。
import rasterio
from rasterio.enums import Resampling
with rasterio.open("B04_10m.tif") as src:
# 将 10 米波段下采样到 20 米网格,使用平均重采样
data = src.read(1, out_shape=(src.height // 2, src.width // 2), resampling=Resampling.average)
1.4 幅宽与分辨率的耦合
幅宽是单次成像覆盖的地面宽度,与空间分辨率直接耦合。探测器像元数是有限的,像元越密分辨率越高,但覆盖范围越小。这导致一个残酷的工程现实:高分辨率意味着高频重访几乎不可能,除非用星座组网。商业小卫星星座正是靠数十上百颗卫星来同时满足高分辨率与高频重访。
- 宽幅中分辨率(如 Sentinel-2 290 km 幅宽):适合区域与全球尺度监测。
- 窄幅高分辨率(如商业亚米级 10 至 20 km 幅宽):适合目标级精细判读。
- 星座方案:用数量换重访,代价是数据一致性与拼接复杂度。
2. 光谱分辨率与波段设计
光谱分辨率指波段的宽度与数量。波段越窄、数量越多,对地物光谱特征的刻画越细。Sentinel-2 的 13 个波段覆盖可见光到短波红外,是理解多光谱设计的经典样本。
| 波段 | 中心波长 | 带宽 | 原生分辨率 | 主要用途 |
|---|---|---|---|---|
| B2 蓝 | 490 nm | 65 nm | 10 m | 水体、大气校正 |
| B3 绿 | 560 nm | 35 nm | 10 m | 植被绿峰 |
| B4 红 | 665 nm | 30 nm | 10 m | 叶绿素吸收 |
| B8 近红外 | 842 nm | 115 nm | 10 m | 植被结构 |
| B11 短波红外 | 1610 nm | 90 nm | 20 m | 含水量 |
| B12 短波红外 | 2190 nm | 180 nm | 20 m | 地质、燃烧 |
2.1 波段宽度与信噪比
波段越窄,进入该波段的能量越少,信噪比越低。这是高光谱传感器的核心矛盾:200 个窄波段能刻画精细光谱曲线,但每个波段的信噪比远低于宽波段的多光谱。设计时通常通过增大口径、延长积分时间或降低空间分辨率来补偿。
2.2 波段组合的物理含义
每个波段都对应特定的地物响应机制,理解机制才能正确使用波段。
- 红光吸收带:健康植被的叶绿素强烈吸收红光,因此植被在红光波段偏暗。
- 近红外高反射:植被细胞结构强烈散射近红外,因此植被在近红外波段偏亮。
- 红边:690 至 740 nm 之间的反射率陡升,是植被胁迫的敏感指标。
- 短波红外水吸收:含水量高的地物在 1.6 与 2.2 微米处反射率下降。
红光的暗与近红外的亮,两者相减再相除,就得到最经典的归一化植被指数 NDVI。
2.3 红边与植被敏感波段
红边位于 690 至 740 nm,是植被反射率从红光的低谷陡升到近红外高台的过渡区。红边位置会随叶绿素含量与植被胁迫状态发生位移,因此对早期胁迫比 NDVI 更敏感。Sentinel-2 特意设置了 B5、B6、B7 三个红边波段,代价是这三个波段只有 20 米分辨率,使用时必须与 10 米波段对齐网格。
3. 时间分辨率与重访周期
时间分辨率是同一地点被重复观测的间隔,取决于轨道、幅宽与卫星数量。它是监测类应用的关键指标:越短的时间分辨率,越能捕捉快速变化的过程。
3.1 名义重访与实际重访
| 卫星 | 名义重访 | 实际可用(多云区) | 说明 |
|---|---|---|---|
| Sentinel-2 双星 | 5 天 | 20 至 60 天 | 受云量影响显著 |
| Landsat 8/9 | 8 天 | 30 至 90 天 | 长时序稳定 |
| MODIS 双星 | 1 至 2 天 | 3 至 7 天 | 粗分辨率换取高频 |
| Sentinel-1 双星 | 6 至 12 天 | 6 至 12 天 | SAR 不受云影响 |
3.2 时序分析的时间采样
做时间序列分析时,采样间隔必须匹配地物变化的特征时间尺度。
- 农作物物候:需要 5 到 10 天一次,才能捕捉播种、抽穗、成熟的关键节点。
- 洪涝监测:需要小时到日级,Sentinel-1 加 MODIS 组合是常用方案。
- 城市扩张:年度到季度即可,Sentinel-2 加 Landsat 长时序足够。
- 地表形变:需要 SAR 干涉的毫米级精度,与光学时间分辨率逻辑不同。
时间采样不足会导致混叠:用 30 天间隔去观测 15 天周期的物候变化,得到的曲线是失真的。工程上常用「多源拼接」缓解采样不足:把 Sentinel-2 与 Landsat 按时间排序交叉使用,能把有效采样间隔从 5 天压到 2 到 3 天。
4. 辐射分辨率与量化位数
辐射分辨率指传感器区分辐射强度差异的能力,通常用量化位数表示。8 位只能表达 256 个灰阶,12 位是 4096 个,14 位是 16384 个。位数越高,对暗弱目标与细微差异的刻画越细。
| 量化位数 | 灰阶数 | 典型传感器 | 动态范围特点 |
|---|---|---|---|
| 8 bit | 256 | 早期商业影像 | 易饱和,暗部细节少 |
| 10 bit | 1024 | MODIS | 中等动态范围 |
| 12 bit | 4096 | Sentinel-2 | 兼顾精度与数据量 |
| 14 bit | 16384 | Landsat 8/9 | 高动态范围 |
| 16 bit | 65536 | 高光谱、SAR | 精度最高,数据量大 |
4.1 DN 与辐亮度
传感器记录的原始值是数字量化值 DN,它是辐亮度经过线性缩放后的整数。DN 本身没有物理意义,必须先转成辐亮度或反射率。
辐亮度 L = (DN × 增益 gain) + 偏移 offset
地表反射率 ρ = π × L × d² / (ESUN × cos θ)
其中 d 为日地距离因子,ESUN 为太阳辐照度,θ 为太阳天顶角
4.2 缩放因子
现代产品通常直接发布反射率,但为了节省存储会乘以缩放因子。Sentinel-2 L2A 的反射率需除以 10000,Landsat 8/9 C2 L2 需乘以 0.0000275 再减 0.2。
import rioxarray
ds = rioxarray.open_rasterio("B04.tif").astype("float32")
reflectance = ds * 0.0000275 - 0.2 # Landsat 8/9 C2 L2 反射率换算
reflectance = reflectance.where(reflectance > -0.1) # 剔除 NoData 填充值
这一步的正确性直接决定后续所有定量分析的可靠性,细节可参考 辐射定标与大气校正 中对定标系数与大气校正链路的展开。
需要强调的是,缩放因子与 NoData 处理顺序不能颠倒:先换算再掩膜会把 NoData 值放大成极端负数或正数,先掩膜再换算才对。工程上建议把「读取、掩膜、换算、裁剪」封装成一个函数,避免每个脚本各写一遍导致不一致。
5. 多光谱与高光谱传感器
多光谱与高光谱的区别在于波段数量与宽度。多光谱通常 4 到 13 个宽波段,高光谱可达数百个窄波段,能近似还原连续光谱曲线。
| 类型 | 波段数 | 波段宽度 | 空间分辨率 | 代表传感器 |
|---|---|---|---|---|
| 多光谱 | 4 至 13 | 20 至 200 nm | 10 至 30 m | Sentinel-2、Landsat |
| 超光谱 | 数十 | 10 至 20 nm | 30 m | EnMAP、PRISMA |
| 高光谱 | 100 至 300 | 5 至 10 nm | 30 m 至 1 km | AVIRIS、Hyperion |
5.1 高光谱的维度灾难
高光谱的优势是能识别精细光谱特征(如矿物种类),劣势是维度灾难。数百个高度相关的波段会让分类器过拟合,且训练样本量往往不足以支撑高维特征空间。
5.2 降维与波段选择
工程上常用三种策略:主成分分析(PCA)压缩到少数正交分量、波段选择(选出信息量最大的若干波段)、以及基于物理的光谱特征提取(吸收深度、吸收位置)。
import numpy as np
from sklearn.decomposition import PCA
cube = np.load("hyperspectral_cube.npy") # 形状 (波段数, 高, 宽)
X = cube.reshape(cube.shape[0], -1).T # 展开为 (像元数, 波段数)
pca = PCA(n_components=10) # 保留前 10 个主成分
X_pca = pca.fit_transform(X)
print("累计解释方差:", pca.explained_variance_ratio_.sum()) # 通常需大于 0.95
6. SAR 与微波遥感基础
SAR 是主动微波传感器,自己发射并接收信号,因此不受云雨与昼夜限制。它的成像机理与光学完全不同:图像亮度反映的是后向散射强度,取决于地表粗糙度与介电常数。
6.1 极化与波段
SAR 的波段用字母表示,常用 L、C、X 三个波段,穿透能力依次递减。
- L 波段(约 23 cm):穿透植被冠层,适合生物量与地下探测。
- C 波段(约 5.6 cm):兼顾穿透与分辨率,Sentinel-1 使用。
- X 波段(约 3 cm):分辨率最高,适合精细结构,穿透力最弱。
- 极化:HH、HV、VH、VV 四种组合,反映不同的散射机制。
6.2 干涉测量
SAR 的独特能力是干涉测量(InSAR):利用两景相位差反演地表形变,精度可达毫米级。这需要严格的几何配准与相位解缠,是独立的技术领域,展开见 SAR 与 InSAR 形变监测 。
6.3 斑点噪声
SAR 图像固有斑点噪声(speckle),源自相干成像的干涉效应。抑制手段包括多视处理、Lee 滤波、非局部均值滤波等。斑点噪声会显著影响目视判读与自动分类,预处理阶段必须处理。
6.4 几何畸变
SAR 是侧视成像,会产生与光学截然不同的几何畸变:叠掩(layover)、透视收缩(foreshortening)与阴影(shadow)。山区尤为明显,陡坡朝向雷达的一侧会被压缩甚至叠掩,背向的一侧会形成阴影。做地形相关分析前,必须用 DEM 做地形校正(terrain correction),否则坡度信息会被误读为地物变化。
7. 热红外与 LiDAR 简介
热红外与 LiDAR 是两类特殊传感器,前者测温度,后者测高程与结构。
7.1 热红外
热红外波段(8 至 14 微米)记录地表自身发射的辐射,通过普朗克定律反演地表温度。它夜间可用,但空间分辨率通常较低(Landsat TIRS 为 100 米,重采样到 30 米),且需要做大气校正与比辐射率校正。
普朗克反演:L = ε × B(T) 其中 ε 为比辐射率,B 为普朗克函数
地表温度 T 需要先从亮温出发,再按比辐射率修正
7.2 LiDAR
LiDAR 发射激光脉冲并测量回波时间,直接得到三维点云。它有两种主要形态:
- 星载光子计数(ICESat-2、GEDI):稀疏采样,用于全球高程与冠层高度。
- 机载/无人机全波形或离散回波:高密度点云,用于城市建模与林业调查。
点云处理涉及滤波、分类、插值成栅格等步骤,是独立的数据形态。
8. 数据格式与元数据
遥感数据的格式多样,选错格式会带来不必要的处理成本。
| 格式 | 特点 | 典型场景 |
|---|---|---|
| GeoTIFF | 通用、支持分块与概览 | 单波段或少量波段栅格 |
| COG | 云优化 GeoTIFF | 对象存储上的在线读取 |
| JPEG2000 | 压缩率高、支持分块 | Sentinel-2 原生分发 |
| NetCDF | 多维数组、自带元数据 | 气候与海洋数据 |
| HDF5 | 层次结构、支持多维 | MODIS、GEDI |
| Zarr | 分块多维、适合云 | 大规模时间序列 |
8.1 元数据关键字段
读取任何影像前,先确认以下字段:
- 坐标系与基准面(EPSG 代码),决定叠加是否正确。
- 像元尺寸与仿射变换,决定地理定位。
- 波段列表与波长中心,决定波段语义。
- 量化位数与缩放因子,决定数值换算。
- NoData 值,决定掩膜策略。
- 获取时间与太阳角,决定辐射一致性。
8.2 读取示例
import rasterio
with rasterio.open("S2A_L2A.tif") as src:
print(src.crs) # 坐标系
print(src.transform) # 仿射变换
print(src.res) # 像元尺寸
print(src.count, src.dtypes) # 波段数与数据类型
print(src.nodata) # NoData 值
print(src.descriptions) # 波段描述
8.3 格式转换
格式转换看似简单,但容易丢信息。GeoTIFF 转 JPEG2000 可能改变分块与压缩方式,NetCDF 转 GeoTIFF 需要指定要提取的变量与维度,HDF5 转 GeoTIFF 需要处理子数据集(subdataset)路径。
gdalinfo NETCDF:data.nc:temperature # 列出 NetCDF 中的子数据集
gdal_translate -of COG "HDF5:modis.h5://band1" out.tif # 从 HDF5 子数据集导出
gdal_translate -co COMPRESS=DEFLATE -co TILED=YES in.tif out.tif # 转带压缩的瓦片 TIFF
转换后务必用 gdalinfo 复核坐标系、像元尺寸与 NoData 是否保持,很多「转换后数据对不上」的问题都源于此。
9. 波段组合与真彩色合成
波段组合是把多个波段映射到 RGB 通道形成可视图像。正确的组合能让特定地物在视觉上突出。
9.1 常用组合
| 组合名称 | 通道映射 | 突出地物 |
|---|---|---|
| 真彩色 | 红、绿、蓝 | 自然视觉,接近肉眼 |
| 标准假彩色 | 近红外、红、绿 | 植被呈红色,最常用 |
| 农业组合 | 短波红外、近红外、蓝 | 农作物与土壤湿度 |
| 城市组合 | 短波红外、近红外、红 | 建成区与裸地 |
| 水体组合 | 近红外、短波红外、红 | 水陆边界清晰 |
9.2 拉伸与增强
原始反射率范围窄(常见 0 到 0.5),直接映射到 0 到 255 会显得灰暗,必须做拉伸。常用方法有线性拉伸、百分比截断拉伸与直方图均衡。
import numpy as np
import rioxarray
r = rioxarray.open_rasterio("B04.tif").squeeze().values
g = rioxarray.open_rasterio("B03.tif").squeeze().values
b = rioxarray.open_rasterio("B02.tif").squeeze().values
stack = np.stack([r, g, b])
def stretch(band, lo=2, hi=98):
p_lo, p_hi = np.nanpercentile(band, [lo, hi]) # 百分比截断
return np.clip((band - p_lo) / (p_hi - p_lo), 0, 1)
rgb = np.stack([stretch(b) for b in stack], axis=-1)
若把假彩色用于深度学习分割任务,注意输入通道的顺序会直接影响预训练权重的迁移效果,相关经验可参考 图像分割技术全景 。
权衡取舍
| 决策点 | 选项 A | 选项 B | 建议 |
|---|---|---|---|
| 空间分辨率 | 亚米级窄幅宽 | 10 米宽幅宽 | 按最小可识别目标反推 |
| 光谱配置 | 多光谱宽波段 | 高光谱窄波段 | 常规监测用多光谱,矿物识别用高光谱 |
| 传感器类型 | 光学 | SAR | 需要全天候或形变监测用 SAR |
| 时间分辨率 | 单星低频 | 星座高频 | 按变化特征时间尺度选 |
| 量化位数 | 8 位省存储 | 14 位保精度 | 定量分析一律用高位深 |
| 数据格式 | 原生分发格式 | COG 加 STAC | 在线分析用 COG |
取舍的本质是「用可接受的精度换可承受的成本」。没有哪个维度可以无代价地拉满,理解耦合关系才能做出合理选择。
常见坑清单
- 混用不同分辨率的波段:Sentinel-2 的 10 米与 20 米波段不能直接逐像元运算,需先重采样到统一网格。
- 忘记反射率缩放:直接使用 DN 计算指数,数值范围错误导致阈值全部失效。
- 忽略 NoData:填充值参与统计会拉偏均值与分位数,读取后必须掩膜。
- 假彩色通道顺序颠倒:近红外与红光位置写反,植被会显示为蓝色而非红色。
- 用 8 位显示定量结果:拉伸过度会掩盖真实差异,定量分析保留浮点。
- 认为高光谱一定优于多光谱:维度灾难与低信噪比常让高光谱在分类任务上不如多光谱。
- 忽略太阳角差异:不同时相太阳高度角不同,未归一化会产生伪变化。
- 把 SAR 亮度当反射率:SAR 后向散射与光学反射率物理量不同,不能混用。
- 用低分辨率影像重采样冒充高分辨率:插值不产生新信息,只会让结果看起来更「平滑」。
- 忽略传感器过境时间:不同传感器过境地方时不同,太阳角差异会引入系统性偏差。
小结
卫星影像的四个分辨率维度构成了一个相互耦合的约束系统。理解它们的物理含义与耦合关系,是判断「这景数据能不能用」的基础。元数据不是装饰,而是解读影像的钥匙:坐标系决定叠加是否正确,缩放因子决定数值是否有意义,波段中心波长决定能识别什么地物。
从工程角度看,最重要的能力是「按需求反推参数」。业务需要识别什么目标,就反推空间分辨率;需要捕捉什么变化,就反推时间分辨率;需要定量反演什么参数,就反推波段配置与量化位数。参数不是越高越好,而是越匹配越好。
下一步建议先补齐辐射链路,理解 DN 到反射率的完整转换,再看坐标系与投影,最后进入具体的处理实战。把基础要素吃透之后,后面所有的处理步骤都会变得有迹可循,而不是照着教程点鼠标。
继续阅读
探索更多技术文章
浏览归档,发现更多关于系统设计、工具链和工程实践的内容。