ENVI FX面向对象分类:高分辨率影像分割、规则与样本分类实战指南
2026/9/17 12:46:18 网站建设 项目流程

简介:面向对象分类是处理高分辨率遥感影像信息提取的主流技术之一,尤其适合解决“同物异谱、同谱异物”带来的光谱混淆问题。面向遥感影像分析初学者及ENVI软件使用者,文档系统梳理了从影像对象构建到特征提取的完整工作流。资源为单个Word文档,压缩包共1个文件,大小825KB,虽篇幅不大,但覆盖了多尺度分割、监督分类、基于规则分类等关键知识点。目前已有314人学习下载。文档以ENVI FX工具为操作主线,结合0.6米高分影像案例,逐步演示预处理、分割阈值调整、合并、属性计算、规则设置与分类输出;同时对比了传统基于光谱分类与面向对象分类的差异,有助于读者理解空间、纹理与光谱信息在影像分类中的综合应用,可直接用于课程学习、实验教学或日常遥感解译参考。

1. 面向对象分类:高分辨率影像信息提取的破局点

在高分辨率遥感影像里,“同物异谱、同谱异物”不是偶发现象,而是常态。一块屋顶可能因为光照角度、老化程度不同呈现完全不同的光谱值,而水泥地与某些建筑材料的波谱曲线几乎重合。传统基于像元的分类器只拿单个像元的光谱特征做判断,到了亚米级影像上,局部异质性被放大,椒盐噪声和错分率同步上升——这不是调参能解决的问题,是方法论层面的瓶颈。面向对象分类先把临近像元合并成有几何边界的“对象”,再基于对象的光谱、纹理、形状和上下文关系做判定,相当于把决策单元从“点”升级到“面”。本文以 ENVI 的 Feature Extraction(FX)模块为操作载体,梳理两套完整流程:基于规则的分类和基于样本的分类,重点拆解对象构建阶段的参数逻辑与分类阶段的属性组合策略,适合刚开始接触高分辨率影像信息提取、或者从基于像素方法转型的从业者。

2. 对象构建:分割与合并的参数逻辑

2.1 为什么先分割对象而不是直接分类

面向对象分类的第一步,是把影像切成有语义边界的图斑,这一步决定了后续分类精度的上限。FX 模块采用基于边缘的分割算法,通过检测相邻像元在亮度、纹理、颜色上的不连续性来定位边界,只需要一个尺度参数(Scale Level)就能控制分割粒度。尺度值调高,允许的异质性更大,分割出的图斑少而大;调低则图斑多而碎。在实际操作中,理想的尺度值应当让每个地物恰好被一个或少数几个图斑覆盖,既不过度分割导致同一屋顶碎成十几块,也不欠分割让道路和房屋粘连在一起。

分割完成后,FX 会生成一个 Region Means 图层,每个图斑内部填充该区域的平均光谱值,视觉上像“马赛克化”的影像。这个图层是分割效果的直观反馈,也是后续选样本、看规则响应时的重要参考层。一个常见的误区是直接从原图上判断分割效果,但原图的纹理细节会掩盖图斑边界是否贴合地物轮廓的真实情况,建议分割后先切换到 Region Means 图层检查。

2.2 分割与合并参数组合的实操建议

FX 提供两种分割算法,场景适配完全不同:

算法适用场景特点
Edge常规遥感影像,地物边界清晰基于边缘检测,速度快,通常需要配合合并算法
IntensityDEM、电磁场等灰度渐变数据基于亮度差异,对微小梯度敏感,可独立使用

分割阈值和合并阈值需要联动调整。阈值设得太低,地物内部会出现大量碎片;太高则不同地物被粘连在一起。以文档中的 QB 0.6 米数据为例,分割阈值 40、合并阈值 90 的组合属于比较稳妥的起点,但不同影像的辐射特征差异很大,实际操作时应利用 Preview 窗口做多组对比。合并阶段有两个算法:Full Lambda Schedule 适合纹理复杂的大块区域(树林、云),它迭代合并光谱和空间信息相近的小斑块;Fast Lambda 则适用于颜色和边界大小相近的相邻段,计算更快。

