拟合的一般步骤:
1. 采集图像
2. 预处理,去燥、抠图
3. 边缘提取
4. 分割轮廓(或者联合轮廓)
5. 拟合
6. 或者进行距离的计算、或者显示
拟合的三个重要函数(直线、椭圆、圆)
//拟合直线
fit_line_contour_xld
Contours:输入轮廓
Algorithm:拟合直线的算法
MaxNumPoints:用于计算的最大轮廓点数,-1表示所有点都参与计算
ClippingEndPoints:轮廓开始点和结束点之间,被忽略点的个数
Iterations:加权拟合的最大迭代次数
ClippingFactor:用于消除异常值的削减因子
RowBegin:线段起点的行坐标
ColBegin:线段起点的列坐标
RowEnd:线段结束点的行坐标
ColEnd:线段结束点的列坐标
Nr:线参数:法线向量的行坐标
Nc:线参数:法线向量的列坐标
Dist:线参数:线与原点的距离
//拟合椭圆
fit_ellipse_contours_xld
Contours:输入xld轮廓
Algorithm:拟合采用的算法
MaxNumPoints:拟合轮廓采用的最多的点数
MaxClosureDist:被认为封闭的最大的距离
ClippingEndPoints:轮廓开始点和结束点之间,被忽略点的个数
VossTabSize:用于Voss方法的圆形段数
Iterations:加权拟合的最大迭代次数
ClippingFactor:用于消除异常值的削减因子
Row:椭圆中心点的行坐标
Column:椭圆中心点的列坐标
Phi:主轴的方向角度(弧度)
Radius1:长半轴的长度
Radius2:短半轴的长度
StartPhi:起始点的角度(弧度)
EndPhi:结束点的角度(弧度)
PointOrder:边界点的次序
//拟合圆
fit_circle_contours_xld
Contours:输入轮廓
Algorithm:圆拟合的算法
MaxNumPoints:用于计算的最大轮廓点数(-1表示所有点都参与)
MaxClosureDist:被视为“闭合”的轮廓的端点之间的最大距离
ClippingEndPoints:拟合时要忽略的轮廓开始和结束处的点数
Iterations:鲁棒加权拟合的最大迭代次数
ClippingFactor:消除异常值的削减因子(典型值:Huber为1.0,Tukey为2.0)
Row:圆的中心点行坐标
Column:圆的中心点列坐标
Radius:圆的半径
StartPhi:开始点的角度
EndPhi:结束点的角度
PointOrder:边界点的次序
更多halcon和六轴机械臂算法干货公众号: