引言

这一节使用张正友标定法,讲解相机标定的算法原理,下一节将对手写相机标定代码进行介绍。

相机模型

在工业相机的成像系统中,有四种坐标系,分别是世界坐标系、相机坐标系、图像坐标系和像素坐标系。将三维空间点P在世界坐标系中的坐标记为(Xw,Yw,Zw) ,将相机的光心O所在的平面称为相机坐标系,点P在相机坐标系中的坐标为(Xc,Yc,Zc) 。相机坐标系的x轴和y轴平行于成像平面,z轴垂直于成像平面,其与成像平面的交点称为主点O',是成像平面的中心点,以主点为原点,得到三维空间点在在二维成像平面的坐标X',Y'。像素坐标系原点在成像平面的左上角,其单位是像素,对应的成像点坐标为(u,v) ,相机成像模型如下所示。

已知三维坐标点P在世界坐标系下的坐标为(Xw,Yw,Zw) ,对其进行经过旋转和位移的变换,可以得到相机坐标系下点P的坐标(Xc,Yc,Zc) ,用齐次变换矩阵 表示位姿的变换的过程cTw。

相机坐标系中的点在二维成像平面中的图像坐标系中的坐标可以通过三角形相似的原理得到,其中的相似关系如下所示。

进而得到相机坐标系中的点与图像坐标系中点的对应关系:

由于图像坐标系中的点为物理长度度量的坐标,而像素坐标系中点的度量单位像素,因此首先需要通过物理长度和像素之间的换算比例进行转换,其次图像坐标系的原点位于成像平面的中心,而像素坐标系的原点位于成像平面的左上角,因此在将图像坐标系的点换算为用像素表示后,还需要加上由于原点不同带来的偏移量(u0,v0) ,最后得到图像坐标系到像素坐标系之间的对应关系如下。

综合上面的中间变换过程,可以得到世界坐标系到像素坐标系直接的坐标变换关系。

其中dxdy为像元的宽度,和fxfy为等效焦距。

我们将世界坐标系到相机坐标系的坐标变换矩阵称为外参矩阵,将相机坐标系到像素坐标系之间的坐标变换矩阵称为内参矩阵。

同时为了更加准确得描述成像系统,还引入了畸变模型,即像素坐标系中的图像并非在理想的位置(u*,v*) ,需要在实际位置(u,v)的基础上补偿非线性畸变,即:

非线性畸变的表达式如下所示,公式中的k为径向畸变系数p为离心畸变系数。

张正友相机标定

在标定相机参数的方法中,张正友标定法被广泛使用。其通过旋转矩阵约束以及优化方法求得相机内外参数。将相机内参矩阵和外参矩阵相乘可以得到3*4的矩阵,由于在标定时世界坐标系原点在棋盘格中心,使得棋盘格上标定点的z轴分量都等于0,因此可以将标定点的维度由三维减小到两维,进而得到3*3的单应性矩阵,单应性矩阵表示世界坐标系到像素坐标系之间的坐标变换关系,使用齐次坐标的形式对这种变换关系进行表示。

通过化简可以得到:

H矩阵中有8个独立的变量,在每个标定点处可以2个约束方程,因此对于相机拍摄的一张图片而言,只要其中的标定点数目大于等于4时,就可以对图片对应的单应性矩阵进行求解。将单应性矩阵使用内参和外参乘积的形式进行表示,可以得到:

结合单应性矩阵公式,可以将向量r1和r2表示为下式,其中hi表示的是单应性矩阵中的第i列。

由于相机外参矩阵旋转部分为正交旋转矩阵,其中的列向量具有不同的列向量之间的乘积为0,单个列向量模长为1的特征,再结合单应性矩阵和外参矩阵之间的对应关系,可以得到如下公式。

将ZcK-tK-1定义为对称矩阵B,得到B矩阵为:

再将B带入约束方程中,可以得到任意两个旋转矩阵向量之间的点积结果:

这样我们得到了新的约束方程:

由于此时v可以通过前面每张图片对应的单应性矩阵得到,因此此时只有b为未知数。一张图片提供2个约束,6个未知数就需要有至少三张图片进行标定。

最终求得的内参为:

由于在以标定板中心点为世界坐标系原点时,标定的每张图片对应的外参矩阵都不同,因此只需要标定相机内参。在实际使用时,在由标定后相机获取的物体像素坐标系转换到相机坐标系过程中,由于物体在相机坐标系下z轴的位置未知,因此也并不能获得准确的坐标,只有通过与深度传感器测得的z轴深度配合,才可以获得物体在相机坐标系下的真实坐标。

May the force be with you!