# ENVI FX 批处理模式下,分割与合并参数的传入方式(IDL) ENVI_DOIT, 'ENVI_FX_DOIT', $ FID = fid, POS = pos, DIMS = dims, $ SCALE_LEVEL = 40.0, ; 分割阈值,控制图斑大小 MERGE_LEVEL = 90.0, ; 合并阈值,控制碎片归并程度 KERNEL_SIZE = 3, ; 纹理内核尺寸,3~19 SEGMENT_BANDS = pos, ; 参与分割的波段列表 VECTOR_FILENAME = 'output.shp'

代码里 SCALE_LEVEL 和 MERGE_LEVEL 是两个最敏感的参数。KERNEL_SIZE 作用于纹理属性计算,如果研究区地物纹理差异小、图斑面积大,可以适当增大到 5 或 7,但过大会模糊边界信息。SEGMENT_BANDS 默认使用全部波段,当某个波段噪声明显或与研究目标无关时,可以排除它来减少干扰。

2.3 精炼步骤与属性计算矩阵

分割合并之后,FX 还提供一个可选的 Thresholding 精炼步骤,对高对比度背景下的目标提取特别有效——例如明亮飞机停在灰色停机坪上。操作时选择对应的波段,调整阈值让目标区域被完整标记,精炼结果可以输出为掩膜,参与后续分类的权重计算。如果目标与背景对比度不高,这一步可以直接选择 No Thresholding 跳过。

属性计算阶段决定分类器能看到哪些信息。FX 默认计算四类属性:光谱(每个波段的最小值、最大值、均值、标准差)、空间(面积、周长、紧密度、矩形拟合度、延伸性等)、纹理(纹理范围、均值、方差、熵)和自定义属性(HSI 颜色空间、波段比值)。自定义属性里有两个高频选项:Color Space 选择 RGB 波段转换到 HSI 空间,三个通道分别代表色相、饱和度和亮度;Band Ratio 选择红和近红外波段计算 NDVI。对植被覆盖区的分类,NDVI 几乎必选,它可以干净利落地把植被从建筑和裸地中分离出来,大幅降低后续规则设计的复杂度。

3. 基于规则的分类:属性表达式的组合艺术

3.1 规则与属性表达式的逻辑关系

规则分类的核心思路,是用若干条属性阈值把目标地物从影像中“圈”出来。这里涉及两个层级的逻辑组合:同一个类别(Class)下的多条规则(Rule)之间是“与”的关系,而每条规则内部的属性表达式是“并”的关系。换句话说,多个规则必须全部满足,但同一条规则里的多个属性条件命中任意一个即可。这个设计意味着规则设计是有冗余空间的:对水体的描述,可以是“面积大于 500 像素”这条规则,也可以是“延长线小于 0.5 且 NDVI 小于 0.3”这条规则,两条规则任一命中即归为水体。

实际操作中最常踩的坑,是把规则的“与”逻辑理解成了“或”逻辑。比如同时设定 NDVI 小于 0.25 和面积大于 45 两条规则,结果是两个条件都必须满足才算命中,而不是满足其一即可。这在设计“剔除干扰地物”规则时尤其需要注意。

3.2 以居住房屋提取为例的规则构建流程

以 QB 影像中的居住房屋提取为例,先分析易错分的地物:道路(形状狭长、光谱偏亮)、植被(NDVI 高)、水泥地(反射率高)。针对这些干扰源逐条设计规则。

第一步,划分植被覆盖区和非覆盖区。在 Spectral 属性下选择 Normalized Difference 波段(前提是属性计算阶段勾选了红+近红外波段的 Band Ratio),设定 NDVI 小于 0.25 的阈值范围。通过勾选 Show Attribute Image 可以预览属性图像,辅助确定阈值。

规则1:NDVI < 0.25 规则2:Rectangular Fit 0.5 ~ 1.0(矩形拟合度,排除狭长道路) 规则3:Elongation < 3.0(延伸性,进一步排除线性地物) 规则4:Area > 45(面积下限,剔除小碎片) 规则5:Spectral Mean (GREEN) < 650(排除高反射水泥地)

