select_shape_proto是一个非常有用的region筛选算子,但是由于难以理解,因此一般人使用得不是太多。

算子签名如下:

select_shape_proto(Regions, Pattern : SelectedRegions : Feature, Min, Max : )

其中Feature可以取这7种模式:'distance_center'、'distance_contour'、'distance_dilate'、'fits'、'overlaps_rel'、'overlaps_abs'、'covers'。

下面逐个解析。

提供一张图供读者研究验证:

select_shape_proto(Regions, Pattern, SelectedRegions, 'distance_center', 0 ,60)

distance_center:判断Regions中每个region的中心(area_center)距离Pattern中心的距离,MinMax控制距离的下限和上限,可以取负数

distance_contour:判断Regions中每个region的边缘距离Pattern边缘的距离,MinMax控制距离的下限和上限,可以取负数

需要注意的是,如果Pattern中的区域是不连续的,也就说Pattern通过connection操作以后可以变成多个region,那么此时'distance_center'、'distance_contour'模式的筛选结果较难预料,要尽量避免这种情况。例如下面这样的Pattern:

distance_dilate:distance_contour极为类似,当Pattern的膨胀量为Min~Max中的某个值时,Regions中刚好(注意“刚好”这两个字)能与Pattern有交集的region被选出。在计算方法上与'distance_contour'模式有极细微的区别,更大的区别是——如果Pattern中的区域不连续,也不影响'distance_dilate'模式的这一特性。

但是'distance_dilate'模式有个非常严重的缺点,当Regions中的元素非常多(例如超过50个)的时候,该模式下整个算子执行时间非常长,经常超过1秒钟。此时如果用'distance_contour'模式设法实现类似的功能,效率远高于'distance_dilate'模式。

select_shape_proto(Regions, Pattern, SelectedRegions, 'fits', Min, Max )

fits:判断Regions中每个region通过平移(shift,不能旋转)能不能完全盖住(fit)Pattern,如果能,则将这些region筛选出来;这里参数'Min'、'Max'无效

(图中三个大的矩形和红色圆平移以后都能完全盖住蓝色的小矩形Pattern,因此被选出)

select_shape_proto(Regions, Pattern, SelectedRegions, 'overlaps_rel', 5 ,6)

overlaps_rel:根据Pattern和Regions中每个region的重叠部分进行筛选,overlaps_rel定义为重叠部分面积和当前region面积的比值,用于筛选的重叠比例由参数'Min''Max'控制,有效取值为0-100

(图中红色矩形和大圆('margin形式表示')的重叠部分占红色矩形的比例为5.76875%,刚好位于Min和Max之间,因此被选出)

overlaps_abs:overlaps_rel类似,不过由比值(相对值)改成了重叠的绝对值,即重叠的像素面积

covers:看了半天、试了半天,没搞懂这个模式的规律,以后再说。

使用经验:就我个人来说,我觉得这7种特征模式中'distance_center'、'distance_contour'、'distance_dilate'、'overlaps_rel'最有用。

