eCognition8分类初级教程
遥感影像分类的先决条件
1:要有影像对象层,即影像要先做分割。
2:明确知道有什么地类。
3:描述地类的特征和阈值。
部分遥感影像分类方法及实验结果
本次实验所用数据为高分一号的多光谱影像,共有蓝,绿,红,近红四个通道。像素分辨率为8m。
在eCognition中对绿光波段进行增强显示设置如下:
对绿光波段增强之后的显示效果:
分类之前需要对图像进行分割,分割采用的方法是多尺度分割。对图像进行多尺度分割完成后的影像:
下一步我们就可以开始进行分割。
阈值法分类
水体分类
水体在近红外波段吸收性强反射率低,所以一般可以在用近红外波段设定阈值分割水体。在eCognition中的Feature View中选择Layer Value->mean->nir->右键选择Update Range
点击之后发现图像如下所示:
图像变成了黑白色,一块块小图斑就是分割之后的一片一片小区域,鼠标放上去还可以显示当前块的均值。在Feature View 底部的小框上打勾
这里现实的两个值分别是上界值和下界值,在当小图斑的值小于下界的值时,图斑会显示为黑色。当小图斑的值介于上界值和下界值时,图斑会显示蓝色或绿色。当小图斑的值大于上界值,图斑会显示成白色或灰色。这两个值我们可以通过按钮调节,直到找到合适的阈值来区分水体。
在找到合适阈值之后就可以进行分类了,在Process Tree窗口下右键选择Append New,Algorithm选择Assign class,Use class输入类别water。
最关键是选择Threshold condition。设置nir<=76的作为水体。
然后执行分类就可以得到分类结果。
可以看出来大部分水体已经提取出来,但是还是存在漏判和误判。
植被分类
使用植被指数NDVI提取植被,NDVI=(近红外波段-红色波段)/(近红外波段+红色波段),但是在eCognition中没有关于NDVI的定义,我们需要自定义这个特征,选择Feature View->Object feature->Customized->Creat new ‘Arithmetic Feature’,在弹出的对话框中,填写特征名字NDVI以及计算公式点击确定就可以。
之后可以在Feature View->Object feature->Customized目录下找到NDVI,右键选择Update Range接下来的步骤和水体分割的基本一致,这里不再赘述。
绿色部分就是提取出来的植被
陆地分类
陆地分类和前面两种有所区别,因为陆地中包含地物太多,难以找到特征或者阈值来分类,所以我这里将图像中除了水体和植被之外剩下的作为陆地。因此在规则集设置时候如下图所示,Class filter设置为unclassified,没有阈值条件,Use class设置为land,这样就表示将所有未分类的全部分类成陆地。
黄色部分就是提取出来的陆地
模糊分类——隶属度分类
进行分类之前首先要创建地类,然后对地类进行类描述。因为是隶属度分类,我们需要一个隶属度函数来帮我们确定隶属度。根据前面做的阈值分类的经验我们大概可以知道水体在近红外波段的值是多少。在Class Hierarchy窗口下双击water编辑水体的类描述,Contained->and(min)->Object features->Layer Values->Mean->nir选择一个适合我们的隶属度函数。
对vegetation的描述类似。只是在选择特征时候要选择我们自定义NDVI特征。在对land进行类描述时候是不一样的,因为前面将不是植被,不是水体的其他区域都作为陆地。
在类描述中选择Similarity to classes,双击water和vegetation,然后再分别右键选择这个两个类描述,选择Invert Expression。这样三个地类的类描述我们都完成了。接下里就可以选择算法进行分类了,同样的,在Process Tree中右键Append New,Algorithm选择classfication,右边的Active classes选择需要分类的三个地类,Use class description选择Yes就可以了。
分割结果如下所示:
与阈值分割不同的是鼠标移到结果上面会有不同的隶属度的显示。阈值分割时隶属度全部为1.
最邻近法分类
这个分类方法也需要类描述,但是这里所使用的类描述和隶属度分类的类描述都有所不同。需要重新设定类描述,首先把已有的类描述都删除。添加类描述时双击land->and(min)->Nearest neighbor。
然后选择and(min)->nearest neighbor->Object features->Layer Value->Mean和Standard deviation
最后类描述如下:
对于water和vegetation两类的类描述也是如此。
最邻近法属于监督分类,那么我们就需要选择样本。首先,在eCognition中调出选择样本的工具栏
下图就是样本选择工具栏:第一个按钮是点选,第二个是样本刷。后面按钮两个是查看样本信息。下图是样本的选择。
选完样本之后就可以进行分类了。和隶属度分类一样还是选择classification这个算法。右边的Active classes选择需要分类的三个地类,Use class description选择Yes就可以了。
分类结果:
决策树分类
决策数分类是监督分类也需要选择样本,但是不需要类描述,在决策数分类时对于地类的类描述可以首先删除。决策数分类时选样本的方式和最邻近法分类有所区别,先调出决策数分类需要的样本选择工具栏。
下图就是我们需要的工具栏,在第二个下拉框中选择地类开始挑选样本,左键点击样本,再右键选择Classify selection就可以了,对三个地类分别选择样本。
样本选择完毕,下一步是训练决策树模型,选择的算法是classifier。因为这里训练面向的是对象级别,所以在Image Object Domain中选择image object leval。Class filter选择设定好的三个地类。Feature选择Object features->Layer Value->Mean和Standard deviation。这里Configuration里面表示训练生成的文件,我命名为cart。最后规则集的设置如下:
训练完成之后,就可以分类了,选择的算法还是classifer,Image Object Domain中还是选择image object leval。Operatiom选择Apply。Configuration设置成上一步生成的cart文件。规则集的设置如下:
分类结果如下:
分类之后删除分类结果
每做完一次分类,在做别的分类时都要先将上一次分类的结果删除。在Process Tree中添加新的规则集,Algorithm选择remove classification,右边的Classes选择要删除的地类。
eCognition8分类初级教程相关推荐
- abb机器人指令手册_第1519课 ABB机器人初级教程
每一位读者都是我分享的动力,感谢大家关注! 第15课 系统输入输出与IO信号的关联 第16课 示教器可编程按钮的使用 第17课 什么是程序数据 第18课 程序数据的类型与分类 第19课 创建程序数据 ...
- grread使用例子 lisp_AutoLISP从入门到精通初级教程(新手必备);
<AutoLISP从入门到精通初级教程(新手必备);>由会员分享,可在线阅读,更多相关<AutoLISP从入门到精通初级教程(新手必备);(36页珍藏版)>请在人人文库网上搜索 ...
- 《英语语法新思维初级教程》学习笔记(三)冠词
参考资料: 1. <英语语法新思维初级教程> 2. 英语国际英标表 ▶ 知识点 ▼ 限定词的是对名词起限定作用的各类词的总称,具体作用有限定名词所指的范围,对名词起泛指或特指.定量或或不定 ...
- Oracle PL/SQL语言初级教程(自学)
Oracle PL/SQL语言初级教程 PL/SQL 语言基础 PL/SQL 是一种高性能的基于事务处理的语言,能运行在任何 ORACLE 环境中,支持所有数据处理命令. 通过使用 PL/SQL 程序 ...
- Silverlight初级教程-开发工具
Silverlight初级教程 开发工具 在silverlight越来越流行的同时有很多的供应商开始筹划制作编辑和设计silverlight的工具.现在最常见的设计和开发工具是: Visual Stu ...
- 《英语语法新思维初级教程》学习笔记(一)名词短语
参考资料: 1. <英语语法新思维初级教程> ▶ 知识点 ▼ 英语是"固定词序语言(a fixed-word-order language)". ▼ 语言的构造级别分五 ...
- Verilog初级教程(23)Verilog仿真中的显示任务
文章目录 前言 正文 Display/Write Tasks Verilog Strobes Verilog Continuous Monitors Verilog Format Specifiers ...
- Verilog初级教程(21)Verilog中的延迟控制语句
文章目录 前言 正文 延迟控制语句 事件控制语句 Named Events Event or operator 往期回顾 参考资料及推荐关注 前言 Verilog中的延迟控制有两种类型–延迟和事件表达 ...
- Verilog初级教程(20)Verilog中的`ifdef 条件编译语句
文章目录 前言 正文 语法 示例 Testbench文件 往期回顾 参考资料及推荐关注 前言 `ifdef条件编译语句在逻辑设计中还是很常见的,但也常见一些滥用的情况,这应该避免. 应该在什么情况下使 ...
最新文章
- 免输入用户名和密码以及git clone以后想提交代码
- J2EE搭建Dynamic web SpringMVC工程404错误分析(二)
- 前端学习(2422):回顾
- 区块链中密码学与安全技术
- Mybatis plus 整合springboot 出现的Invalid bound statement (not found)问题
- C++输入输出流重载
- 使用 telnet 命令 查看端口的开放、可用情况
- OpenGL基础38:数据存储
- linux运行隐藏脚本,linux 下隐藏进程的一种方法及遇到的坑
- (转)用Javascript获取页面元素的位置
- PMP考试试题是什么样?
- 中文语音识别数据集总结
- Java静态代理和动态代理(代理模式)详解
- 英语模板作文,词组,句子,句型,开头
- 新托业模拟考试感言—了解一下参加过托业考试前辈们的经验03
- 国际抗疫数据分析脚本
- 如何启用计算机的休眠,win7休眠-win7如何启用休眠,我已经google过了,没用,请大家帮忙我? 爱问知识人...
- 企业微信开发(一)常见问题收集及解决方案
- Vue中使用wangEditor实现自定义上传图片和视频
- Log4j2的MDC详解