RSD面向对象分类的图像分割
RSD面向对象分类的图像分割
李国春 2018.11.12
目录
RSD面向对象分类的图像分割... 1
1. 图像分割方法... 1
2. 使用RSD进行图像分割... 3
2.1 准备数据... 3
2.2 分水岭分割... 3
2.3 合并对象... 5
3. 对象编辑... 6
3.1 未识别的对象。... 6
3.4 剪切... 9
4.使用对象对遥感图像初分割... 9
4.1 分割植被... 9
4.2 分割水体... 12
5. 对象的边界与面积... 12
6. 结语... 14
注 14
前文说过RSD设计了一套暂时命名为SC(Steadfast Classification)分类的对象分割、特征提取和分类的技术。与其它常用分类方法不同的是SC只分1类(当然不是总共只分一类,是每次提取1类),所以叫它Steadfast。它是一个基于二叉树的分类,但只保留一个分支,丢弃一个分支,最后只得到一类。特点1是半自动分类,增加一个半自动使系统更复杂了。特点2是要快一些。只关注1类符合应用习惯,比方如果只想研究水色,公路、建筑、农田、沙地等等就可以直接丢弃。得到1类之后使用RSD的架构优势马上就可以2次类别细分。当然还需要在应用实践中检验这样分类是否合理。
这里介绍一下RSD的图像分割。分割是分类非常重要的一步,没有好的分割支持的分类一定不会是成功的分类。
RSD的SC分类方法将在下文介绍。
- 图像分割方法
水岭和多分辨率结合的算法。分水岭算法模拟洼地注水水坝淹没的原理探测对象边界,能够较好地检测到对象的边缘,不同质对象界限分明,非常适合遥感图像的对象边界检测。但是分水岭算法检测到的对象大小差别非常大,平滑区域大对象会很大,而变化复杂的区域小对象会很小。这其实也不能就算是缺点,小对象可以检测到细小的河流、道路等特征。但是小对象太多会造成处理方面的困难,因此RSD借鉴了多分辨率的处理思想,将小对象进行邻域的两两同质性检验归并,迭代处理使之达到期望的标准。
图1 分水岭算法识别的对象
虽然RSD设置了调整水坝的等级和可以忽略比较矮的水坝,但有时仍达不到满意的尺度效果。多分辨率算法是在某些遥感软件中经常使用的方法,大都从像元开始进行同质性归并。RSD先用分水岭算法识别初始对象,再划分小对象,然后将这些小对象根据邻域关系和最小异质性差异递归进行两两归并,既保留了原来分水岭边界清晰的界限,又达到了归并的目的。
图2 分水岭算法再由多分辨率处理的效果
本文还对SLIC算法进行了实验,这个算法对象大小比较均匀。
图3 SLIC算法的对象分割
给人的感觉怎么像边缘比较整齐呢,看来值得找时间深入研究一下。不过看起来非常细小的线状地物是不容易识别了。
2. 使用RSD进行图像分割
2.1 准备数据
下面用一个例子演示图像分割。
数据集名称GF2_PMS1_E121.6_N41.3_20170924_L1A0002623380.rar
下载地址在https://pan.baidu.com/s/1nvIJekT
应用https://blog.csdn.net/gordon3000/article/details/83994974介绍的方法进行融合。这里使用上述博文的融合结果。
由于上述数据融合后达30000*30000像元以上,一次性处理比较浪费时间。这里分割成若干子图像进行处理。有多种方法可以用来分割子图像,这里介绍一个简便的方法。
首先勾选待分割的层,然后在主窗口滚动鼠标滚轮,待光标呈现十字状,按下鼠标左键,拖动鼠标在窗口画出一个矩形。在矩形中右击鼠标出现一个弹出菜单。
图4 剪切子图像
点击“从选择区域创建新层”后,一个新的子图像就建好了。在层列表中可以看见这个新层。
右击该层,保存到一个新的.rsd文件中。
2.2 分水岭分割
打开上面保存的.rsd数据,在主窗口滚动鼠标滚轮,待光标呈现一个黑箭头时右击,出现下面的弹出菜单。
图5 开始图像分割
有3种可用的分割选择:基于图像特征的分割、基于植被指数的分割和基于水指数的分割。选择基于图像特征,点击后出现下述对话框。
图6 图像分割参数
第一个参数是分水岭方法水坝的等级数,第二个参数是忽略的矮水坝。输入200和1时,分割效果如下。
图6 图像分割(1)
输入20 和0时的效果,注意有不应该出现的边界贯通,可根据不同应用调节这些参数。
图7 图像分割(2)
对于植被识别和水体识别应用大家可以试试基于植被指数的分割和基于水指数的分割。也有一些新的特性。
2.3 合并对象
合并对象就是按照上述所说将小对象进行邻域的两两同质性检验归并,使之迭代达到期望的标准。
上述图5的菜单下面有一个合并对象的菜单项,点击后出现下述对话框。
图8 合并对象的参数
第一个参数是目标期望值,小于该标准的两个对象可能发生合并。第2、3个参数都是停止域,第2个是小对象达到该标准时停止,第3个是迭代次数达到该值时停止。注意合并是两两发生且有同质性标准,最后并不是所有小对象都被合并,总有部分漏网之鱼。是否将其强制合并容后研究。
合并后的效果如图2。
同质性合并不是必须的,可以根据应用自行确定。
3. 对象编辑
3.1 未识别的对象。
选择基于植被指数的分割,忽略植被指数低于0.2的区域。
图9 基于植被指数的分割
图10 被忽略的未划分对象的区域
3.2 对象的迁移、剪切
首先创建一个分割目标层,用于存放分割出来的数据。在主窗口滚动鼠标滚轮,待光标呈现黑箭头,右击鼠标出现图5的菜单,选择“新建分割目标层”,这时在层列表可以看见建立了一个新的没有数据的空层,对象编辑时迁移的数据将存放在这个层里。(这个层是在任务中登记了的,除了一些有目的性的操作,不用勾选这个层)。
图11 新建的图像分割目标层
从原始数据中的右下角剪切一块比较平滑的图像。这样处理起来简单一些。看看下图中间这块区域,这是一片稻田。
图12 一片稻田
点亮选中的对象。按下ctrl键就把光标处对象点亮了,或者打开点亮开关,鼠标移动处自动就点亮。任意点击一下鼠标左键,点亮就取消了。
图13 点亮对象
在点亮区按下鼠标右键,出来一个弹出菜单,在里面选“复制对象到XXX”,XXX是分割目标层名。结果如下:
图14 迁移的对象
显然这不是我们需要的结果,中间的田埂都被遗漏了。并且仅适用于比较平滑的区域对象尺度比较大的情况,如果都是密密麻麻的小对象这样做也是不可以的。
3.3 邻接对象
邻域特征是面向对象分类的一个重要特征,这里先借来为我所用。对图14,我们按下述黑箭头右击出现的菜单。
图15 复制邻接对象
图16 复制邻接对象后的效果
可以看见中间的裂隙被填充了。这个操作的主要作用就是将来源层(勾选)中与分割目标层中所有对象有邻接关系的对象都复制到分割目标层中。
可是新的问题又出现了。外部吸附了不是同类的对象,内部可能仍然有间隙。这些可以在分类时对邻域对象进行限制,比方限制邻域的距离、大小以及一些指数如NDVI等,这里先不讨论详细讨论,再后面讨论分类时再详细说明。
3.4 剪切
对上述这样简单例子手工剪切往往更简单有效。使用笔形工具,圈好区域,剪一下就完成了。
图17 手工描边剪切
看起来挺丑的,RSD矢量部分工作还没有实质性开始,矢量线没有样条处理什么的。并且还仅仅是光栅数据的剪切。
无论如何,描边也是很辛苦的活儿,这个简单的例子就把我累够呛,复杂地物就更可怕了。另外这个手工活儿又不像工艺品纯手工的值钱,这个手工既不能传世又不能申遗,早消失早幸福。还有就是眼睛是很珍贵的东西,同学们节约用眼噢!
希望大家广出思路,群策群力,有什么好的算法&构思我们在RSD里面实现它,争取早日消灭手工描边。
4.使用对象对遥感图像初分割
4.1 分割植被
比如想在这样一个区域研究林地
图18 林地研究区域
可以分解成图19、图20两部分。
图19 保留植被指数大于某阈值的区域
图20植被指数低于某阈值的区域被丢弃
RSD的架构优势可以马上开始对保留部分的分析研究,比方再分割。
图21 高植被区分割再分割
这样做的好处是可以排除其它因素的干扰,集中分析高植被区林地或者作物分布情况。
4.2 分割水体
使用前面图1的数据,使用水指数进行对象识别,忽略水指数低于某阈值的部分,分割后如图22。
图22分割水体
上述分割植被和水体是在对象划分时使用植被指数和水指数进行的分割。分割时通过设置低值门限,使部分区域不被识别为对象。这样图像中就分成了对象区域和游离像元的区域。再把所有对象迁移到目标层,游离像元就被留下了。
图23 迁移所有对象
5. 对象的边界与面积
对象的边界是一个很细节又很重要的问题,也是一个被经常忽略的问题。本来嘛,对对象本身讨论的就比较少,而对象的边界关注的就更少了。
细心的同学可能会注意到,RSD的对象边界都是单边界的细线,而一些其它遥感软件的对象边界是双线的,看起来比较粗一点。这是因为有的软件将边界分为内边界和外边界,两个边界所以是双线。理想情况,相邻的两个对象内边界挨在一起,同时自己的内边界又是对方的外边界。比如陆地上一个对象叫L,邻接的另一个对象在水体里,叫W。L的内边界在陆上,外边界就在水里,W的内边界在水里,外边界就在陆上。计算面积时计算内边界就可以了。见图24a,中间的2列是边界。
但是实际情况下,这样清晰的边界划分只是一种特例,大多数情况下都是图24b的情况。RSD使用单边界(图24b的中间1列),计算面积时双方都统计边界像元,并将边界像元一侧乘一个系数a,另一侧乘(1-a),a == 0.0时表示将边界全部当成外边界,a == 1.0时认为边界是内边界。大多数情况下取 a == 0.5, 这是基于大样本时跨两侧的边界各有一半的假设。
这样做的优点是显而易见的,面积求算更合理,更准确。所有对象面积可以直接相加,基本不会造成所有对象面积之和显著大于或者小于总面积的情况。一个缺陷是3连通或者4连通边界的交点会多统计半个或者一个像元。平心而论,这样的误差,忍了吧!
图24 对象的双边界与单边界
不考虑双边界或者单边界情况的软件也很多,误差还是很大的。看看下面的例子。
A带对象边界 B 去掉边界
图25 对象的双边界与单边界
图25A是两个对象,第一个对象内部像元9个,边界像元24个。假如每像元1m2,算边界时面积是33m2,不算边界时只有9m2,差了很多。RSD算法该对象是21m2。
转到矢量数据统计面积时模糊了这一问题,而不是这个问题没有了。需要找时间详细跟踪一下。
还没有做一个单独的命令对对象求算面积(2.1.5版),容后补充。但是可以在输出窗口临时查看。
图26 对象面积
6. 结语
RSD对对象进行了一些研究,发现了很多问题。对象只是分类的第一步,但是对象的质量对分类太重要了。下次我们讨论分类时还要有进一步的涉及。
注
RSD的2.1.5版注定是一个过渡版本,暂时(2018年11月12日)发出来在群里内测一下,稍成熟些再传网盘上。(现在更新到了3.0.5-20190606,下载时注意版本)
加QQ群136965427关注软件更新情况。
RSD面向对象分类的图像分割相关推荐
- RSD的面向对象分类设计
RSD的面向对象分类设计 李国春 2018.11.19 RSD设计了一套暂时命名为SC(Steadfast Classification)分类的对象分割.特征提取和分类的技术.在<RSD面向对象 ...
- 用易康对遥感影像进行面向对象分类
1.对光学影像进行分割,选择合适的分割参数,选择导出为shp,然后再套和在差异的SAR上(注意themetic放置该shp文件): 2.新建工程,加载影像,勾选nodata去背景(即不用参与分割,并不 ...
- google earth engine (GEE)面向对象分类 代码
可以前往"地信遥感数据汇"获取更多数据. https://www.gisrsdata.com/ 遥感常用的三大类型分类方法:监督分类,非监督分类,以及面向对象分类.前两个代码,我很 ...
- 使用易康(eCognition Developer 8.9)对遥感影像进行面向对象分类
使用易康(eCognition Developer 8.9)对遥感影像进行面向对象分类 1.导入加载影像数据(注意文件不能出现中文) 2.影像分割 1)在[Process Tree]对话框里写分割进程 ...
- GEE面向对象分类(先分割影像 、再计算特征、最后分类)
GEE有内存限制,我这面向对象提取不太好用,如有大神有更好的方法,请多指导. //-------------------------------去云 ------------------------- ...
- RSD的支持向量机遥感数据分类
RSD的支持向量机遥感数据分类 李国春 2018.12.31 RSD的分类以一分类为主,在<RSD的面向对象分类>博文https://blog.csdn.net/gordon3000/ar ...
- RSD规则法分类识别乡村土路
上一篇<RSD的规则法遥感数据分类>介绍了分类方法,这里介绍一个用于识别乡村土路的例子.注意这里不是一个道路识别的项目,只是通过分类的方法提取得到乡村土路对象. 示例数据来自 //pan. ...
- RSD的规则法遥感数据分类
这里笼统地说规则法可能会使大家一头雾水,那我再重新说一遍博文标题:一种基于先验知识的产生式规则遥感数据分类的一分类方法.这样说可能更糟糕了. :) 先举个例子,我需要提取一个数据集的植被分布.你说植被 ...
- RSD处理高分5号高光谱(GF5 AHSI)数据(四)——从地物光谱搜索高光谱数据集
上一篇(RSD处理高分5号高光谱(GF5 AHSI)数据(三)--从GF5 AHSI 高光谱样本数据搜索光谱库)我们使用从高光谱数据集提取到的样本数据搜索光谱库,查找与之最相似的地物光谱,并列出相似程 ...
最新文章
- 优达学城《DeepLearning》2-3:权重初始化
- 导出Windows服务器下的Oracle数据库并导入到Linux服务器下的Oracle数据库中
- vbs 连接oracle 数据库,VBS访问、操作oracle数据库
- python周志_Python学习周志—第一周(入门知识)
- 多用继承 android,Android温习之路之继承
- QCwindows server 2003部署
- lisp 设计盘形齿轮铣刀_机械设计基础——周转轮系传动比的计算
- 个人站立会议第二阶段04
- 和媳妇加一起月薪三万五想换车了不知道x5养的起吗?
- java sql注入正则表达式_php防止sql注入示例分析和几种常见攻击正则表达式
- 常见图片格式总结--网页设计必备
- php多线程webservice,PHP有适用于高并发的WebService框架嘛?
- 双网卡实现内外网同时上网
- 安装VMwareTools
- 7.sqli-labs-Less7
- 带三维团队半年的一点总结和想法
- 高仿淘宝购物车分分钟让你集成
- meta20 无法安装 google play_不ROOT不刷机,小米手机如何安装谷歌 GMS 三件套
- windows应用启动java -jar
- 利用Host-only模式使用虚拟机静态IP上网
热门文章
- 使用打码平台登录B站
- C + + 课程设计之服装信息管理系统。①代码分析(含有源码)
- Windows用户密码的加密方法与破解
- 我们hive库建表默认是orc格式的,建表必须加 as textfile,否则外部文本数据导不进去,这坑趟过两遍了,妈蛋!
- 波卡黑客松第三届(秋季)开发者大赛落幕
- android地图选点,【百度地图】Android实现地图展示、定位、选点、地点查询和地点模糊查询功能...
- 2021四川高考成绩位次查询,四川高考排名对应学校-四川高考位次查询(2021年文科参考)...
- 实例化对象是什么意思,什么是实例化,什么是对象。多态性
- Rust 错误处理(二)
- windows10 安装 cuda8.0 cudnn6.0 tensorflow-gpu1.3.0 pycharm jupyter 及路径