RSD的面向对象分类设计

李国春 2018.11.19

RSD设计了一套暂时命名为SC(Steadfast Classification)分类的对象分割、特征提取和分类的技术。在《RSD面向对象分类的图像分割》https://blog.csdn.net/gordon3000/article/details/84059254 已经介绍了图像分割部分,鉴于这个分类方法不完善加之技术上更是不成熟,这里先做一简要介绍,并举例示范其应用,后期的改进和完善会陆续发布。

1. SC分类方法

1.1 只分1类的Steadfast Classification

与其它常用分类方法不同的是SC只分1类(当然不是总共只分一类,是每次提取1类)。只关注1类符合应用习惯,比方如果只想研究水色,公路、建筑、农田、沙地等信息就可以不考虑;研究植被就可以只提取不同等级的植被信息。得到1类之后使用RSD的架构优势马上就可以2次类别细分。

只分一类是一种2分分类,待分类对象只判断“是”与“否”,分类结束除得到分类目标外还有大量的未分类对象。其实多类的分类方法也同样会遗留未分类对象,二者并无本质差异。

SC分类只分一类有一个重要优势是能显著提高分类速度,有明显的应用意义。当然还需要在应用实践中检验这样分类是否合理。

1.2 基于先验知识的产生式规则

SC分类也使用训练样本,这些训练样本为各种类别特征提供一个“标杆”。对于某些特征,如果我们事先知道这些特征的分布情况,也可以不使用这些样本数据,直接指定类别划分标准。分类器可以根据样本标准或者先验知识应用产生式规则分类。

RSD对一些经典的分类方法也是要实现支持的,一步步来吧。

1.3基于支持向量机1类分类器

(另文介绍)

1.4 半自动(手动编辑)

有多种原因能造成自动分类达不到要求的效果,RSD的SC分类提供了一种在对象(也可以是像素)水平上的编辑功能。

分类方法通过下述例子介绍。

2. 山林分类试验

2.1 山林数据

使用https://pan.baidu.com/s/1nvIJekT/上传示例数据/GF2 /GF2_PMS1_E121.6_N41.3_20170924_L1A0002623380.rar剪切的子区GF2_Fuse_Cut-02.rsd(在上述地址的同一个目录中),提取山林。

下载数据,在RSD中打开,如下图:

图1 处理区域

2.2 选择样本数据

在主窗口滚动鼠标滚轮,直至出现一个黑箭头,右击,出来一个弹出菜单。点击“分类对象分割->基于图像特征的分割”。为“类别划分等级”指定一个值,如64。“对象合并阈值”可以设置为0、1或者更大值。然后开始进行图像分割。

分割完毕后,可以根据需要多次重复合并对象,目的是防止山林粗糙地貌对象过于破碎。

下一步让鼠标仍保持黑箭头,按住ctrl键(或者打开点亮开关)对象高亮显示。点亮一个对象后,右击“新建分类样本类别”,出现下述对话框。

图2 采集分类样本对话框

点击那个带颜色的小圆形,为该类选择一个颜色,点击确定就创建一个新的类样本。见下图

图3 样本窗口

在样本窗口选中这个新建类别,再在主窗口双击任意对象,该对象就作为样本添加进来了。见图4。

图4 山林的训练样本(红色)

图中红色小区域即为用户自己选取的代表山林的训练样本。

2.3 分类

分类应该先从“设置二叉树节点为叶子”设置分类规则,然后再“分类”,但是这里一步就将设置和分类合在一起处理了。

图5 设置分类规则和分类

点击“设置二叉树节点为叶子”后,出现下述对话框

图6 SC分类规则编辑

注意:这是一个未完成的规则编辑器,容后逐步完善。这里一是规则类别不全,二是类别中规则细则不全,三是规则组合不全。产生式规则有效组合可能非常多,合理使用这些有效组合能产生非常详细的分类结果。

在图6对话框中,选中“欧氏距离”,然后点击后面的“样本求值”,在操作数2一列出现一个数,这个数是样本的均值。

这里仅使用“距离小于4000”规则进行分类,分类结果见图7。

这个4000是根据样本数据给出的一个估计值或者经验值。该规则是用样本数据计算一个“核心”,在聚类分析等里面叫聚类中心。然后每个对象分别计算自己的核心再与样本的聚类中心计算距离,距离大于这个4000的对象划定为“非”,小于4000的为“是”。遍历一遍所有的对象,即完成一次分类。

图7 山林分类结果

图8分类结果直接产生一个新层(图中红框的层)

2.4 对象编辑

通常这样粗划分的类别是很难满足应用需求的。也许定制非常详尽的Feature可以一次得到满意的分类结果,可是这太难了,陆表分类要定制那么详细的规则通常是得不偿失。

分类结果达不到要求时你有两种选择,1是对分类结果进行再次分类,由于RSD分类结果就是一个新层,勾选这个新层马上就可以开始下一次的分类,RSD对这种多次迭代的分类有架构上的优势。2是对对象或者像素进行交互编辑。

