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'最有用。

最新文章

  1. 实现CSS等分布局的4种方式
  2. AutoMapper配置方法
  3. 谷歌的网页排序算法(PageRank Algorithm)
  4. 二维背包(钟神想要的)(不是DP)
  5. Linux虚拟机与外面系统ping不通,或者连不上网
  6. 如何使用 yum 安装/更新/移除 软件
  7. linux下测试宽带速度
  8. Python 修炼1
  9. Spring事务管理源码分析
  10. Python数据运算
  11. Linux 开放端口号(mysql开启远程连接)
  12. TCP学习总结(四)
  13. html总结:表格中的文字居中
  14. LOJ #2537. 「PKUWC 2018」Minimax (线段树合并 优化dp)
  15. 步步為營-98-MyAPI
  16. MySQL-UNIQUE
  17. lsusb
  18. 具有 Button 风格的 Panel
  19. CSI-MIPI学习笔记
  20. 黑马程序员_java基础笔记(02)...java语言基础组成

热门文章

  1. 《DSP using MATLAB》Problem 2.7
  2. 理解JAVA虚拟机(上)
  3. 实用的IP地址处理模块IPy
  4. 黄聪:利用iframe实现ajax 跨域通信的解决方案(转)
  5. c语言个人财务管理系统
  6. 一.jQuery源码解析之总体架构
  7. HttpContext.Current并非无处不在
  8. java8时间使用小结
  9. Oracle中 HWM与数据库性能的探讨
  10. tensorflow下载和安装