卫星图像分析:土地利用分类与变化检测

FreeGuideOnline 最新 2026-06-24

什么是土地利用分类与变化检测

土地利用分类是通过分析卫星图像的光谱、空间与时间特征,将地表划分为不同功能类型(如农田、林地、城市、水体)的过程。变化检测则是在多时相图像上识别地表覆盖发生转变的位置与类型。二者结合能够回答“哪里从林地变成了耕地”或“城市扩张速度多快”等关键问题,广泛应用于城市规划、农业监测、灾害评估与生态研究。

本教程面向初学者,将拆解从数据获取到变化检测结果输出的全流程,帮助你快速掌握这一遥感分析核心技能。


卫星图像数据源与选择

常用开放数据源

  • 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)或自定义类别。典型的类别如:

  1. 林地
  2. 草地
  3. 耕地
  4. 水体
  5. 建设用地
  6. 裸土

确保类别互斥且完全穷尽。

监督分类流程

适用于有训练样本的情况,精度通常最高。

  1. 选择训练样本
    在高分辨率底图或实地调查辅助下,为每个类别选取 50–100 个像元以上的多边形样本。样本应涵盖类内光谱变异。

  2. 提取光谱特征与指数
    除原始波段外,可计算归一化植被指数(NDVI)、归一化建筑指数(NDBI)、改进归一化水体指数(MNDWI)等,参与分类。

    NDVI = (NIR - Red) / (NIR + Red)
    MNDWI = (Green - SWIR) / (Green + SWIR)
    
  3. 分类器选择

    • 随机森林(Random Forest):对噪声鲁棒,能处理高维特征,适合初学者。Python 的 scikit-learn 或 R 的 randomForest 均可实现。
    • 支持向量机(SVM):小样本下表现好,但参数调节稍复杂。
    • 最大似然法:经典参数分类器,要求样本满足正态分布。
  4. 精度评估
    留出独立验证样本(至少总体样本的 20%),计算混淆矩阵与 Kappa 系数。总体精度一般要求大于 85%。

非监督分类快速概览

当缺乏训练样本时,可采用 ISODATA 或 K-Means 聚类自动将像元分组,再通过目视判读赋予类别标签。精度通常低于监督分类,但适用于快速摸底。


变化检测主流技术

分类后比较法

最直观的方法:分别对 t1 和 t2 图像进行分类,然后逐像元比较类别变化。

操作步骤

  1. 分别完成两期图像的分类,确保分类体系和图例完全一致。
  2. 使用栅格计算器或 ArcGIS 的 Combine 工具生成变化矩阵。
  3. 从变化矩阵中提取“林地→耕地”、“草地→建设用地”等关注转换。

优点:可以获得完整的“从-到”信息。
注意事项:分类误差会在两个时期叠加,导致最终变化精度约为各期精度的乘积(例如 90% × 90% = 81%)。需尽可能提高单期分类精度。

图像差值/比值法

直接计算两期影像光谱指数(如 NDVI)的差值,并设定阈值判断变化与否。

ΔNDVI = NDVI_t2 - NDVI_t1
|ΔNDVI| > 阈值 → 变化区域

适用场景:植被覆盖变化、火灾迹地、洪水淹没范围等单一类型变化。
限制:阈值设定主观性强,且无法区分变化类型。

变化向量分析(CVA)

同时利用两个波段的差异构成向量,向量的长度表示变化强度,方向表示变化类型。常用于“植被变化”与“裸土增加”等场景的区分。

实现思路(以两个时相的红与近红外波段为例):

  1. 计算 t1 和 t2 的 Red 差值 ΔR 和 NIR 差值 ΔNIR。
  2. 变化强度 = sqrt(ΔR² + ΔNIR²)
  3. 变化方向 = arctan(ΔNIR / ΔR),按象限划分类型区域。
  4. 设置强度阈值提取显著变化像元,再通过方向分段归类变化类型。

CVA 对辐射归一化要求较高,需确保两期反射率产品可比。


实战示例:QGIS 与 Python 结合的简易流程

环境准备

  • QGIS 3.34(含 SCP 插件)用于预处理与样本选取
  • Python 3.10 环境,安装 rasterioscikit-learnnumpypandasmatplotlib

步骤 1:数据获取与预处理

  1. 在 Copernicus Hub 下载同一季节的两景 Sentinel-2 L2A 数据(如 2020 年 8 月和 2023 年 8 月)。
  2. 使用 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)减小偏差。

常见误区与提升策略

  1. 忽略季节性差异:两期图像月份不同导致植被正常物候被误检为变化。解决方案:严格选取相同月份数据。
  2. 辐射归一化缺失:大气校正不足或传感器差异导致图像反射率存在整体偏置。应对多期图像进行相对辐射归一化(如使用 PIF 伪不变特征法)。
  3. 类别定义不连续:同一地类在两期中分类标准不一致(如“稀疏林地”在一期归入林地,另一期归入草地)。需固定分类规则和阈值。
  4. 仅依赖光谱忽略纹理和形状:可加入 GLCM 纹理特征或利用面向对象分类(如 eCognition、Orfeo Toolbox)提升复杂景观下的精度。

延伸学习资源

  • 书籍:《Remote Sensing and Image Interpretation》(Lillesand et al.)
  • 课程:ESRI 的“Imagery in Action” MOOC
  • 代码:Google Earth Engine 官方土地利用分类教程
  • 数据竞赛:IEEE GRSS 数据融合大赛历年题目覆盖分类与变化检测