张正友标定的原理这里就不说了,直接上实验:
一、打开matlab的张正友标定程序,导入图片
二、改棋盘大小(这里我用的是20mm)
三、导出标定参数,命名为cp
四、matlab读入图片,选一个点(上面的红圈圈),查看它的像素坐标(最下面的红圈圈)
第四步的代码参考
像素位置[u,v]'=[1583,1128]'
五、带入matlab程序:
根据标定结果图(如下图),该点的实际坐标是[20;20;0](有些新接触的朋友可能不知道为啥是20,20,0,解释一下,角点的原点是黄圈圈在的位置,根据x轴和y轴的方向以及格子的实际大小算出来的),考虑到鼠标本身选点有误差,该方法是正确的
附一个压缩文件(里面有m文件,测试图片,算法说明,标定板的PDF)
链接:https://pan.baidu.com/s/1n41qm5Q4feDEKfv3xYTQ4A
提取码:1212
我的本科毕设设计有涉及到这方面,我最后用的是c++编程实现张正友标定的,matlab标定会存在一些坑,比如精度不够,又或者是标定的内参矩阵需要转置。感觉网上缺乏一些这种可以进行验证的例子,所以走过一些弯路。
简单整理了一下,也希望可以帮助到大家(*^_^*)。