对象编辑可以手动向分类结果添加和删除对象,也可以直接拷贝和粘贴像素。简单编辑的结果见图9。后面我们介绍一点更详细的对象编辑。

图9 山林分类编辑结果

3. 稻田分类试验

下面对一个稻田的子区分类,并演示对象的手工编辑。为了问题简化起见特意选择了一个比较简单的例子。

3.1 稻田数据

数据使用上述2.1剪切的子区GF2_Fuse_Cut-00.rsd,https://pan.baidu.com/s/1nvIJekT/上传示例数据/GF2 /

数据范围见图10。格状成片的黄绿色为稻田,颜色较深的成片区域为芦苇。余为其它地物。

图10 稻田分类试验区

3.2 对象划分

图11 图像分割参数

图12分割结果

分割结果比较破碎,直接分类不合并了,节省很多时间。

3.3 采集样本数据

这次我们使用笔形光标采集像素级别的样本数据。

图13 选择像素级样本数据

3.4 分类规则选取与分类结果

图14 选取的规则

使用的规则有3条:

  • 目标类对象与与样本的距离小于2400
  • 对象与样本均值(330.38)的差不超出±30,与上一步进行逻辑与操作
  • 对象NDVI值大于0.4,与上一步进行逻辑与操作

逻辑操作要求上述3个条件同时满足。分类结果如下:

图15 使用规则自动分类的结果

由图可见出了2个问题:1是将大片芦苇误分为稻田,2是有的稻田有遗漏的对象。

对于第一个问题,这是RSD分类器的规则尚未设计完善,增加更多的规则比方纹理方面或者色调等或许可解决此问题。也进行了一些纹理方面的试验比如灰度共生矩阵,出现了一些对象尺度方面等问题,(这个问题在支持向量机分类里面已经解决,另文介绍)。

第二个问题是遗漏或者误分,也是分类中经常出现的问题,只能靠实践中尽量控制,这是个老问题。

3.5 对象编辑改善分类效果

图16 对象编辑的结果

删除不是本类的对象,并将漏分的对象补齐,处理的到相对比较满意的结果(图16)。

4. 对象编辑

对象编辑应该放在前面介绍,然后再说林地和稻田的分类试验,这里先反过来看吧。

4.1 对象点亮或选中

对象分割后,无论显示或者不显示分类对象集,光标为黑箭头时,按住ctrl键,轻轻移动鼠标,光标位置的对象就被高亮显示。或者在打开“光标位置对象点亮”时,直接移动鼠标,对象即被点亮。

图17 对象高亮显示打开

4.2 图像分割目标层、来源层

指定或者新建一个层,用于存放对象编辑产生的结果数据。在黑箭头光标右击的弹出菜单上,点击“新建分割目标层”就会创建一个空的新层,或者在层列表窗口右击一个已经存在的层,从弹出菜单选择“设置为分割目标层”,则可以将该层设置为分割目标层。

来源层是对象编辑操作的数据来源,通常是在层列表中勾选的层。

4.3 剪切对象

从图15的分类结果,勾选来源层,然后点亮一个对象,右击该对象,在出现的弹出菜单上点击“剪切当前对象数据”,则来源层中点亮的对象被删除。

可以同时点亮多个对象一起删除。

图18 选中并剪切对象

4.4 移动和复制对象

点击下述菜单命令,即可将来源层点亮的对象移动到或者复制到分割目标层。

图19 复制和移动对象

4.5区域编辑对象

打开数据、进行对象分割并创建一个分割目标层。滚动鼠标滚轮使光标变为十字形,在主窗口拉出一个矩形选择区。然后右击鼠标,在弹出菜单选择“移动选择区对象到…”。

图19 移动矩形选择区所有对象

图20 来源层的矩形选择区所有对象被转移到了目标层

也可以进行交互指定的多边形区域的对象编辑。

图21 来源层的多边形选择区所有对象被转移到了目标层

4.6像素级的编辑

图22 直接编辑像素

可以直接通过上述菜单命令直接对像素进行剪切复制等操作。

4.7 对象编辑的优缺点

我觉得RSD的对象编辑与其它软件的手动编辑分类结果相比,优势在于经分类筛选后的对象更容易选取。对象只要点中就可以选取,而像素级别的编辑要按像素划分。这种对象水平上的修补应该更节省操作人员的精力。

图23  对象选取

这样划分和挑选对象比单纯的根据像素画边界还是要容易些吧。

缺点是还没有UNDO和REDO,所以使用时勤备份。比方随时复制一个层。

图24 复制当前层

RSD的2.1.5版注定是一个过渡版本,暂时(2018年11月12日)发出来在群里内测一下,稍成熟些再传网盘上。群文件里面有一个RSDBIN.rar文件,下载后用里面的文件替换安装目录里面的对应的文件。