第二步剔除道路干扰。居住房屋近似矩形,而道路是典型的狭长形状,因此使用空间属性里的 Rectangular Fit(矩形拟合度),取值范围 0.5 到 1.0,矩形越规整数值越接近 1。同时组合使用 Elongation 属性,它计算最大直径与最小直径的比值,正方形约等于 1,矩形大于 1,道路通常大于 3,所以设定小于 3 的条件。

第三步处理水泥地干扰。居住房屋屋顶反射率通常低于水泥地,选择绿色波段的 Spectral Mean,设定小于 650 的阈值。这一步的物理依据是:QB 影像中绿色波段对建筑材料的区分度较高,而且屋顶的几何阴影效应在绿色波段表现稳定。属性阈值确定后,在 Advanced 面板设置类别归属算法:二进制(Binary)只有 0 和 1 两个结果,完全匹配或不匹配;线性(Linear)和二次多项式(Polynomial)允许通过 Tolerance 参数设置模糊归属程度。Tolerance 值越大,接近阈值的图斑被归入该类别的概率越高。默认 5 的 Tolerance 在大多数场景够用,只有当地物光谱特征高度接近时才需要调大。

3.3 规则文件的复用与共享

规则设置完成后可以保存为 .rul 文件,下次处理同区域或同传感器数据时直接导入,不必重新调参。这在项目批量交付时非常实用——不同批次影像的辐射差异会带来阈值漂移,但以 .rul 文件为基准,只需微调 NDVI 和 Spectral Mean 阈值即可完成适配,比从头构建规则节省大量时间。规则文件的本质是 XML 格式的属性约束集,可以用文本编辑器打开查看和修改,但建议还是在 FX 界面里调整,避免格式错误导致无法导入。

4. 基于样本的分类:从人工经验到统计决策

4.1 样本选择的操作要点

基于样本的分类走的是监督分类路线,但和传统基于像元的监督分类有本质区别:传统方法对比的是像元光谱,FX 对比的是对象的多维属性——一个对象有几十个特征值,相当于把样本从“点”扩展成了“面”上的多维向量。样本选择的准确性直接决定分类结果。建议先在分割后的 Region Means 图层上浏览一遍图斑与地物的对应关系,再切回原图选样本,这样既能看清真实地物,又能确认图斑边界是否贴合。

选样本时每个类别控制在 15 到 30 个样本之间比较合理。样本太少,分类器学不到该类别的完整特征分布;太多则可能混入次类别(比如把深色屋顶混入阴影样本)。FX 支持把样本保存为 ShapeFile,下次处理同类数据可以直接加载,这是一个经常被忽略的高效功能。如果项目有实测矢量数据(如地面调查的房屋边界 shp),也可以直接作为训练样本导入。

4.2 属性选择与分类算法的匹配

样本选完后进入 Attributes Selection 面板,默认全选所有属性。属性数量不是越多越好:纹理属性在高分辨率影像上有区分力,但在分割质量差的时候会增加噪声;空间属性里的 MAINDIR(主方向)对道路等线性地物有效,对随机分布的房屋则贡献有限。当类别间的光谱差异主要靠 NDVI 区分时,保留 Spectral 和 Customized 相关属性即可,剔除纹理属性可以缩短训练时间并降低过拟合风险。

FX 提供三种分类算法,参数敏感性差别很大:

算法核心参数适用场景
KNNK 值(默认 1,推荐 3-7)样本分布均匀,类别边界模糊的数据
SVMKernel Type、Penalty、Gamma高维特征空间,样本量小
PCA无显式参数属性冗余度高,需要降维的场景

