halcon中的fit_line_contour_xld拟合效果是比较好的,可以有效剔除异常点的干扰,从参数Algorithm可以看出它使用的是加权最小二乘法,huber、tukey、drop、gauss表示不同的权重函数,权重函数的输入是一个距离(即点到直线的距离),距离越大权重越小,距离越小权重越大。我也使用了此方法同时配合ransac,增加了抽样点个数、...
1.fit_line_contour_xld 通过轮廓进行直线拟合 fit_line_contour_xld(Contours : : Algorithm, MaxNumPoints, ClippingEndPoints, Iterations, ClippingFactor : RowBegin, ColBegin, RowEnd, ColEnd, Nr, Nc, Dist)Contours (input_object) :输入的XLD轮廓Algorithm (input_control):直线拟合算法( ‘drop’, ‘...
fit_line_contour_xld (SelectedXLD,'tukey', -1,0,5,2, RowBegin, ColBegin, RowEnd, ColEnd, Nr, Nc, Dist)*对XLD轮廓做近似直线计算--拟合直线--获得直线数据*参数1:输入轮廓*参数2:形成线的算法*regression:回归,标准的最小二乘法拟合*huber:加权的最小二乘法拟合,异常值的影响被减小基于Huber方法...
fit_line_contour_xld (SelectedXLD, 'tukey', -1, 0, 5, 2, RowBegin, ColBegin, RowEnd, ColEnd, Nr, Nc, Dist) *对XLD轮廓做近似直线计算--拟合直线--获得直线数据 *参数1:输入轮廓 *参数2:形成线的算法 * regression:回归,标准的最小二乘法拟合 * huber:加权的最小二乘法拟合,异常值的影响...
在Halcon中,拟合直线可以使用fit_line函数来实现。fit_line函数会将轮廓点集作为输入,并返回拟合的直线参数。以下是一个示例代码,演示如何拟合直线并将其存储在LineParams变量中: halcon fit_line (Contours, 'tukey', -1, 0, 5, 2, LineParams) 第六步是显示结果。在完成轮廓拟合直线后,我们可以使用Halcon提供...
txt','output',FileHandle_cicle) * for I := 1 to Number by 1 * select_obj (ContoursSplit, Contour, I) * get_contour_global_attrib_xld (Contour, 'cont_approx', Type) * -1表示线段;0表示椭圆;1表示圆弧 * if (Type = -1) * 计算起始坐标 * fit_line_contour_xld (Contour, 'tukey'...
halcon内置的fit_line_contour_xld工具在直线拟合方面表现出色,它能有效过滤掉异常点的影响。算法中,huber、tukey、drop、gauss四种权重函数用于计算距离权重,距离越大,权重越小;距离越小,权重越大。此外,我们还结合ransac方法,通过调整抽样点数、迭代次数和内点距离等参数,确保拟合的直线均方误差最小...
fit_line_contour_xld:拟合圆 fit_ellipse_contour_xld:拟合椭圆 fit_rectangle2_contour_xld:拟合矩形 注:有时候在拟合轮廓之前需要判断一下轮廓属性,以确定应拟合成直线还是还是圆,可通过算子: get_contour_global_attrib_xld (SingleSegment,‘cont_approx’,) ...
3.假设此时刚好获取俩条线 ,则可以利用 distance_ll ,求得 距离,也可以自己fit_lineXXXX 拟合直线再求距离; 以上是一种方法,另一种常见方法是利用 measure_pos 或measure_pair 进行测量,不熟悉的可以翻看示例或者使用 测量助手进行测量 。 创建过程或函数,或者全文编辑。
fit_circle_contour_xld 参数Algorithm的可选项解释如下: algebraic:这种方法减少了轮廓点与结果圆之间的代数距离 ahuber:类似于algebraic,轮廓点被加权以减小异常值的影响基于方法Huber atukey:类似于algebraic,轮廓点被加权以减小异常值的影响基于方法Tukey