【ENVI入门系列】24. 面向对象图像分类
版权声明:本教程涉及到的数据仅练习使用,禁止用于商业用途。
目录
1.
2.
第一步:准备工作
第二步:发现对象
第三步:根据规则进行特征提取
3.
第一步:选择数据
第二步:分割对象
第三步:基于样本的图像分类
4.
1.概述
面向对象分类技术集合临近像元为对象用来识别感兴趣的光谱要素,充分利用高分辨率的全色和多光谱数据的空间,纹理,和光谱信息来分割和分类的特点,以高精度的分类结果或者矢量输出。它主要分成两部分过程:影像对象构建和对象的分类。
ENVI FX的操作可分为两个部分:发现对象(Find Object)和特征提取(Extract features),如下图所示。
图1.1 FX操作流程示意图(*项为可选操作步骤)
这个工具分为三种独立的流程化工具:基于规则、基于样本、图像分割。
本课程分别学习基于规则的面向对象分类和基于样本的面向对象分类,以及基于规则的方法从单波段灰度影像中提取河流信息。
注:本课程需要面向对象空间特征提取模块(ENVI Feature Extraction-FX)使用许可。
2.基于规则的面向对象信息提取
该工具位置在:Toolbox /Feature Extraction/ Rule Based Feature Extraction Workflow。
数据位置:"24-面向对象图像分类\1-基于规则"。
第一步:准备工作
根据数据源和特征提取类型等情况,可以有选择地对数据做一些预处理工作。
- 空间分辨率的调整
如果您的数据空间分辨率非常高,覆盖范围非常大,而提取的特征地物面积较大(如云、大片林地等)。可以降低分辨率,提供精度和运算速度。可利用Toolbox/Raster Management/Resize Data工具实现。
- 光谱分辨率的调整
如果您处理的是高光谱数据,可以将不用的波段除去。可利用Toolbox/Raster Management/Layer Stacking工具实现。
- 多源数据组合
当您有其他辅助数据时候,可以将这些数据和待处理数据组合成新的多波段数据文件,这些辅助数据可以是DEM, lidar 影像, 和SAR 影像。当计算对象属性时候,会生成这些辅助数据的属性信息,可以提高信息提取精度。可利用Toolbox/Raster Management/Layer Stacking工具实现。
- 空间滤波
如果您的数据包含一些噪声,可以选择ENVI的滤波功能做一些预处理。
这里直接在ENVI中打开qb_colorado.dat图像文件。
第二步:发现对象
(1)启动Rule Based FX工具
在Toolbox中,选择/Feature Extraction/Rule Based Feature Extraction Workflow,打开工作流的面板,选择待分类的影像qb_colorado.dat,此外还有三个面板可切换:
-
在Input Mask面板可输入掩膜文件
-
在Ancillary Data面板可输入其他多源数据文件
-
切换到Custom Bands面板,有两个自定义波段,包括归一化植被指数或者波段比值、HSI颜色空间,这些辅助波段可以提高图像分割的精度,如植被信息的提取等自定义的属性。
在Normalized Difference和Color Space属性上打钩,如下图所示,点击Next;
图2.1 输入数据和属性参数选择
(2)影像分割、合并
FX根据临近像素亮度、纹理、颜色等对影像进行分割,它使用了一种基于边缘的分割算法,这种算法计算很快,并且只需一个输入参数,就能产生多尺度分割结果。通过不同尺度上边界的差异控制,从而产生从细到粗的多尺度分割。
1)分割阈值(Scale Level):选择高尺度影像分割将会分出很少的图斑,选择一个低尺度影像分割将会分割出更多的图斑,分割效果的好坏一定程度决定了分类效果的精确度,我们可以通过勾选preview预览分割效果,选择一个理想的分割阀值,尽可能好地分割出边缘特征。有两个图像分割算法供选择:
-
Edge, 基于边缘检测,需要结合合并算法可以达到最佳效果;
-
Intensity: 基于亮度,这种算法非常适合于微小梯度变化(如DEM)、电磁场图像等,不需要合并算法即可达到较好的效果。
调整滑块阀值对影像进行分割,这里设定阈值为40。
注:按钮是用来选择分割波段的,默认为Base Image所有波段。
2)合并阈值(Merge Level):影像分割时,由于阈值过低,一些特征会被错分,一个特征也有可能被分成很多部分。我们可以通过合并来解决这些问题。合并算法也有两个供选择:
-
Full Lambda Schedule,合并存在于大块、纹理性较强的区域,如树林、云等,该方法在结合光谱和空间信息的基础上迭代合并邻近的小斑块;
-
Fast Lambda: 合并具有类似的颜色和边界大小相邻节段。设定一定阈值,预览效果。这里我们设置的阈值为90,点Next进入下一步。
3)纹理内核的大小(Texture Kernal Size):如果数据区域较大而纹理差异较小,可以把这个参数设置大一点。默认是3,最大是19。
图2.2 图像分割、合并
这时候FX生成一个Region Means 影像自动加载图层列表中,并在窗口中显示,它是分割后的结果,每一块被填充上该块影像的平均光谱值。接着进行下一步操作。
目前,已经完成了发现对象的操作过程,接下来是特征的提取。
第三步:根据规则进行特征提取
在规则分类界面。每一个分类有若干个规则(Rule)组成,每一个规则有若干个属性表达式来描述。规则与规则之间是与的关系,属性表达式之间是并的关系。
同一类地物可以由不同规则来描述,比如水体,水体可以是人工池塘、湖泊、河流,也可以是自然湖泊、河流等,描述规则就不一样,需要多条规则来描述。每条规则又有若干个属性来描述,如下是对水的一个描述:
-
面积大于500像素
-
延长线小于0.5
-
NDVI小于0.25
对道路的描述:
-
延长线大于0.9
-
紧密度小于0.3
-
标准差小于20
这里以提取居住房屋为例来说明规则分类的操作过程。
(1)首先分析影像中容易跟居住房屋错分的地物有:道路、森林、草地以及房屋旁边的水泥地。点击按钮,新建一个类别,在右侧Class properties下修改好类别的相应属性。
图2.3 规则分类面板
1)第一条属性描述,划分植被覆盖和非覆盖区。
a)在默认的属性Spectral Mean上单击,激活属性,右边出现属性选择面板,如下图所示。选择Spectral,Band下面选择Normalized Difference。在第一步自定义波段中选择的波段是红色和近红外波段,所以在此计算的是NDVI。把Show Attribute Image勾上,可以看到计算的属性图像。
b)通过拖动滑条或者手动输入确定阈值,这里设置阈值最大为0.3。在阈值范围内的在预览窗口里显示为红色,如下图:
图2.4 设置NDVI的属性阈值
c)在Advanced面板,有三个类别归属的算法:算法有二进制、线性和二次多项式。选择二进制方法时,权重为0或者1,即完全不匹配和完全匹配两个选项;当选择线性和二次多项式时,可通过Tolerance设置匹配程度,值越大,其他分割块归属这一类的可能性就越大。这里选择类别归属算法为Liner,分类阈值Tolerance为默认的5,如下图
图2.5 归属类别算法和阈值设置
2)第二条属性描述,剔除道路干扰
居住房屋和道路的最大区别是房屋是近似矩形,可以设置Rectangular fit属性。在Rule上右键选择Add Attibute按钮,新建一个规则,在右侧Type中选择Spatial,在Name中选择Rectangular fit。设置值的范围是0.5~1,其他参数为默认值。
注:预览窗口默认是该属性的结果,点击All Classes,可预览几个属性共同作用的结果。
同样的方法设置
Type:Spatial;Name:Area——Area>45
Type:Spatial;Name:Elongation——Elongation<3
3)第三条属性描述,剔除水泥地干扰
水泥地反射率比较高,居住房屋反射率较低,所以我们可以设置波段的象元值。
Type:spectral;Name:Spectral Mean,Band:GREEN——Spectral Mean (GREEN)<650。
点击All Classes,最终的rule规则和预览图如下图所示。规则设置好后,点击Next;
图2.6 房屋提取规则与结果预览
注:单击按钮,打开"屋顶-rule.rul",可以导入预先设置的规则。
第四步:输出结果
特征提取结果输出,可以选择以下结果输出:矢量结果及属性、分类图像及分割后的图像、还有高级输出包括属性图像和置信度图像、辅助数据包括规则图像及统计输出,如下图所示。
图2.7 结果输出
选择矢量文件及属性数据一块输出,规则图像及统计结果输出。点击Finish按钮完成输出。可以查看房屋信息提取的结果和矢量属性表。
图2.8 房屋信息提取的矢量结果和属性表
3.基于样本的面向对象的分类
该方法的工具为Toolbox /Feature Extraction/Example Based Feature Extraction Workflow。
数据位置: "24-面向对象图像分类\ 2-基于样本"
在Toolbox中找到该工具,双击打开流程化的面板,前面两步和第一种方法的前两步完全一致,选择数据和发现对象,在此不一一赘述。
第一步:选择数据
(1)打开imperial_valley_subset.dat数据。
(2)启动Toolbox /Feature Extraction/Example Based Feature Extraction Workflow。
(3)在Input Raster选项中选择imperial_valley_subset.dat数据。
(4)切换到Custom Bands选项,勾选Normalized Difference,自动选择(在有中心波长的情况下)红色和近红外波段计算NDVI。勾选Corlor Space用于RGB计算HIS空间。
(5)单击Next。
图3.1 输入数据选择
第二步:分割对象
(1)在Layer Manager图层管理中,在图像图层中右键选择Change RGB Bands,以432显示影像。
(2)在图像分割参数设置面板中,设置Scale Level= 50,Merge Level = 80,其他默认,
(3)单击Next。
第三步:基于样本的图像分类
经过图像分割和合并之后,进入到监督分类的界面,如下图所示:
图3.2 监督分类界面
(1)选择样本
a)对默认的一个类别,在右侧的Class Properties中,修改:
-
类别名称(Class Name):生长作物;
-
类别颜色(Class Color):绿色(0,255,0)
注:可以勾选Show Boundaries显示分割边界,方便样本选择。
c)一个类别的样本选择完成之后,新增类别,用同样的方法修改类别属性和选择样本。在选择样本的过程中,可以随时预览结果。可以把样本保存为shp文件以备下次使用。
注:点击按钮可以将真实数据的ShapeFile矢量文件作为训练样本。
这里我们建立5个类别:生长作物、休耕地、早期或晚期作物、非耕地、水体,分别选择一定数量的样本,如下图所示。
图3.3 选择样本
(2)设置样本属性
切换到Attributes Selection选项。默认是所有的属性都被选择,这些选择样本的属性将被用于后面的监督分类。可以根据提取的实际地物特性选择一定的属性。这里按照默认全选。
图3.4 样本属性选择
(3)选择分类方法
切换到Algorithm选项。FX提供了三种分类方法:K邻近法(K Nearest Neighbor)、支持向量机(Support Vector Machine ,SVM)和主成分分析法(Principal Components Analysis ,PCA)。
图3.5 分类方法
- K邻近法(K Nearest Neighbor)
K邻近分类方法依据待分类数据与训练区元素在N维空间的欧几里得距离来对影像进行分类,N由分类时目标物属性数目来确定。相对传统的最邻近方法,K近邻法产生更小的敏感异常和噪声数据集,从而得到更准确地分类结果,它自己会确定像素最可能属于哪一类。
在K参数里键入一个整数,默认值是1,K参数是分类时要考虑的临近元素的数目,是一个经验值,不同的值生成的分类结果差别也会很大。K参数设置为多少依赖于数据组以及您选择的样本。值大一点能够降低分类噪声,但是可能会产生不正确的分类结果,一般值设到3-7之间就比较好。
- 支持向量机(Support Vector Machine ,SVM)
支持向量机是一种来源统计学习理论的分类方法。选择这一项,需要定义一系列参数:
-
Kernel Type下拉列表里选项有 Linear,Polynomial,Radial Basis,以及 Sigmoid。
- 如果选择Polynomial,设置一个核心多项式(Degree of Kernel Polynomial)的次数用于SVM,最小值是1,最大值是6。
-
如果选择Polynomial or Sigmoid,使用向量机规则需要为Kernel指定 the Bias ,默认值是1。
-
如果选择是 Polynomial、Radial Basis、Sigmoid,需要设置Gamma in Kernel Function参数。这个值是一个大于零的浮点型数据。默认值是输入图像波段数的倒数。
b)为SVM规则指定the Penalty参数,这个值是一个大于零的浮点型数据。这个参数控制了样本错误与分类刚性延伸之间的平衡, 默认值是100。
Allow Unclassified是允许有未分类这一个类别,将不满足条件的斑块分到该类,默认是允许有未分类的类别。
Threshold 为分类设置概率域值,如果一个像素计算得到所有的规则概率小于该值,该像素将不被分类,范围是0~100,默认是5。
- 主成分分析法(Principal Components Analysis ,PCA)
主成分分析是比较在主成分空间的每个分割对象和样本,将得分最高的归为这一类。
这里我们选择K邻近法,K参数设置为5,去掉Allow Unclassified选项。
点击Next,输出结果。
图3.6 基于样本选择的农用地提取结果
4.基于规则的单波段影像提取河流信息
本节以单波段灰度影像为例子,使用ENVI FX面向对象信息提取工具中的"Rule based feature extraction workflow" 提取图像中的河流信息,
具体的操作步骤如下:
(1)打开"24-面向对象分类\ 3-基于规则提取河流\hawaii_sub_water_pan.img"文件。
(2)在toolbox中启动"Feature Extraction\Rule based feature extraction workflow"工具,在输入数据中,选择带分类的数据hawaii_sub_water_pan.img,点击Next;
(3)设置Scale Level= 50,Merge Level = 80,其他默认,点击Next;
(4)点击Add Class按钮,修改Class Name 为:河流;
(5)点击默认的一个属性,右侧选择type:Spectral,Name:Spectral mean,选择7~23.86范围;
图4.1河流属性设置
(6)在Rule上,点击右键,选择Add Attribute,该属性选择type:Spatial,Name:Area,选择大于2811。
图4.2提取河流信息规则及结果预览
(7)预览结果之后,点击Next,设置输出路径和文件名,将矢量和栅格结果输出。
图4.3 河流提取结果
教程下载:http://pan.baidu.com/s/1dDthV8H
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)