卫星图像处理基础与应用 - 从遥感到变化检测
卫星影像与遥感基础
卫星图像处理 (Satellite Image Processing) 是解析人造卫星传感器获取的地球观测数据的技术,广泛应用于农业、环境监测、城市规划、防灾和气候变化研究等领域。遥感通过卫星或航空平台搭载的传感器,在不直接接触地表的情况下获取地球表面信息。不同传感器捕获不同波段的电磁辐射,揭示肉眼不可见的地表特征。
主要卫星平台:
- Sentinel-2 (ESA): 13 个波段,分辨率 10-60m,5 天重访。免费开放。最适合植被和水质监测
- Landsat 8/9 (NASA/USGS): 11 个波段,分辨率 15-100m,16 天重访。免费。拥有 40 年以上的时序数据
- ALOS-2 (JAXA): SAR (合成孔径雷达),分辨率 1-10m。可全天候观测
- WorldView-3 (Maxar): 31cm 全色分辨率,商业卫星中的最高分辨率
- Planet (PlanetScope): 3m 分辨率,每日全球覆盖。由约 200 颗卫星组成的星座。商业
光谱波段:
- 可见光 (RGB):自然色彩,与人眼所见相同
- 近红外 (NIR):植被强反射,用于植被监测
- 短波红外 (SWIR):水分敏感,用于土壤湿度和矿物识别
- 热红外 (TIR):地表温度测量
卫星影像的特点:
- 多光谱:不仅是可见光,还同时观测近红外、短波红外、热红外等多个波长带
- 大范围:单景影像可覆盖 100km × 100km 以上
- 周期性:定期观测同一地点,可追踪时序变化
- 大容量: Sentinel-2 单景 (全波段) 约 800MB
卫星影像与普通 RGB 图像不同,每个像素表示的是物理量 (辐射亮度或反射率),是定量数据。充分利用这一特性的解析正是遥感的核心。
预处理 - 几何校正与大气校正
原始卫星影像包含传感器的几何畸变、大气影响和地形影响。要进行定量分析,去除这些影响的预处理不可或缺,预处理将原始数据转换为可分析的地表反射率数据。
几何校正 (Geometric Correction):校正卫星姿态变化、地球曲率和地形起伏导致的影像畸变,精确配准到地图坐标系 (如 UTM)。
- 正射校正:使用 DEM (数字高程模型) 消除地形影响,转换为垂直俯视的影像 (正射投影)
- GCP (Ground Control Point):使用已知地面坐标点提高几何精度
- Sentinel-2 L1C 产品已完成几何校正,定位精度约 12m (CE95)
大气校正 (Atmospheric Correction):去除大气散射和吸收的影响,估算地表真实反射率。
- TOA (Top of Atmosphere) 反射率:大气顶反射率,包含大气影响
- BOA (Bottom of Atmosphere) 反射率:地表反射率,即大气校正后的值
- Sen2Cor: ESA 官方的 Sentinel-2 大气校正工具,负责 L1C → L2A 转换
- 6S (Second Simulation of Satellite Signal):基于辐射传输模型的高精度大气校正。同类工具还有 FLAASH
- Sentinel-2 L2A 产品已完成大气校正,可直接使用
云检测与掩膜:被云覆盖的像素不含地表信息,必须从分析中排除。Sentinel-2 的 SCL (Scene Classification Layer) 波段可自动分类云、云影和积雪,Fmask 算法也被广泛使用。深度学习方法 (如 s2cloudless) 提供更准确的云检测。云覆盖率超过 30% 的场景通常不予使用。
植被与水体指数 - 波段运算的信息提取
通过卫星影像多光谱波段的数学组合 (波段运算),可以定量评价植被活力、水体分布和土壤状态。这些指数是环境监测的基本工具。
NDVI (归一化植被指数):使用最广泛的植被指数,利用健康植被强反射近红外 (NIR)、吸收红光 (Red) 的特性。
NDVI = (NIR - Red) / (NIR + Red)
- 值域 [-1, 1]。裸土 0.1-0.2,草地 0.3-0.5,森林 0.6-0.9,水体 < 0
- Sentinel-2 使用 Band 8 (NIR, 842nm) 和 Band 4 (Red, 665nm)
- 应用:农作物长势监测、森林健康评估、干旱监测、城市绿化分析
NDWI (归一化水体指数):用于水体检测。
NDWI = (Green - NIR) / (Green + NIR)
- 水体 NDWI > 0,陆地 NDWI < 0
- 用于洪水制图和湖泊面积变化追踪
其他常用指数:
- EVI (Enhanced Vegetation Index): NDVI 的改良版,修正大气和土壤背景影响。在茂密植被区不易饱和
- NDBI (Normalized Difference Built-up Index):归一化建筑指数,用于城市区域提取。(SWIR - NIR) / (SWIR + NIR)
- NBR (Normalized Burn Ratio):归一化燃烧比,用于火灾迹地检测和损害评估。(NIR - SWIR2) / (NIR + SWIR2)
在 Python 中,用 rasterio 读取波段数据,再用 NumPy 的数组运算计算指数。为避免除零,需要加上 np.where(denominator != 0, numerator/denominator, 0) 这样的保护处理。
土地覆盖分类 - 机器学习地表分类
土地覆盖分类 (Land Cover Classification) 是将卫星影像的每个像素分类为「森林」「农田」「城市」「水体」等类别的处理,对城市规划、环境评估和碳收支估算不可或缺。
监督分类方法:
- 随机森林:使用多光谱波段值和指数 (NDVI、NDWI 等) 作为特征训练分类器。可用 scikit-learn 实现,精度一般为 85-90%。简单有效,是遥感分类的主力方法
- SVM (Support Vector Machine):在高维特征空间中寻找最优分类超平面,擅长高维分类。小样本数据集时表现好
- 深度学习 (CNN):学习空间模式,用 U-Net 或 DeepLab 进行高精度的像素级分割,精度可达 90-95%。需要大量标注数据但精度最高
训练数据获取:
- 人工标注:参照 Google Earth 或高分辨率影像,用多边形指定各类别的代表性区域
- 每个类别至少收集 100-500 个像素的样本
- 考虑类别间的均衡,对少数类别进行过采样
- 现有数据集:CORINE Land Cover (欧洲), NLCD (美国)
- 众包:OpenStreetMap 数据作为弱标签
精度评估:从混淆矩阵 (Confusion Matrix) 计算以下指标。
- 总体精度 (Overall Accuracy, OA):整体正确率,目标 85% 以上
- Kappa 系数:修正偶然一致后的精度,0.8 以上为优秀
- 生产者精度 (Producer's Accuracy):各类别的召回率 (Recall)
- 用户精度 (User's Accuracy):各类别的精确率 (Precision)
Google Earth Engine (GEE):云端地理空间分析平台,可从浏览器访问 PB 级卫星数据并执行分类处理。支持 JavaScript 和 Python API,最适合大规模时序分析。
变化检测 - 从时序影像中提取变化
变化检测 (Change Detection) 是比较不同时期拍摄的卫星影像、自动识别地表变化的技术,应用于森林砍伐、城市扩张和灾害损失的掌握。
变化检测方法:
- 影像差值法:直接计算两期影像 (或指数) 的差值,用阈值判定变化 / 非变化。最简单,但阈值设定是难点,且对配准精度要求高
- 比值法:计算两期影像的比值,对大气条件差异更稳健
- 变化向量分析 (CVA):将多波段的变化表示为向量,在多维光谱空间中同时评价变化的幅度和方向
- 分类后比较:分别对两期影像分类,比较分类结果的差异
深度学习变化检测:
- 孪生网络 (Siamese Network):将两期影像输入同一编码器,从特征差异中检测变化。FC-Siam-diff 是代表方法
- BIT (Bitemporal Image Transformer):基于 Transformer 捕获长距离空间依赖关系,实现高精度变化检测
- 精度: F1 分数 0.85-0.92 (取决于数据集)
应用场景:
- 城市扩张监测:检测新建建筑和道路
- 森林砍伐:监测森林覆盖减少
- 灾害评估:洪水、地震、火灾的损害范围
- 农业监测:作物种植面积变化
时序分析:不止于两期比较,解析数年的时序数据可以区分季节波动和真实变化。利用密集时间序列 (如 Sentinel-2 每 5 天) 构建像素级时间曲线,可检测突变点 (如砍伐) 和渐变趋势 (如退化)。BFAST (Breaks For Additive Season and Trend) 算法分离时序的季节成分和趋势成分,是时序变化检测的代表方法。
实践案例 - 森林砍伐检测:按月计算 Sentinel-2 的 NDVI 时序,提取与去年同月相比下降 0.3 以上的区域作为砍伐候选,再应用云掩膜和季节波动校正来减少误报。Global Forest Watch 就是用这一方法近实时监测全球森林变化的。
实用卫星图像处理 - 工具与工作流
本节介绍在实务中运用卫星图像处理所需的具体工具、数据获取方法和处理流程,以可免费使用的资源为主。
数据获取:
- Copernicus Open Access Hub:免费下载 Sentinel-1/2/3 的全部数据,可通过 API 批量获取
- USGS EarthExplorer:免费提供 Landsat 全部存档,也可获取 MODIS 和 ASTER
- Google Earth Engine:云端处理平台,免费访问 PB 级卫星数据,无需下载即可完成大规模处理。JavaScript/Python API
- AWS Open Data:从 S3 直接访问 Sentinel-2、Landsat 的 COG (Cloud Optimized GeoTIFF)
处理工具:
- QGIS:开源 GIS 软件,支持卫星影像显示、波段运算和分类,并有遥感分析插件。免费
- SNAP (ESA): Sentinel 数据的官方处理工具箱,整合了大气校正、几何校正和 SAR 处理
Python 库:
- rasterio:地理栅格数据读写。用
rasterio.open()读取 GeoTIFF,再用 NumPy 运算 - GDAL:格式转换和重投影的基础库
- xarray + rioxarray:将卫星数据作为多维数组高效处理,适合时序分析
- scikit-learn:分类和聚类算法
- sentinelsat: Sentinel 数据自动下载
典型工作流:
- 数据获取:下载 Sentinel-2 L2A (已完成大气校正) 或使用 Google Earth Engine
- 预处理:应用云掩膜 (Sen2Cor / SCL) → 仅提取有效像素
- 分析:计算 NDVI → 构建时序堆栈 → 变化检测或分类
- 输出:结果导出为 GeoTIFF
- 可视化:在 QGIS 中制图或发布 Web 地图
大规模处理策略:全国范围的分析需要处理数 TB 数据,此时 Google Earth Engine、AWS Lambda + S3 或基于 Dask 的并行处理都很有效。使用 COG 格式可以只读取所需区域,大幅减少 I/O。