select_shape_proto算子的几种特征模式含义解析
Posted xh6300
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了select_shape_proto算子的几种特征模式含义解析相关的知识,希望对你有一定的参考价值。
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中心的距离,Min和Max控制距离的下限和上限,可以取负数。
distance_contour:判断Regions中每个region的边缘距离Pattern边缘的距离,Min和Max控制距离的下限和上限,可以取负数。
需要注意的是,如果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算子的几种特征模式含义解析的主要内容,如果未能解决你的问题,请参考以下文章