针孔相机模型及其标定

针孔相机模型

1. 坐标系介绍

在视觉应用中,总共有四个坐标系需要了解,分别是:像素坐标系(p)、图像坐标系(i)、相机坐标系(c)、世界坐标系(w)。而相机就是将世界坐标系映射到了像素坐标系。

  

像素坐标系

图像在相机内部的储存形式类似像素坐标系,如下图所示,其中一个像素的坐标为$(u_{i}, v_{i})$,单位是(像素)

图像坐标系

将像素坐标系的中心平移到中心,就得到了图像坐标系,除了原点位置不同,单位也不同,图像坐标系的单位是(m或者mm),坐标系如下图所示:

设图像坐标系的原点为$O_{i}(u_{0}, v_{0})$,相机感光元件中每个像素点的尺寸为$dx*dy$,两坐标系之间的关系可表示为

$$egin{cases}u = frac{x}{dx} + u_{0}\v=frac{y}{dy}+v_{0}end{cases}$$

将其写成矩阵形式为:

$$egin{bmatrix}u \v end{bmatrix}=egin{bmatrix}frac{1}{dx}&0\0&frac{1}{dy}end{bmatrix}egin{bmatrix}x\yend{bmatrix}+egin{bmatrix}u_{0}\v_{0}end{bmatrix}$$

将偏移项纳入乘积项,转化为齐次坐标形式:

$$egin{bmatrix}u\v\1 end{bmatrix}=egin{bmatrix}frac{1}{dx}&0&0\0 &frac{1}{dy}&0\0&0&0end{bmatrix}egin{bmatrix}x\y\1end{bmatrix}+egin{bmatrix}u_{0}\v_{0}\1end{bmatrix}=egin{bmatrix}frac{1}{dx}&0&u_{0}\0&dy&v_{0}\0&0&1end{bmatrix}egin{bmatrix}x\y\1end{bmatrix}$$

相机坐标系

相机坐标系的z轴和图像坐标系的z轴重合,x轴和y轴平行且同方向,相机坐标系原点$O_{c}$和图像坐标系原点$O_{i}$连线的距离是焦距$f$(注意这里的$f$单位为m或mm),相机坐标系中的一点$B(x_{c},y_{c},z_{c})$成像到图像坐标系$P(x,y)$,过程如下::

根据三角形相似可得:

$$frac{f}{z_{c}}=frac{x}{x_{c}}=frac{y}{y_{c}}$$

即:

$$x=frac{fx_{c}}{z_{c}},y=frac{fy_{c}}{z_{c}} $$

相机坐标系转化为图像坐标系的齐次形式为:

$$egin{bmatrix}x\y\1end{bmatrix}=egin{bmatrix}frac{f}{z_{c}}&0&0&0\0&frac{f}{z_{c}}&0&0\0&0&frac{1}{z_{c}}&0end{bmatrix}egin{bmatrix}x_{c}\y_{c}\z_{c}\1end{bmatrix}$$

图像的畸变

这是相机坐标系到理想的图像坐标系的转化,因为我们默认各个坐标系的变换是线性的。但实际上由于相机镜头中的镜片因为光线的通过产生不规则的折射,总是存在镜头畸变的。畸变的引入使得成像模型中的几何变换关系变为非线性。

图像的畸变有很多,但通常主要考虑两种:径向畸变和切向畸变。

径向畸变:正中心位置的畸变最小,随着半径的增大,畸变增大。径向畸变可以分为枕形畸变和桶形畸变

 径向畸变公式为:

$$egin{cases}x_{dr}=x(1+k_{1}r^{2}+k_{2}r^{4}+k_{3}r^{6})\y_{dr}=y(1+k_{1}r^{2}+k_{2}r^{4}+k_{3}r^{6})end{cases}$$

其中$(x,y)$为理想坐标,$(x_{dr},y_{dr})$为畸变后的坐标,$r^{2}=x^{2}+y^{2}$

