dist_ellipse_contour_points_xld(Contour : : DistanceMode, ClippingEndPoints, Row, Column, Phi, Radius1, Radius2 : Distances)
dist_ellipse_contour_points_xld确定轮廓线Contour 点与椭圆间的距离。
椭圆由中心(Row, Column、主轴的方向Phi、较大的半轴Radius1,较小的半轴Radius2所指定。
距离度量是几何距离,有时也称为正交距离。
返回所有轮廓点的距离Distances。
通常,距离是一个正值。
在这种情况下,必须选择等于“unsigned”的DistanceMode。
如果将此选项选择为“signed”,则距离可以取正负号,
具体取决于轮廓线点分别位于椭圆外还是椭圆内。
由于预处理中的缺陷,轮廓的起点和终点可能会出现错误。
在这种情况下,通常调用操作符fit_ellipse_contour_xld,
并将参数clippingendpoint设置为大于零的值,
以从计算中排除轮廓的开始和结束点。
为了得到拟合过程中使用的同一组点的几何距离,
ClippingEndPoints应取相同的值。
1.dist_ellipse_contour_xld(Contours : : Mode, MaxNumPoints, ClippingEndPoints, Row, Column, Phi, Radius1, Radius2 : MinDist, MaxDist, AvgDist, SigmaDist)dist_ellipse_contour_xld确定轮廓线Contours 与椭圆之间的距离,
椭圆由中心(Row, Column)、主轴的方向Phi、较大的半轴Radius1,较小的半轴Radius2指定。
轮廓线点到椭圆的距离有不同的测量方法(Mode:
geometric
基础距离度量是轮廓上的点与椭圆之间的几何距离。
这种度量也称为正交距离或欧氏距离。
algebraic
距离由代数距离来度量
其中,对描述椭圆的参数a - f进行归一化,
得到 Radius2 为椭圆中心距离。
该测量结果显示出高曲率偏置:
椭圆上高曲率点附近(如主轴上的极点)的距离小于低曲率点附近的距离。
focpoints
距离是用偏差XF1+XF2-2a来测量的,F1,F2为焦点,对应Radius1,
这一测量结果显示出低曲率偏差:
椭圆上高曲率点附近(如主轴上的极点)的距离大于低曲率点附近的距离。
bisec
距离是由X与两条直线通过X的角平分线的交点与焦点与椭圆的交点之间的距离来测量的。
这是X到椭圆的正交距离的一个很好的近似。
近似的精度取决于椭圆的展弦比和距离。
运算符返回所有等高线点的
最小绝对距离MinDist、
最大绝对距离MaxDist、
平均绝对距离AvgDist
绝对距离SigmaDist的标准差。
为了减少计算负载,
距离的计算可以限制在轮廓点的子集中:
如果MaxNumPoints分配的值不是-1,
那么只使用MaxNumPoints(均匀分布在轮廓上)。
由于预处理中的缺陷,轮廓的起点和终点可能会出现错误。
因此,可以从计算中排除轮廓开始和结束时的ClippingEndPoints。
例程
read_image (Image, 'mreut')
edges_sub_pix (Image, Edges, 'canny', 2, 20, 40)
select_contours_xld (Edges, SelectedContours, 'contour_length', 300, 600, -0.5, 0.5)
select_obj (SelectedContours, ObjectSelected, 2)
gen_ellipse_contour_xld (ContEllipse, 320, 230, 0, 50, 100, 0, rad(360), 'positive', 1)
dist_ellipse_contour_xld (ObjectSelected, 'geometric', -1, 0, 320, 230, 0, 50 , 100, MinDist, MaxDist, AvgDist, SigmaDist)
dist_ellipse_contour_points_xld (ObjectSelected, 'unsigned', 0,320, 230, 0, 50, 100, Distances)
|