针孔相机模型及其标定

针孔相机模型

 

1. 坐标系介绍

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

  

 

像素坐标系

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

 

 

图像坐标系

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

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

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

将其写成矩阵形式为:

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

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

$$\begin{bmatrix}u\\v\\1 \end{bmatrix}=\begin{bmatrix}\frac{1}{dx}&0&0\\0 &\frac{1}{dy}&0\\0&0&0\end{bmatrix}\begin{bmatrix}x\\y\\1\end{bmatrix}+\begin{bmatrix}u_{0}\\v_{0}\\1\end{bmatrix}=\begin{bmatrix}\frac{1}{dx}&0&u_{0}\\0&dy&v_{0}\\0&0&1\end{bmatrix}\begin{bmatrix}x\\y\\1\end{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}} $$

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

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

图像的畸变

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

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

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

 

 

 径向畸变公式为:

$$\begin{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}$

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

 

 

 

切向畸变公式为:

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

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

$$\begin{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}xy\end{cases}$$

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

 

 

世界坐标系

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

 

平移矩阵T为:

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

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

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

 

 

2. 相机的内参和外参

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

$$\begin{bmatrix}u\\v\\1\end{bmatrix}=\begin{bmatrix}\frac{1}{dx}&0&u_{0}\\0&\frac{1}{dy}&v_{0}\\0&0&1 \end{bmatrix}\begin{bmatrix}\frac{f}{z_{c}} &0&0&0 \\0 & \frac{f}{z_{c}}&0&0\\0&0&\frac{1}{z_{c}}&0 \end{bmatrix}\begin{bmatrix}R&T \\0&1 \end{bmatrix}\begin{bmatrix}x_{w} \\ y_{w} \\z_{w} \\ 1 \end{bmatrix}=\underbrace{\begin{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{\begin{bmatrix}R & T \\0 & 1 \end{bmatrix}}_{extrinsics}\begin{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

 

posted on 2020-03-12 12:45  Peyton_Li  阅读(738)  评论(2编辑  收藏  举报

导航