select_shape_proto(Regions, Pattern : SelectedRegions : Feature, Min, Max : )
elect_shape_proto根据区域之间的特定关系来选择区域。
将区域Regions内的每个区域与区域Pattern 的组合进行比较。
极限(最小值和最大值)是绝对指定的,或者以百分比(0..100)表示,这取决于特征Feature。
特征的可能值为:
'distance_dilate'
确定从Pattern 边缘到Regions内的每个区域边缘的最大范数中的最小距离(参见distance_rr_min_dil)。
'distance_contour'
确定了Pattern 边缘到各区域边缘的最小欧氏距离。(见distance_rr_min)。
'distance_center'
确定了Pattern 中心到各区域中心的欧氏距离。
'covers'
检测Pattern 与Regions内各区域之间的匹配程度。
如果没有移位,那么这个Pattern 就是Regions的子集,重叠为0。
如果Pattern对应的区域经过相应的移位后,重叠为100。
否则,将Regions的有Pattern的开放面积与Regions面积(以百分比表示)联系起来。
'fits'
它研究的是模式是否能以适合区域的方式改变。
如果这是可能的,则从区域复制相应的区域。
忽略参数Min和Max。
'overlaps_abs'
计算了Pattern 与Regions内各区域的交集面积。
'overlaps_rel'
计算了Pattern 与Regions内各区域的交集面积。
相对重叠是指交集面积与Regions内各区域的面积之比(以百分比为单位)。
例程:
read_image (Image, 'fabrik')
dev_close_window ()
dev_open_window (0, 0, 512, 512, 'black', WindowID)
dev_set_color ('white')
dev_set_draw ('fill')
regiongrowing (Image, Regions, 1, 1, 3, 400)
select_obj (Regions, Pattern, 21)
dev_clear_window ()
select_shape_proto (Regions, Pattern, SelectedRegions1, 'distance_center', 0, 200)
stop ()
dev_clear_window ()
select_shape_proto (Regions, Pattern, SelectedRegions2, 'distance_contour', 0, 10)
stop ()
dev_clear_window ()
count_obj (Regions, Number)
for i := 1 to Number by 1
select_obj (Regions, ObjectSelected, i)
select_shape_proto (ObjectSelected, Pattern, SelectedRegions3, 'covers', 0, 1)
endfor
select_shape_proto (Regions, Pattern, SelectedRegions3, 'covers', 0, 1)
|