select_contours_xld(Contours : SelectedContours : Feature, Min1, Max1, Min2, Max2 : )
select_contours_xld根据以下特征(参数Feature)从输入轮廓Contours 中选择XLD轮廓:
contour_length
所有长度小于Min1或大于Max1的轮廓都不会返回(Min2和Max2在这里没有影响)。
maximum_extent
所有最大范围(参考Haralick and Shapiro: Computer and Robot Vision, Addison-Wesley 1992, chapter 3.2)
小于Min1或大于Max1的轮廓(Min2和Max2在这里没有影响)都不会返回。
direction
只返回回归线方向在Min1和Max1之间的等值线(以弧度为单位,逆时针方向)。
Min1和Max1映射到[0,2*PI]的范围。(Min2和Max2在这里没有影响)。
curvature
只返回与回归线的平均距离在Min1和Max1之间,
距离的标准差在Min2和Max2之间的等值线。
closed
只返回起点和终点之间的距离小于或等于Max1像素的轮廓。
(Min1、Min2和Max2在这里没有影响。)
open
只返回起点和终点之间的距离大于Min1像素的轮廓线。
(Max1、Min2和Max2在这里没有影响)。
如果根据曲率选取Min1 = Max1 = 0或Min2 = Max2 = 0,则各自的特征对选取没有影响。
在轮廓线按“direction”或“curvature”进行select_contours_xld滤波之前,
必须使用regress_contours_xld计算到轮廓线的回归线参数。
如果没有这样做,select_contours_xld在内部调用regress_contours_xld,
参数Mode = 'no', iteration = 1。
如果应该使用不同的模式,则必须显式地调用regress_contours_xld。
例程
dev_close_window ()
dev_open_window (0, 0, 768, 576, 'black', WindowID)
read_image (Rim, 'rim')
threshold (Rim, Dark, 0, 128)
connection (Dark, DarkRegions)
select_shape (DarkRegions, Circles, ['circularity','area'], 'and', [0.85,50], [1.0,99999])
dilation_circle (Circles, ROIOuter, 8.5)
erosion_circle (Circles, ROIInner, 8.5)
difference (ROIOuter, ROIInner, ROI)
union1 (ROI, ROIEdges)
reduce_domain (Rim, ROIEdges, RimReduced)
edges_sub_pix (RimReduced, Edges, 'canny', 4, 20, 40)
select_contours_xld (Edges, RelEdges, 'length', 30, 999999, 0, 0)
dev_display (Rim)
dev_set_colored (12)
dev_display (RelEdges)
|