gen_parallel_contour_xld(Contours, ParallelContours, Mode, Distance) 根据指定的方式生成平行于原来的xld轮廓且距离为Distance的xld轮廓。
结果存储在ParallelContours 这里的Mode设置为regression_norla表示回归方式
为了计算平行轮廓,需要在每一个轮廓点上取输入轮廓的法向量。 参数Mode决定了如何计算这些法向量。
如果Mode = 'gradient',则假设输入轮廓为边缘, 从边缘的梯度方向获取法线信息(见edges_sub_pix)。为此,输入轮廓必须存在属性'edge_direction'。
如果Mode = 'contour_normal', 则使用可能存在的normal信息来确定法线。为此,轮廓属性“angle”必须存在(参见lines_gauss或edges_sub_pix)。
最后,如果Mode = 'regression sion_normal',则从一个局部线到每个轮廓点的拟合确定法向量。 在这里,法向量的方向是这样的,当等高线从头到尾遍历时,法向量都指向等高线的右侧。 与前两种模式相比,这种模式可以用于所有的XLD轮廓,无论它们是如何生成的。
dev_set_color ('red')
gen_image_const (Image, 'byte', 64, 64)
gen_circle (Circle, 32, 32, 16)
paint_region (Circle, Image, ImageCircle, 255, 'fill')
edges_sub_pix (ImageCircle, Edges, 'canny', 1.5, 20, 40)
gen_parallel_contour_xld (Edges, ParallelEdgesAngle, 'contour_normal', 3)
gen_parallel_contour_xld (Edges, ParallelEdgesGradient, 'gradient', -6)
gen_parallel_contour_xld (Edges, ParallelEdgesRegression, 'regression_normal', 9)
stop ()
?
gen_rectangle1 (Rectangle, 0, 0, 63, 31)
paint_region (Rectangle, Image, ImageRectangle, 255, 'fill')
edges_sub_pix (ImageRectangle, Edges, 'canny', 1.5, 20, 40)
gen_parallel_contour_xld (Edges, ParallelEdgesAngle, 'contour_normal', -3)
gen_parallel_contour_xld (Edges, ParallelEdgesGradient, 'gradient', -6)
gen_parallel_contour_xld (Edges, ParallelEdgesRegression, 'regression_normal', -9)
?
?
|