平面上视觉定位要找几个点

视觉引导运控应用比较广泛了,有这么一个常见的场景,物料来了,和初始位置有偏差,怎么计算偏差的变换矩阵?为了计算矩阵,我们最少要找几个点?

学过仿射变换的小伙伴都知道,[x,y]'=[a11,a12,a13; a21,a22,a23]*[x0,y0,1]' 也就是说,仿射变换矩阵是一个2*3的矩阵,有六个参数,按照多元一次方程组的解法,我们至少要联立六个方程式,而且这六个方程式不可约,也就是说,要找三个点(每个点有两个数值,x,y),而且这三点不能共线,才可以解出这个仿射变换来。那么问题来了,为什么工业现场,很多机台只要找到两个点,就可以实现定位了呢?

这个问题一开始我也摸不着头脑,想啊想,可能两点连城一条直线,然后和坐标轴的夹角就可以求出来了,然后旋转角度就可以知道了,这样就可以少用一个点?(仿射变换阵=平移矩阵*旋转矩阵)

后来翻看opencv的一些博客,了解了问题成因:

https://blog.csdn.net/dongfang1984/article/details/52959308

这篇博客说的是 opencv中 estimateRigidTransform 函数,不过这个函数现在已经不用了,新的函数是:

estimateAffine2D()和estimateAffinePartial2D()

那么,究竟有啥区别呢?

full affine考虑了平移,旋转和缩放,而 partial affine是有约束条件的,不包括缩放的仿射变换;

这样以来,仿射变换的六个元素中,有两组元素的绝对值是相等的,那么,实际上也就只要知道四个元素的值就可以了,也就是说,两点就可以找到仿射变换矩阵,实现定位。

在机台上实际运行,三点定位和两点定位得到的仿射变换矩阵差异不大,运动轴所在X-Y平面和载物平台平行度良好的情况下,两点定位的精度也可以满足要求。

由此看来,观察,思考,抄作业(上网找答案),理论,实践,对于解决问题来说,都是比较重要的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值