相机标定系列(一)相机成像模型


文章目录

  • 相机标定系列(一)相机成像模型
  • 前言
  • 一、四大坐标系
  • 二、坐标系之间的变换
  • 1.世界坐标系到相机坐标系
  • 2.相机坐标系到图像坐标系(不考虑畸变)
  • 3.相机坐标系到图像坐标系(考虑畸变)
  • 4.从图像坐标系到像素坐标系
  • 总结



前言

张氏标定法是张正友博士在1999年提出的一种利用平面棋盘格进行相机标定的实用方法。该方法介于摄影标定法和自标定法之间,既克服了摄影标定法需要的高精度三维标定物的缺点,又解决了自标定法鲁棒性差的难题。标定过程仅需使用一个打印出来的棋盘格,并从不同方向拍摄几组图片即可,任何人都可以自己制作标定图案,不仅实用灵活方便,而且精度很高,鲁棒性好。因此很快被全世界广泛采用,极大的促进了三维计算机视觉从实验室走向真实世界的进程。

相机标定的原理:找到合适的相机内外参数和畸变系数来使相机对棋盘格的重投影误差最小
相机标定的最终目的是:建立相机成像几何模型并矫正相机畸变。


一、四大坐标系

世界坐标系(world coordinate system):用户自己定义的三维世界的坐标系,为了描述目标物在真实三位空间的位置而被引入,下图中的(Xw,Yw,Zw)。单位为m。

相机坐标系(camera coordinate system):以相机为坐标原点建立坐标系,从相机的角度描述物体的空间位置。下图中的(Xc,Yc,Zc)单位为m。

图像坐标系(image coordinate system):以图像中心为坐标原点,X,Y轴平行于图像两边,可以用(x, y)表示物体的坐标值。。 单位为m。

像素坐标系(pixel coordinate system):以图像左上角为原点,X,Y轴分别平行于图像两边的坐标系。用(u, v)表示其坐标值。。单位为个(像素数目)。

深度学习 相机标定 相机标定模型_齐次坐标

二、坐标系之间的变换

1.世界坐标系到相机坐标系

空间中三维刚体的运动由一个旋转矩阵R和平移矩阵t组成。R是33的,T是31,两个矩阵构成变换矩阵

深度学习 相机标定 相机标定模型_计算机视觉_02


世界坐标系到相机坐标系的关系如下图所示,(X,Y,Z,1)为世界坐标系,这里使用的齐次坐标,Lw为变换矩阵,引入齐次坐标的目的主要是合并矩阵运算中的乘法和加法,并且齐次坐标可以表示无穷远处的点

深度学习 相机标定 相机标定模型_计算机视觉_03

2.相机坐标系到图像坐标系(不考虑畸变)

根据相机的小孔成像原理:针孔面(相机坐标系)在图像平面(图像坐标系)和物点平面(棋盘平面)之间,所成图像为倒立实像。

深度学习 相机标定 相机标定模型_深度学习 相机标定_04


在数学上更方便描述,我们将相机坐标系和图像坐标系位置对调,变成图三所示的布置方式(没有实际的物理意义,只是方便计算):

深度学习 相机标定 相机标定模型_相机标定_05


根据三角形相似原理:

深度学习 相机标定 相机标定模型_相机标定_06


换成矩阵相乘的形似:

深度学习 相机标定 相机标定模型_计算机视觉_07

3.相机坐标系到图像坐标系(考虑畸变)

由透镜形状引起的畸变称之为径向畸变。在针孔模型中,一条直线投影到像素平面上还是一条直线。可是,在实际拍摄的照片中,摄像机的透镜往往使得真实环境中的一条直线在图片中变成了曲线。越靠近图像的边缘,这种现象越明显。由于实际加工制作的透镜往往是中心对称的,这使得不规则的畸变通常径向对称。它们主要分为两大类,桶形畸变和枕形畸变,桶形畸变是由于图像放大率随着离光轴的距离增加而减小,而枕形畸变却恰好相反。在这两种畸变中,穿过图像中心和光轴有交点的直线还能保持形状不变。

深度学习 相机标定 相机标定模型_世界坐标系_08


除了透镜的形状会引入径向畸变外,在相机的组装过程中由于不能使得透镜和成像面严格平行也会引入切向畸变。

深度学习 相机标定 相机标定模型_相机标定_09


对于径向畸变,无论是桶形畸变还是枕形畸变,由于它们都是随着离中心的距离增加而增加。我们可以用一个多项式函数来描述畸变前后的坐标变化:这类畸变可以用和距中心距离有关的二次及高次多项式函数进行纠正,即用K1,K2,K3三个参数来纠正:

深度学习 相机标定 相机标定模型_齐次坐标_10


另一方面,对于切向畸变,可以使用另外的两个参数 p1, p2 来进行纠正:

深度学习 相机标定 相机标定模型_相机标定_11


因此,联合上面两种畸变,对于相机坐标系中的一点 P(X, Y, Z),我们能够

通过五个畸变系数(K1,K2,K3,p1,p2)找到这个点在像素平面上的正确位置

4.从图像坐标系到像素坐标系

由于定义的像素坐标系原点与图像坐标系原点不重合,假设图像坐标系原点在像素坐标系下的坐标为(u0,v0),每个像素点在图像坐标系x轴、y轴方向的尺寸为:dx、dy,且像点在实际图像坐标系下的坐标为(x,y),于是可得到像点在像素坐标系下的坐标为:

深度学习 相机标定 相机标定模型_计算机视觉_12


换成矩阵相乘的形式:

深度学习 相机标定 相机标定模型_计算机视觉_13

总结

我们已经知道了从世界坐标系到相机坐标系,从相机坐标系到图像坐标系,从图像坐标系到像素坐标系,那么从世界坐标系到像素坐标系应该如下:

深度学习 相机标定 相机标定模型_深度学习 相机标定_14


其中相机内参矩阵M为:

深度学习 相机标定 相机标定模型_世界坐标系_15


化简得到:

深度学习 相机标定 相机标定模型_计算机视觉_16


最后用一幅图来总结从世界坐标系到像素坐标系(不考虑畸变)的转换关系:

深度学习 相机标定 相机标定模型_世界坐标系_17