select_shape_proto算子的几种特征模式含义解析的更多相关文章

  1. FTP协议的两种工作模式简单解析!

    转载自百度百科:http://baike.baidu.com/link?url=KaBZmDM4IZ2v56MyoOnpjqKr0gADv_BRbgjlscYdyvh3-zDwINOHNPSi9Jlp ...

  2. LVS负载均衡(LVS简介、三种工作模式、十种调度算法)

    一.LVS简介 LVS(Linux Virtual Server)即Linux虚拟服务器,是由章文嵩博士主导的开源负载均衡项目,目前LVS已经被集成到Linux内核模块中.该项目在Linux内核中实现 ...

  3. LVS负载均衡软件使用及(LVS简介、三种工作模式、十种调度算法)

    一.LVS简介 LVS(Linux Virtual Server)即Linux虚拟服务器,目前LVS已经被集成到Linux内核模块中.该项目在Linux内核中实现了基于IP的数据请求负载均衡调度方案, ...

  4. LVS 负载均衡 三种工作模式 十种调度算法

    原文链接:https://blog.csdn.net/weixin_40470303/article/details/80541639 一.LVS简介 LVS(Linux Virtual Server ...

  5. JS面向对象函数的四种调用模式

    函数的四种调用模式 概念 在 js 中,无论是函数, 还是方法, 还是事件, 还是构造器,...这些东西的本质都是函数 函数, 方法, 事件, 构造器,...只是所处的位置不同 这四种模式分别是 函数 ...

  6. 云计算的三种服务模式:SaaS/PaaS/IaaS

    转载http://blog.chinaunix.net/uid-22414998-id-3141499.html 定义 云计算主要分为三种服务模式,而且这个三层的分法重要是从用户体验的角度出发的: S ...

  7. 深度分析Linux下双网卡绑定七种模式 多网卡的7种bond模式原理

    http://blog.csdn.net/abc_ii/article/details/9991845多网卡的7种bond模式原理 Linux网卡绑定mode共有七种(~) bond0.bond1.b ...

  8. 多网卡的7种bond模式原理

    多网卡的7种bond模式原理 Linux 多网卡绑定 网卡绑定mode共有七种(0~6) bond0.bond1.bond2.bond3.bond4.bond5.bond6 常用的有三种 mode=0 ...

  9. Linux 多网卡的7种bond模式原理

    Linux 多网卡绑定 网卡绑定mode共有七种(0~6) bond0.bond1.bond2.bond3.bond4.bond5.bond6 常用的有三种 mode=0:平衡负载模式,有自动备援,但 ...

随机推荐

  1. VC++ 6.0 C8051F340 MFC programming note

    /************************************************************************************** * VC++ 6.0 C ...

  2. Element-ui实现loading的局部刷新

    后台管理系统loading的局部刷新 在一次vue+element-ui后台管理系统的项目中,遇到这样一个问题,引入element-ui加载框后,loading会占满整个屏幕,虽然通过改变路由实现了局 ...

  3. WinForm获取当前路径汇总

    Winform获取应用程序的当前路径的方法集合汇总,值得收藏备用 具体如下, //获取当前进程的完整路径,包含文件名(进程名). string str = this.GetType().Assembl ...

  4. C语言extern关键字使用

    在chinaunix上看见一篇转载的文章,觉得特别好,关于extern使用的解释: 参考链接:http://doc.chinaunix.net/CPP/201206/2248432.shtml 在C语 ...

  5. Git资料

    git作为流行的分布式版本管理系统,虽然入门有点难,不过学会还是很有用的,尤其是针对技术人员.它从2005年Linux作者两周用C++写的一个版本发展到现在这么流行也是有原因的. Downloads  ...

  6. 写写Django中DRF框架概述以及序列化器对象serializer的构造方法以及使用

    写写Django中DRF框架概述以及序列化器对象serializer的构造方法以及使用 一.了解什么是DRF DRF: Django REST framework Django REST framew ...

  7. Linux进程间通信——使用共享内存(转)

    一.什么是共享内存 顾名思义,共享内存就是允许两个不相关的进程访问同一个逻辑内存.共享内存是在两个正在运行的进程之间共享和传递数据的一种非常有效的方式.不同进程之间共享的内存通常安排为同一段物理内存. ...

  8. Axis开发Web Service

    可以自动生成代码的 一.Axis环境的安装 1.安装环境 J2SE SDK 1.4,Tomcat 5.0,eclipse 3.2. 2.到 http://xml.apache.org 网站下载Axis ...

  9. unity里面的gameobject和transform的关系

    一切都是物体(gameobject),而transform是物体的一个基本属性类,包含位置,旋转,缩放,三个基本属性,两者之间可以互相转换 查找物体,建议用transform,GameObject无法 ...

  10. 智能家居入门DIY——【三、GP2Y10之颗粒物传感器】

    这个传感器接线算比较简单的,程序也不麻烦.不过这东西是颗粒物传感器吧,不是神马PM2.5(总悬浮颗粒物),不是神马PM10(可吸入颗粒物).插个螺丝刀进去度数也是变的,不是说的很清楚原理是反光嘛……… ...