九点标定

本文适用于初学者。

首先对概念要清晰:九点标定是点的仿射变换,只是图像行列、和坐标XY的仿射关系,也就是矩阵关系。从只有XY2个坐标轴来看,只有二个方向,所以只能适用于2D。下面具体流程:

第一步:制作9个点,相机采图的时候能全部拍到即可。一般以会3X3的行列相等去制作。

1.在图像上找到9个圆的中心坐标。(二值化提取区域后排序获得区域行列坐标/使用模板匹配后排序获得行列坐标)

2.会用到的一些算子:

rgb1_to_gray (Image, GrayImage) RGB图转灰度图

mirror_image (GrayImage, ImageMirror, 'row')  图像镜像,就是把9个点的序号按照自己习惯的方式在图像上显示。

illuminate (ImageMirror1, ImageIlluminate, 101, 101, 0.5)   图像亮度(灰度)不均匀时,使用这个算子平均一下图像灰度值。

scale_image (ImageIlluminate, ImageScaled, 42.5, -4080)  缩放图像,使黑白更分明

binary_threshold (ImageScaled, Region, 'max_separability', 'dark', UsedThreshold)  二值化提取黑或提取白

创建模板的相关算子

第二步:保持9个圆点不动,使用机械手的作业工具对准9个圆的圆心位置,并保存好机械手坐标。然后把9个点的坐标按照圆的序号在生成一个一维数组变量。(一定要对好序号,就是第一步中排序后的序号和数组元素一一对应)

第三步:使用图像行列的圆心和机械手的一维数组变量,生成一个矩阵关系。

vector_to_hom_mat2d (Column, Row, X, Y, HomMat2D)   HomMat2D就是我们要的这个矩阵。

write_tuple (HomMat2D, 'D:/1012.tup')   保存矩阵使用

read_tuple ('D:/1012.tup', HomMat2D1)    读取矩阵使用

第四步:有矩阵了,就直接使用矩阵即可。(识别)使用相机去识别一个或多个新的物体,并得到行列中心,如何使用了镜像mirror_image,这里也必须使用镜像关系,就是图像要保持一致性。

affine_trans_point_2d (HomMat2D, Column1, Row1, Rx, Ry)    矩阵转换,把CR坐标转换为RxRy

第五步:很多人会认为第四步完成了,有一部分情况是没有问题。识别的物体的机械手位置不在抓取9个点的位置时,就不适用了,会偏的一塌糊涂。

Rxnew:=Rx+(当前X坐标-抓9点时X坐标)             

*Rynew:=Ry+(当前Y坐标-抓9点时Y坐标)

这个公式适应所有,有很多人会分开和9点同位置和不同位置,完全没必要这么做,记好一个公式即可。

第六步:3个重点注意事项:

1.切记镜像mirror_image。前后一定要保持图片一致。

2.行列坐标和XY坐标,前后要保持一致。

3.圆的序号,行列序号一定要和定位XY序号保持一致。

 

 

 

 

  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值