halcon系列之直线拟合和圆形拟合算子

简介: halcon系列之直线拟合和圆形拟合算子

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’, ‘gauss’, ‘huber’, ‘regression’, ‘tukey’)
MaxNumPoints (input_control):参与拟合直线的最大轮廓点数(设置-1代表所有点参与计算;最小值要大于等于2,因为至少两点才能确认一条直线)
ClippingEndPoints (input_control) :拟合直线时,需要忽略轮廓起始处点个数。(一个XLD轮廓会被线分割成很多个小轮廓)
Iterations (input_control) :最大迭代次数。(不适用于’regression’)
ClippingFactor (input_control):剔除异常值因子。(算法 ‘huber’ 、‘drop’ 设置1.0,'tukey’设置2.0)
RowBegin (output_control) :拟合后的线段起始点行坐标
ColBegin (output_control) :拟合后的线段起始点列坐标
RowEnd (output_control) :拟合后的线段终点点行坐标
ColEnd (output_control) :拟合后的线段终点点列坐标
Nr (output_control) :直线方程法线式x相乘系数
Nc (output_control) :直线方程法线式y相乘系数
Dist (output_control) :坐标系原点到线段的距离

fit_line_contour_xld目的是将一个XLD轮廓拟合成一条线段。几何数学上获取线段的起始点坐标,以及直线法线式方程中的Nr,Nc向量。

法线式方程如下:

这个算子在工业检测中有很大用处,比如:

1、精细寻找产品的边界用于角度计算
2、拟合两条边,然后求交点,做定位用
3、求解参与拟合的点到直线的距离,可以做异常值检测

 

拟合直线的算法有以下几种:

‘regression’:回归,标准的最小二乘法拟合

‘huber’:加权的最小二乘法拟合,异常值的影响被减小。

‘tukey’:加权的最小二乘法拟合,异常值被忽略,Halcon推荐方法。

‘drop’:加权的最小二乘法拟合,异常值被忽略。

‘gauss’:加权的最小二乘法拟合,异常值去除是根据轮廓点距拟合直线距离的平均值以及标准差方式决定。

 

2.fit_circle_contour_xld

用于拟合圆的xld轮廓(最少需要3个轮廓点)

fit_circle_contour_xld( Contours : : Algorithm, MaxNumPoints, MaxClosureDist, ClippingEndPoints, Iterations, ClippingFactor : Row, Column, Radius, StartPhi, EndPhi, PointOrder )
Contours(in):输入轮廓
Algorithm(in):拟合圆的算法
MaxNumPoints(in):用于计算的最大轮廓点个数
MaxClosureDist(in):一个轮廓的末尾点最大间距被认为是闭合
ClippingEndPoints(in):在逼近过程中被忽略的开始及末尾点个数
Iterations(in):迭代的最大次数用于鲁棒加权拟合
ClippingFactor(in):消除异常值的裁剪因子
Row(out):圆心行坐标
Col(out):圆心列坐标
Radius(out):圆半径
StartPhi(out):开始点的角度(rad)
EndPhi(out):末尾点的角度(rad)
PointOrder(out):边界点的顺序

参数Algorithm的可选项解释如下:

algebraic:这种方法减少了轮廓点与结果圆之间的代数距离

ahuber:类似于algebraic,轮廓点被加权以减小异常值的影响基于方法Huber

atukey:类似于algebraic,轮廓点被加权以减小异常值的影响基于方法Tukey

geometric:该法减少了轮廓点与结果圆之间的几何距离,该法被统计是最优的,但占用很多计算时间。如果轮廓点被噪声干扰严重,可以考虑使用该方法。

geohuber:类似于geometric,轮廓点被加权以减小异常值的影响基于方法Huber

geotukey:类似于geometric,轮廓点被加权以减小异常值的影响基于方法Tukey

ClippingFactor控制被弱化的异常值个数,值越小,越多异常值被检测到。最小拟合一条线的必要轮廓点个数是2,因此,一条轮廓线点个数至少是2+2*ClippingEndPoints。

注意:无论是直线拟合还是圆形拟合,操作的对象都是contours,因此需要将拟合的点通过gen_contour_polygon_xld转为contour再进行拟合。

相关文章
|
2月前
基于形状模板匹配(一)相关算子简介
基于形状模板匹配(一)相关算子简介
|
2月前
halcon算子模板匹配(一)基于形状的模板匹配
halcon算子模板匹配(一)基于形状的模板匹配
120 0
Halcon中关于角度计算和测量拟合的算子详解
Halcon中关于角度计算和测量拟合的算子详解
1441 0
|
算法 数据可视化
Halcon边缘检测和线条检测(1),文章含自适应/动态二值化等算子
Halcon边缘检测和线条检测(1),文章含自适应/动态二值化等算子
1192 0
|
2月前
halcon基础系列之二维量测相关算子
halcon基础系列之二维量测相关算子
|
5月前
[Halcon&几何] 直线的垂线与延长线的计算
[Halcon&几何] 直线的垂线与延长线的计算
117 1
|
5月前
[3D&Halcon] 3D重要算子及简单处理点云模型求高度示例讲解
[3D&Halcon] 3D重要算子及简单处理点云模型求高度示例讲解
255 0
|
5月前
|
算法
[Halcon&拟合] 直线、矩形和圆的边缘提取
[Halcon&拟合] 直线、矩形和圆的边缘提取
163 0
|
编解码 Android开发 计算机视觉
多分辨率找图sift和直方图
牙叔教程 简单易懂
202 0
|
编解码 算法 计算机视觉
Canny算子与霍夫变换检测圆与直线
Canny算子与霍夫变换检测圆与直线
293 0
Canny算子与霍夫变换检测圆与直线