小孔成像模型

2019-06-03  本文已影响0人  biubiubiuoooooo

通过相机拍摄图像可以将3D世界投影到2D图像当中,因此,我们可以把相机模型看作是一个3D空间到2D空间的映射。下面我们介绍最简单的相机模型——小孔成像模型,也是针对普通数字相机最为广泛应用的一种相机模型。

图1. 小孔成像模型。3D点X在图像上的像为连接相机投影中心O和3D点的直线和成像平面Z=f的交点x。

假设相机的投影中心位于一个欧式坐标系的原点\mathbf{O},相机面向z轴正方向,并且成像平面(或者说焦平面)在当前坐标系下的表达为Z=f。那么,在小孔成像模型的作用下下,如图1所示,3D空间中的一个点\mathbf{X} = (X,Y,Z)^T会被投影为成像平面上的一个2D点,也即连接相机投影中心和3D点的直线与成像平面的交点。通过相似三角形,我们可以很容易的看出3D点(X,Y,Z)^T被投影成为成像平面上的(fX/Z,fY/Z,f)^T。暂时先不考虑最终的图像坐标,我们可以看出
\begin{pmatrix} X \\ Y \\ Z \end{pmatrix} \mapsto \begin{pmatrix} fX/Z \\ fY/Z \end{pmatrix} \label{pmapping} 将3D点从三维的欧式空间投影到了2D图像平面,也即二维的欧式空间中。

假如使用严格的齐次坐标进行表述,那么上述投影过程可以表示为以下矩阵相乘的形式,也即公式[1]:
\begin{aligned} \begin{pmatrix} X \\ Y \\ Z \\ 1 \end{pmatrix} \mapsto \begin{pmatrix} fX/Z \\ fY/Z \\ 1 \end{pmatrix} & = \begin{bmatrix} f & 0 & 0 & 0\\ 0 & f & 0 & 0 \\ 0 & 0 & 1 & 0 \end{bmatrix} \begin{pmatrix} X \\ Y \\ Z \\ 1 \end{pmatrix} \\ & = \begin{bmatrix} f & 0 & 0\\ 0 & f & 0\\ 0 & 0 & 1 \end{bmatrix} \begin{bmatrix} 1 & 0 & 0 & 0\\ 0 & 1 & 0 & 0 \\ 0 & 0 & 1 & 0 \end{bmatrix} \begin{pmatrix} X \\ Y \\ Z \\ 1 \end{pmatrix} \\ & = diag(f,f,1) [\mathbf{I}|\mathbf{0}]\mathbf{X} 。 \end{aligned}
其中\mathbf{P} = [\mathbf{I}|\mathbf{0}]通常被称为相机的投影矩阵。三维点的齐次坐标为(X,Y,Z,1)^T,二维点的齐次坐标为(fX/Z,fY/Z,1)^T,也等价于(fX,fY,Z)^T

图2. 成像平面坐标系。

在上述公式 [1]中假设成像平面的原点为相机的主点位置。然而,实际相机图片的原点往往是图像左上角的点。因此,我们定义主点在图像上的坐标为(p_x,p_y)^T,如图2所示,从而得到
\begin{pmatrix} X \\ Y \\ Z \end{pmatrix} \mapsto \begin{pmatrix} fX/Z+p_x \\ fY/Z+p_y \end{pmatrix} = \begin{pmatrix} u \\ v \end{pmatrix}。

将其表示为齐次坐标的形式,我们可以得到公式[2]
\begin{aligned} \begin{pmatrix} X \\ Y \\ Z \\ 1 \end{pmatrix} \mapsto \begin{pmatrix} fX+Zp_x \\ fY+Zp_y \\ Z \end{pmatrix} & = \begin{bmatrix} f & 0 & p_x & 0\\ 0 & f & p_y & 0 \\ 0 & 0 & 1 & 0 \end{bmatrix} \begin{pmatrix} X \\ Y \\ Z \\ 1 \end{pmatrix} \\ & = \begin{bmatrix} f & 0 & p_x\\ 0 & f & p_y\\ 0 & 0 & 1 \end{bmatrix} \begin{bmatrix} 1 & 0 & 0 & 0\\ 0 & 1 & 0 & 0 \\ 0 & 0 & 1 & 0 \end{bmatrix} \begin{pmatrix} X \\ Y \\ Z \\ 1 \end{pmatrix} = \begin{pmatrix} u \\ v \\ 1 \end{pmatrix} 。 \end{aligned}

定义内参矩阵
\mathbf{K} = \begin{bmatrix} f & 0 & p_x\\ 0 & f & p_y\\ 0 & 0 & 1 \end{bmatrix} ,
最终公式[2]可以表达为
\mathbf{x} = \mathbf{K}\mathbf{P}\mathbf{X} = \mathbf{K} [\mathbf{I}|\mathbf{0}]\mathbf{X}。

注意公式[2]其实共包含了两个阶段的坐标变换:

当我们拥有2D点的像素坐标\mathbf{x}以及相机的内参矩阵\mathbf{K}时,可以通过公式
\hat{\mathbf{x}} = \mathbf{K}^{-1}\mathbf{P}\mathbf{X} 得到这个点在归一化平面上的坐标。

上一篇 下一篇

猜你喜欢

热点阅读