KNN 的 K 值是最常被忽略的参数。默认值 1 意味着只参考最近邻的 1 个样本,对噪声极其敏感。K 值调大到 5 左右,分类决策会参考 5 个邻近样本,抗噪能力显著提升,但过大(如超过 20)可能导致小类别被周围的大类别吞并。文档数据集的实操经验是把 K 设为 5,兼顾噪声抑制和边界保留。SVM 的核函数选择上,Linear 适合线性可分数据,Radial Basis(RBF)适合非线性分布,后者的 Gamma 参数默认取输入波段数的倒数,通常不需要修改;Penalty 默认值 100 控制样本错分与决策边界复杂度的平衡,当分类结果出现大量碎片时可以提高 Penalty,当模型过拟合(训练精度高、验证精度低)时降低它。

4.3 输出选项与结果评估

分类完成后进入输出环节,FX 支持矢量与栅格两种输出形式。矢量输出可附带对象属性表,每个图斑的面积、周长、各波段均值等指标都会写入属性字段,可以直接在 GIS 里做进一步的空间分析。栅格输出包括分类结果和规则图像,规则图像反映每个对象归入各类别的置信度,可以用来筛掉低置信度图斑。

# 输出矢量的属性表结构(示例字段) OBJECT_ID AREA LENGTH AVGBAND_1 AVGBAND_2 AVGBAND_3 CLASS_NAME 1 84.3 32.5 512.4 386.7 298.2 Building 2 17.8 18.9 201.5 245.3 118.6 Vegetation

这里 AREA 和 LENGTH 的单位与影像的 Map 单位一致,如果影像没有地理参考则默认以像素为单位。CLASS_NAME 字段的值与样本类别的命名保持一致,后续在 GIS 里做专题制图时可以直接用这个字段做符号化。

5. 批处理调用与实战技巧

FX 的完整处理流程做实一次之后,会发现在多景影像、多期数据的项目中效率瓶颈在重复劳动上。ENVI 提供了 ENVI_FX 批处理函数,可以在 IDL 里把整个流程脚本化。核心参数包括 SCALE_LEVEL、MERGE_LEVEL、KERNEL_SIZE、THRESHOLD_LOWER/UPPER(阈值提取的上下限)、RULESET_FILENAME(规则文件路径)和 VECTOR_FILENAME(矢量输出路径)。

; 批处理调用示例:多景影像使用同一套分割合并参数和规则文件 pro batch_fx files = ['scene1.dat', 'scene2.dat', 'scene3.dat'] for i = 0, n_elements(files)-1 do begin ENVI_OPEN_FILE, files[i], r_fid=fid ENVI_FILE_QUERY, fid, dims=dims, ns=ns, nl=nl pos = indgen(4) ; 假设使用 4 个波段 ENVI_DOIT, 'ENVI_FX_DOIT', $ fid=fid, pos=pos, dims=dims, $ scale_level=40.0, merge_level=90.0, kernel_size=3, $ ruleset_filename='house.rul', $ vector_filename='output_' + strtrim(i,2) + '.shp', $ /export_attributes, /export_raster endfor end

批处理脚本里几个容易被忽略的细节。一是 DIMS 参数必须显式传入,否则函数默认只处理当前显示范围,可能导致输出结果只有局部区域。二是 SEGMENT_BANDS 如果没有指定,默认使用全部波段,但某些波段参与分割反而会引入噪声,建议在 pos 里显式选定参与分割的波段。三是 RULESET_FILENAME 传入 .rul 文件后,规则里的阈值会直接生效,如果新影像的辐射特征与规则制定时的影像差异较大,需要先做直方图匹配预处理。

批处理之外,有一类实用小技巧值得分享:把 FX 分割得到的分割图斑与 GIS 里的道路中心线叠加,可以快速发现欠分割区域——如果某条道路被分割成几十段,说明合并阈值偏低,需要上调 MERGE_LEVEL。这类“分割质量检查”不需要跑完整分类流程,用 Segment Only Feature Extraction Workflow 单独输出分割矢量即可,检查通过后再进入正式分类。番外技巧:利用 HSI 颜色空间的 Saturation(饱和度)波段做水体提取,比单纯用 NDWI 更稳定——因为水体在不同传感器上的近红外响应差异较大,但可见光波段的饱和度特征相对一致。把 Saturation 属性加入规则后,分类器对水体边界的定位精度通常会有明显提升。

本文还有配套的精品资源,点击获取

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询