切向畸变:在透镜与成像平面不平行时就会产生,类似于透视变换。

 

切向畸变公式为:

 $$egin{cases}x_{dt}=x+2p_{1}xy+p_{2}(r^{2}+2x^{2})\y_{dt}=y+p_{1}(r^{2}+2y^{2})+2p_{2}xyend{cases}$$

将径向畸变和切向畸变效果叠加,可得:

$$egin{cases}x_{distorted}=x(1+k_{1}r^{2}+k_{2}r^{4}+k_{3}r^{6})+2p_{1}xy+p_{2}(r^{2}+2x^{2})\y_{distorted}=y(1+k_{1}r^{2}+k_{2}r^{4}+k_{3}r^{6})+p_{1}(r^{2}+2y^{2})+2p_{2}xyend{cases}$$

$(k_{1},k_{2},k_{3},p_{1},p_{2})$这五个为畸变参数,畸变参数的一般顺序是k1,k2,p1,p2,k3

世界坐标系

世界坐标系与相机坐标系坐标轴不一定平行或重合,它们之间可以通过刚体变换互相转换,也就是只改变物体的空间位置(平移)和朝向(旋转),而不改变物体的形状。用旋转矩阵$R$和平移向量$T$可以表示这种变换,如图所示:

平移矩阵T为:

$$T=egin{bmatrix}t_{x}\t_{y}\t_{z} end{bmatrix}$$

因此,世界坐标系转化为相机坐标系的变换为:

$$egin{bmatrix}x_{c}\y_{c}\z_{c} end{bmatrix}=egin{bmatrix}x_{w}\y_{w}\z_{w}end{bmatrix}+TRightarrowegin{bmatrix}x_{c}\y_{c}\z_{c}\1end{bmatrix}=egin{bmatrix}R & T \0 & 1 end{bmatrix}egin{bmatrix}x_{w}\y_{w}\z_{w}\1 end{bmatrix}$$

2. 相机的内参和外参

根据1中几个坐标系的转化,可以得到世界坐标系转化为像素坐标系:

$$egin{bmatrix}u\v\1end{bmatrix}=egin{bmatrix}frac{1}{dx}&0&u_{0}\0&frac{1}{dy}&v_{0}\0&0&1 end{bmatrix}egin{bmatrix}frac{f}{z_{c}} &0&0&0 \0 & frac{f}{z_{c}}&0&0\0&0&frac{1}{z_{c}}&0 end{bmatrix}egin{bmatrix}R&T \0&1 end{bmatrix}egin{bmatrix}x_{w} \ y_{w} \z_{w} \ 1 end{bmatrix}=underbrace{egin{bmatrix}frac{f_{x}}{z_{c}} & 0&frac{u_{0}}{z_{c}}&0 \0&frac{f_{y}}{z_{c}} & frac{v_{0}}{z_{c}}&0\0&0&frac{1}{z_{c}}&0 end{bmatrix}}_{intrinsics}underbrace{egin{bmatrix}R & T \0 & 1 end{bmatrix}}_{extrinsics}egin{bmatrix}x_{w}\y_{w} \z_{w} \1 end{bmatrix}$$

 注意这里的fx和fy单位是像素。公式中的内参不含畸变参数。

相机标定

相机标定的目的就是要得到相机内参(包含畸变参数)和外参。最重要的还是内参(包含畸变参数),因为外参跟摄像机和拍摄物体的相对位置有关,所以不同图像的外参都不一样。

有了相机内参(包含畸变参数)后,我们就可以对相机拍摄的图像进行畸变校正。

参考资料:

https://blog.csdn.net/qq_36342854/article/details/88933308

https://blog.csdn.net/baidu_38172402/article/details/81949447

https://blog.csdn.net/heiheiya/article/details/96151958

 

原文地址:https://www.cnblogs.com/Peyton-Li/p/12468119.html