卫星图像分析:土地利用分类与变化检测
什么是土地利用分类与变化检测
土地利用分类是通过分析卫星图像的光谱、空间与时间特征,将地表划分为不同功能类型(如农田、林地、城市、水体)的过程。变化检测则是在多时相图像上识别地表覆盖发生转变的位置与类型。二者结合能够回答“哪里从林地变成了耕地”或“城市扩张速度多快”等关键问题,广泛应用于城市规划、农业监测、灾害评估与生态研究。
本教程面向初学者,将拆解从数据获取到变化检测结果输出的全流程,帮助你快速掌握这一遥感分析核心技能。
卫星图像数据源与选择
常用开放数据源
- Landsat 系列(8/9)
空间分辨率 30 m,重访周期 16 天。提供可见光、近红外、短波红外等多个波段,历史存档自 1980 年代起,适合长期变化分析。 - Sentinel-2(欧空局)
空间分辨率 10 m / 20 m,重访周期 5 天。拥有 13 个波段,红边波段对植被状态极为敏感,是近期土地利用分类的首选。 - MODIS
空间分辨率 250 m – 1 km,每日覆盖。适合洲际尺度、快速变化的动态监测,但细节识别能力有限。
数据下载平台
- USGS EarthExplorer(Landsat)
- Copernicus Open Access Hub(Sentinel)
- Google Earth Engine(在线处理,免下载)
选择数据时优先考虑云量低于 10% 的图像,并确保多期图像处于同一季节,以减小植被物候带来的伪变化。
图像预处理:让数据可比较
预处理是保证分类精度和变化检测可靠性的基础。主要步骤包括:
辐射定标与大气校正
卫星记录的原始值(DN)需转换为地表实际反射率。使用以下工具可完成:
- ENVI 中的 FLAASH/QUAC 模块
- QGIS 中的 Semi-Automatic Classification Plugin (SCP) 基于 6S 模型
- Sen2Cor 专门处理 Sentinel-2 L1C 数据生成 L2A 产品
大气校正步骤(以Sen2Cor为例):
L1C_输入产品 → Sen2Cor → L2A_地表反射率产品
几何精校正
使多时相图像像素精确对齐。若使用同一传感器、同一轨道产品,通常定位误差已较小;跨传感器对比时,需以一幅图为基准,对其他图像进行自动配准(如使用 QGIS 的 Georeferencer 或 ENVI 的 Image Registration Workflow)。
云与阴影掩膜
利用 QA 波段(Landsat 的 QA_PIXEL,Sentinel-2 的 SCL 场景分类图层)自动去除云、云影及雪。手动补充检查可避免漏检薄云。
土地利用分类核心方法
分类体系定义
根据研究目标定义分类系统,通常遵循 FAO 的土地覆盖分类体系(LCCS)或自定义类别。典型的类别如:
- 林地
- 草地
- 耕地
- 水体
- 建设用地
- 裸土
确保类别互斥且完全穷尽。
监督分类流程
适用于有训练样本的情况,精度通常最高。
-
选择训练样本
在高分辨率底图或实地调查辅助下,为每个类别选取 50–100 个像元以上的多边形样本。样本应涵盖类内光谱变异。 -
提取光谱特征与指数
除原始波段外,可计算归一化植被指数(NDVI)、归一化建筑指数(NDBI)、改进归一化水体指数(MNDWI)等,参与分类。NDVI = (NIR - Red) / (NIR + Red) MNDWI = (Green - SWIR) / (Green + SWIR) -
分类器选择
- 随机森林(Random Forest):对噪声鲁棒,能处理高维特征,适合初学者。Python 的 scikit-learn 或 R 的 randomForest 均可实现。
- 支持向量机(SVM):小样本下表现好,但参数调节稍复杂。
- 最大似然法:经典参数分类器,要求样本满足正态分布。
-
精度评估
留出独立验证样本(至少总体样本的 20%),计算混淆矩阵与 Kappa 系数。总体精度一般要求大于 85%。
非监督分类快速概览
当缺乏训练样本时,可采用 ISODATA 或 K-Means 聚类自动将像元分组,再通过目视判读赋予类别标签。精度通常低于监督分类,但适用于快速摸底。
变化检测主流技术
分类后比较法
最直观的方法:分别对 t1 和 t2 图像进行分类,然后逐像元比较类别变化。
操作步骤
- 分别完成两期图像的分类,确保分类体系和图例完全一致。
- 使用栅格计算器或 ArcGIS 的 Combine 工具生成变化矩阵。
- 从变化矩阵中提取“林地→耕地”、“草地→建设用地”等关注转换。
优点:可以获得完整的“从-到”信息。
注意事项:分类误差会在两个时期叠加,导致最终变化精度约为各期精度的乘积(例如 90% × 90% = 81%)。需尽可能提高单期分类精度。
图像差值/比值法
直接计算两期影像光谱指数(如 NDVI)的差值,并设定阈值判断变化与否。
ΔNDVI = NDVI_t2 - NDVI_t1
|ΔNDVI| > 阈值 → 变化区域
适用场景:植被覆盖变化、火灾迹地、洪水淹没范围等单一类型变化。
限制:阈值设定主观性强,且无法区分变化类型。
变化向量分析(CVA)
同时利用两个波段的差异构成向量,向量的长度表示变化强度,方向表示变化类型。常用于“植被变化”与“裸土增加”等场景的区分。
实现思路(以两个时相的红与近红外波段为例):
- 计算 t1 和 t2 的 Red 差值 ΔR 和 NIR 差值 ΔNIR。
- 变化强度 = sqrt(ΔR² + ΔNIR²)
- 变化方向 = arctan(ΔNIR / ΔR),按象限划分类型区域。
- 设置强度阈值提取显著变化像元,再通过方向分段归类变化类型。
CVA 对辐射归一化要求较高,需确保两期反射率产品可比。
实战示例:QGIS 与 Python 结合的简易流程
环境准备
- QGIS 3.34(含 SCP 插件)用于预处理与样本选取
- Python 3.10 环境,安装
rasterio、scikit-learn、numpy、pandas、matplotlib
步骤 1:数据获取与预处理
- 在 Copernicus Hub 下载同一季节的两景 Sentinel-2 L2A 数据(如 2020 年 8 月和 2023 年 8 月)。
- 使用 SCP 插件统一波段像素大小至 10 m,导出裁切后的感兴趣区域(AOI)多波段 GeoTIFF。
步骤 2:样本制作
在 QGIS 中创建点或多边形 shapefile,添加 class_id 字段,为每个类别勾绘足够的训练样本。导出样本点对应的光谱值(通过 SCP 的“Save ROI to CSV”或使用 rasterio 采样)。
步骤 3:分类模型训练与预测
import numpy as np
import pandas as pd
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import train_test_split
import rasterio
# 读取样本CSV(包含波段值和class_id)
df = pd.read_csv('training_samples.csv')
X = df[['B2','B3','B4','B8','NDVI']].values
y = df['class_id'].values
X_train, X_valid, y_train, y_valid = train_test_split(X, y, test_size=0.3, random_state=42)
rf = RandomForestClassifier(n_estimators=100, max_depth=12, random_state=42)
rf.fit(X_train, y_train)
print('验证准确率:', rf.score(X_valid, y_valid))
对两期影像分别读取波段数组,构建相同特征,然后预测得到分类图。
步骤 4:变化检测(分类后比较)
# 读取两期分类结果(已保存为二维数组 class_t1, class_t2)
change_map = class_t2.copy()
# 将未变化区域赋值0,变化区域编码为转换类型字符串
change_map[class_t1 == class_t2] = 0
mask_changed = class_t1 != class_t2
# 生成变化编码:例如 "1_to_3"
change_code = np.char.add(np.char.add(class_t1.astype(str), '_to_'), class_t2.astype(str))
change_map[mask_changed] = change_code[mask_changed]
# 保存为GeoTIFF
最后在 QGIS 中加载,按编码赋予颜色,即可直观查看土地利用变化分布。
精度验证与质量控制
- 分类精度:使用独立验证样本计算用户精度、生产者精度和总体精度。可生成混淆矩阵报告。
- 变化检测精度:随机生成 100–200 个验证点,通过人工解译高分辨率图像或实地调查确定真实变化状态,计算变化检测的漏检率与虚警率。
- 面积不确定性:如果存在分类偏差,直接统计各类别面积会失真。可采用面积估计校正方法(如 stratified estimator)减小偏差。
常见误区与提升策略
- 忽略季节性差异:两期图像月份不同导致植被正常物候被误检为变化。解决方案:严格选取相同月份数据。
- 辐射归一化缺失:大气校正不足或传感器差异导致图像反射率存在整体偏置。应对多期图像进行相对辐射归一化(如使用 PIF 伪不变特征法)。
- 类别定义不连续:同一地类在两期中分类标准不一致(如“稀疏林地”在一期归入林地,另一期归入草地)。需固定分类规则和阈值。
- 仅依赖光谱忽略纹理和形状:可加入 GLCM 纹理特征或利用面向对象分类(如 eCognition、Orfeo Toolbox)提升复杂景观下的精度。
延伸学习资源
- 书籍:《Remote Sensing and Image Interpretation》(Lillesand et al.)
- 课程:ESRI 的“Imagery in Action” MOOC
- 代码:Google Earth Engine 官方土地利用分类教程
- 数据竞赛:IEEE GRSS 数据融合大赛历年题目覆盖分类与变化检测