相机标定是获得目标工件精准坐标信息的基础。首先,必须进行相机内参标定,构建一个模型消除图像畸变;其次,需要对相机和机器人的映射关系进行手眼标定,构建一个模型将图像坐标系上的点映射到世界坐标系。主要分为背景知识、相机内外参模型推导、编程代码实现三个部分。
1 背景知识
在讨论相机模型标定之前,我们应当先了解几何里面关于2D、3D空间里面几种几何变换形式。主要包括欧式变换、相似变换、仿射变换和透视变换,相机标定的过程,就是一个透视变换矩阵求解的过程。
参考来源:北京邮电大学鲁鹏老师的课件
1.1 2D平面上的变换
1.1.1 欧式变换
所谓欧式变换,即只有平移加旋转的变换,例如在2D平面上有一个正方形,经过变换后正方形的尺寸没有发生改变,但中心点会发生改变,并且偏转了一定的角度。自由度为三个,即xy方向的平移和旋转的角度theta。

1.1.2 相似变换
所谓的相似变换,即在欧式变换的基础上,附加一个均匀伸缩变换。经过变换后,在相似变换的基础上对原有的尺寸进行了放缩。但保证线与线之间的角度、长度的比值和面积的比值不变。自由度为四个:即xy方向的平移和旋转的角度再加一个放缩系数。
1.1.3 仿射变换
所谓的仿射变换,即在相似变换的基础上再增加了两个自由度。由上图的相似变换矩阵可以得知,决定矩阵数值的值主要有s、θ、X0、Y0。我们可以看到s、θ两个参数决定了矩阵里面的四个数值,假设这四个参数完全由a、b、c、d四个独立的变量进行控制,即仿射变换一共有六个自由度。变换前后线与线之间的平行性、平行线段长度的比值和面积的比值不变。

1.1.3 透视变换
所谓的透视变换,即在仿射变换的基础上再次增加两个自由度,由仿射变换的矩阵我们可以看到,其第三行两个数值都为0,假设其不为0,分别为V1、V2。因此,透视变换一共有八个自由度,变换前后只有四共线的交比保持不变,即交比不变性。

1.2 3D空间上的变换
1.2.1 欧式变换
所谓欧式变换,即只有平移加旋转的变换。当其在三维空间里面时,旋转共有绕三个轴xyz的旋转,平移也是发生在三维空间。同时在此基础上附加一个放缩系数s,其一共有七个自由度,变换前后不变量:点变换到点、线变换到线;保持点的共线性、线的共面性;保持直线与直线、直线与平面、平面与平面的平行性不变;保持线的夹角不变。
三维空间旋转平移变换可参考:机器人学导论


本文详细介绍了相机标定的过程,包括背景知识、相机内外参模型推导和编程实现。首先阐述了2D和3D空间中的几何变换,如欧式变换、相似变换、仿射变换和透视变换。接着,探讨了相机内外参数,特别是相机小孔成像模型和畸变矫正。最后,展示了基于Halcon和OpenCV的相机标定代码实现,以及标定结果的影响因素。
最低0.47元/天 解锁文章
156