加QQ群136965427关注软件更新情况。

RSD的面向对象分类设计相关推荐

  1. RSD面向对象分类的图像分割

    RSD面向对象分类的图像分割 李国春 2018.11.12 目录 RSD面向对象分类的图像分割... 1 1.    图像分割方法... 1 2. 使用RSD进行图像分割... 3 2.1 准备数据. ...

  2. 面向过程和面向对象的设计思想、java类、Java类的定义、java对象、对象的创建和使用、类和对象、变量分类、方法分类、构造方法、方法的重载

    1.面向过程和面向对象的设计思想 面向过程:procedure oriented programming 缩写 POP. 分析出解决问题所需要的步骤,然后把步骤一步一步实现. 面向过程直接关注流程. ...

  3. 面向对象——类设计(二)

    面向对象--类设计(一) 拷贝构造函数 拷贝构造函数(copy ctor)和拷贝赋值(copy assignment)操作符: 编译器创建的版本只是单纯地将来源对象的每一个non-static成员变量 ...

  4. 家庭财务管理系统(C++面向对象课程设计附课设报告)

    0004 家庭财务管理系统(C++面向对象课程设计) 摘要:主要用于记录家庭财务支出和收入等记录的程序设计,其主要开发平台为 Windows 10,程序设计开发环境为 Microsoft visual ...

  5. RSD规则法分类识别乡村土路

    上一篇<RSD的规则法遥感数据分类>介绍了分类方法,这里介绍一个用于识别乡村土路的例子.注意这里不是一个道路识别的项目,只是通过分类的方法提取得到乡村土路对象. 示例数据来自 //pan. ...

  6. 面向对象思想设计原则及常见设计模式

    面向对象思想设计原则 •在实际的开发中,我们要想更深入的了解面向对象思想,就必须熟悉前人总结过的面向对象的思想的设计原则 •单一职责原则 •开闭原则 •里氏替换原则 •依赖注入原则 •接口分离原则 • ...

  7. 面向对象的设计原则最终篇

    点击上方"方志朋",选择"设为星标" 做积极的人,而不是积极废人 关于面向对象的设计原则我之前已经解释过四种了,分别是单一职责原则,开放关闭原则,里式替换原则, ...

  8. 面向对象软件设计的“开—闭”原则

    1.什么是开闭原则         "开-闭"原则是指软件实体应当对扩展性开放,对修改关闭.即软件实体应该在不修改的前提下扩展,这个原则实际上为软件设计指明了目标.我们知道软件设计 ...

  9. 面向对象软件设计——设计模式学习

    工作也从开始C语言,转向现在的C++,表面上看得出,但实际中却没有把这种转变深入到思想中,究其原因还是对面向对象的软件设计不了解,有必要好好学习一下设计模式这个东东.本文就是设计模式学习第一篇-- 1 ...

最新文章

  1. EXCEL保存提示“隐私问题警告:此文档中包含宏……”解决办法
  2. mysql 加快复制进程_MySQL并发复制进程演进
  3. python语言自学-自学Python要学多久可以学会?老男孩Python培训
  4. 《大型网站技术架构》-读书笔记四:高可用架构
  5. python中easygui最新下载教程_python怎么下载easygui
  6. PCL点云库法向量显示,vtk错误“no override found for vtkActor”
  7. 【机器学习基础】机器学习中必知必会的 3 种特征选取方法!
  8. ACM数论之旅4---扩展欧几里德算法(欧几里德(・∀・)?是谁?)
  9. lisp eval apply_SICP远古魔法-LISP概览(1-2)
  10. Web前端开发:SQL Jsp小项目(一)
  11. CV与物理模型的结合,正在改变传统天气预报
  12. java interceptor用法_java自定义拦截器用法实例
  13. 量化选股模型—多因子模型
  14. word模板中替换文本中自定义字符串生成月报
  15. 第一章 Cheat Enginee(CE)使用指南
  16. Python的那些事
  17. 快手打开后不显示画面_快手打开不显示图像怎么办
  18. RNN中的Teacher Forcing
  19. 更新资产折旧价值或AW01N查看资产价值提示消息:消息号AU390 - AS02 / AFAR
  20. C语言技巧:有if时使用likely和unlikely让代码运行更快

热门文章

  1. iOS开发-Umeng第三方登录-个人整理
  2. 人工智能领域最佳5种编程语言
  3. html 禁止页面回弹,JavaScript禁止微信浏览器下拉回弹效果
  4. python数据分析案例(四):共享单车租用分析
  5. Python爬取起点小说并写入文档
  6. MC9S12G128模块化分层化软件架构之六——KEY
  7. 计算机求等级值的计算,2015年计算机一级MS OFFICE等级考试计算题
  8. mysql ocp_MySQL 5.7OCP考试经验分享。
  9. Java中private方法可以被重写吗?
  10. 新浪一位程序员因加班错失年会77万特等奖,该不该给他补上?