我们在自动化贴装机标定过程中,需要计算吸头的旋转中心位置。我们一般使用的方法是使用模板匹配,做一个模板,吸头旋转一个角度寻找模板一次,通过多次旋转求取吸头的旋转中心。
使用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;}}