我们在自动化贴装机标定过程中,需要计算吸头的旋转中心位置。我们一般使用的方法是使用模板匹配,做一个模板,吸头旋转一个角度寻找模板一次,通过多次旋转求取吸头的旋转中心。
使用halcon实现
public bool FitCircle(double[] X, double[] Y, out double RcX, out double RcY, out double R)
{
try
{
HTuple hTuple = new HTuple();
HTuple hTuple2 = new HTuple();
int num = 0;
for (num = 0; num < X.Length; num++)
{
if ((X[num] > 0.0) & (Y[num] > 0.0))//获得寻找到的模板中心装入hTuple2与hTuple
{
hTuple2.TupleConcat(X[num]);
hTuple.TupleConcat(Y[num]);
}
}
HObject contour;
HOperatorSet.GenContourPolygonXld(out contour, hTuple, hTuple2);//使用模板中心生成多边形XLD轮廓
HTuple row, column,radius,StartPhi,EndPhi,pointOrder;
HOperatorSet.FitCircleContourXld(contour, "algebraic", -1, 0, 0, 3, 2, out row, out column, out radius, out StartPhi, out EndPhi, out pointOrder);//拟合圆形
//得出结果
RcY = row;
RcX = column;
R = radius;
contour.Dispose();
return true;
}
catch
{
RcY = -1.0;
RcX = -1.0;
R = -1.0;
return false;
}
}