1. 项目概述
遥感影像分类是地理信息科学领域的核心技能之一。ENVI作为业内主流的遥感图像处理平台,其专家知识决策树分类功能将传统监督分类与规则引擎相结合,大幅提升了分类精度和可解释性。这套方法特别适合处理复杂地表覆盖场景,比如同时存在城市建筑、农田、水体的混合区域。
我在参与某省级自然资源调查项目时,曾用这套方法将某湿地保护区的分类精度从78%提升到92%。决策树分类最大的优势在于它能融合多源数据(光谱特征、纹理特征、NDVI等指数),通过逻辑判断层层过滤,最终输出符合专业认知的分类结果。
2. 核心原理解析
2.1 决策树分类的算法基础
决策树分类本质上是基于规则的逐级判别系统。以林地识别为例:
- 第一层判断NDVI>0.6(植被覆盖度阈值)
- 第二层判断近红外波段反射率>35%(排除低反射率的农作物)
- 第三层判断纹理熵<1.2(区分自然林与规则排列的人工林)
ENVI的独特之处在于将CART算法与专家经验相结合。平台内置的规则生成器支持:
- 波段阈值规则(Band Threshold)
- 光谱角制图(SAM)
- 马氏距离(Mahalanobis Distance)
- 自定义IDL脚本规则
2.2 与传统分类方法对比
| 分类方法 | 优点 | 局限性 |
|---|---|---|
| 最大似然法 | 计算效率高 | 需要正态分布假设 |
| 支持向量机 | 小样本表现好 | 核函数选择依赖经验 |
| 决策树分类 | 可解释性强 | 规则构建耗时 |
| 支持多源数据融合 | 容易过拟合 |
实测数据显示,在30m分辨率Landsat影像上,决策树分类比最大似然法平均精度高15-20%,尤其在边缘过渡区域表现更稳定。
3. 完整操作流程
3.1 数据预处理
-
辐射定标:
python复制# ENVI IDL示例代码 pro landsat_calibration input_file = dialog_pickfile() envi_convert_file, input_file, output_file, /to_radiance end关键参数:太阳高度角、增益/偏置值(需从元数据获取)
-
大气校正:
- 推荐使用FLAASH模块
- 必须输入的气象参数:能见度(>40km)、大气模式(中纬度夏季等)
-
影像裁剪:
注意:建议保留至少50像素的缓冲区,避免边缘效应影响分类
3.2 特征工程构建
-
光谱特征:
- 计算NDVI、NDWI等指数
- 波段比值(如B5/B7对岩性敏感)
-
纹理特征:
- 在ENVI中使用【Texture by GLCM】工具
- 推荐参数:
- 窗口大小:7×7
- 统计量:熵、相关性、二阶矩
-
地形特征(如有DEM数据):
- 坡度、坡向
- 地形湿度指数(TWI)
3.3 决策树构建实战
以城市用地分类为例:
-
第一级节点(分离水体):
- 规则类型:Band Threshold
- 波段:NDWI(使用公式 (Green-NIR)/(Green+NIR) )
- 阈值:>0.2
-
第二级节点(区分植被):
- 规则类型:Spectral Angle Mapper
- 参考光谱:植被端元(可从USGS光谱库导入)
- 最大角度:0.1弧度
-
第三级节点(提取建筑区):
- 组合规则:
- 近红外反射率<25%
- 纹理熵>1.5
- 夜间灯光数据>50(若有多源数据)
- 组合规则:
技巧:右键点击节点选择【Prune Branches】可自动优化冗余规则
4. 精度验证与优化
4.1 混淆矩阵分析
建议采集300个以上验证样本,重点关注:
- 生产者精度(PA)
- 使用者精度(UA)
- Kappa系数
典型问题处理:
- 裸地与建筑混淆 → 增加纹理规则
- 农作物与草地混淆 → 加入时序特征
4.2 决策树剪枝策略
-
预剪枝:
- 设置最小样本数(建议≥50像素)
- 限制树深度(通常3-5层足够)
-
后剪枝:
- 使用【Cost-Complexity Pruning】
- 在ENVI中通过【Accuracy Assessment】工具反推最优剪枝程度
5. 高级应用技巧
5.1 时序决策树分类
结合多期影像构建动态规则:
- 生长季NDVI峰值>0.7 → 林地
- 冬季NDVI下降但EVI保持→ 常绿林
- 双季NDVI峰值→ 轮作农田
5.2 面向对象优化
- 先用【Segment Only】生成对象
- 对对象级特征(面积、长宽比)添加规则:
- 面积>5公顷且形状规则→ 疑似农田
- 长宽比>3 → 道路
5.3 与机器学习融合
在ENVI Modeler中构建混合流程:
- 决策树粗分类
- 对混淆区域调用随机森林细分类
- 使用形态学滤波优化结果
6. 常见问题解决方案
-
规则冲突:
- 现象:同一区域被多个终节点覆盖
- 解决:检查规则阈值重叠区,添加优先级设置
-
过拟合:
- 现象:训练区精度95%但验证区仅70%
- 方案:减少规则数量,改用更稳定的特征(如NDVI代替原始波段)
-
异常值干扰:
- 案例:云阴影被误分为水体
- 处理:增加阴影检测规则(蓝波段反射率低且温度低)
-
性能优化:
- 大数据量时启用【Tile Processing】
- 对规则集使用【Compile Rules】加速
在实际项目中,我习惯先用QuickBird等高分辨率影像建立规则库,再迁移到Landsat等中等分辨率数据。这种方法能减少30%以上的规则调试时间。另一个实用技巧是把常用规则保存为.sav文件,方便团队共享复用。