标定
9点标定+旋转中心标定 相机固定在机械手外一个位置
1、机械手抓取被测物,编写程序识别特征点F(X,Y)
2、通过平移走9个点 ,记录像素坐标9,物理坐标9
3、通过vector_to_hom_mat2d()得到像素坐标与物理坐标的仿射矩阵
重点:角度变化呢?
试想想,当你用机械手夹住被测物,旋转30度(任意角度)的同时,X轴、Y轴都不移动的情况下,相机识别出来的图像特征点一定不会是(0,0)。
那是因为被测物的旋转中心和机械手夹着被测物时旋转的旋转中心不一致。只不过是呈现出来的旋转量一样,位置却不一样。
4、机械手选定一个定点P(x,y) 获取对应的像素特征 F1(X,Y),
机械手旋转30度,记物理点P(x,y),像素特征 F2(X,Y),
机械手旋转30度,记物理点P(x,y),像素特征 F3(X,Y),
。
。
。
。
至于多少个点 尽量多吧
5、获取到F1…的特征集合后,需要将其拟合成圆fit_circle_contour_xld()算法推荐选择’geotukey’,获得拟合圆后得到旋转中心C(X,Y)
6、通过运算得到旋转后的像素点,
(rx0,ry0)为旋转中心,(x,y)为被旋转的点,(x0,y0)旋转后的点
X0 = cos(a)(x-rx0) – sin(a)(y-ry0) + rx0
Y0 = cos(a)(y-ry0) + sin(a)(x-rx0) + ry0
7、将(X0,Y0)通过仿射变换得到最终的位置。