物点与像点间的坐标变换

61 阅读3分钟

首先直观感受:

  1. 我们当前所处的世界是三维的空间
  2. 图像是三维世界的场景在相机成像平面的投影

然后定量建立如下坐标系:

  • 世界坐标系(三维): xW,yW,zWx_W, y_W, z_W; 单位是毫米
  • 相机坐标系(三维): xC,yC,zCx_C, y_C, z_C, 原点与相机光学中心重合, z 轴与光轴重合; 单位是毫米
  • 图像坐标系(二维): x,yx,y, 原点为相机光轴与成像平面的交点,是图像的中心点; 单位是毫米
  • 像素坐标系(二维): u,vu,v, 原点在左上角, 单位为像素

世界坐标系到相机坐标系的转换

世界坐标系 通过 Rigid Transform (刚体变换: 旋转和平移) 得到 相机坐标系

[xCyCzC]3×1=R3×3[xWyWzW]3×1+T3×1\begin{bmatrix} x_C \\ y_C \\ z_C \end{bmatrix}_{3\times 1} = R_{3\times 3} \begin{bmatrix} x_W \\ y_W \\ z_W \end{bmatrix}_{3\times 1} + T_{3\times 1}

[xCyCzC]3×1=[R3×3T3×1]3×4[xWyWzW1]4×1\begin{bmatrix} x_C \\ y_C \\ z_C \end{bmatrix}_{3\times 1} = \begin{bmatrix} R_{3\times 3} | T_{3\times 1} \end{bmatrix}_{3\times 4} \begin{bmatrix} x_W \\ y_W \\ z_W \\ 1 \end{bmatrix}_{4\times 1}

[xCyCzC1]=[R11R12R13TxR21R22R23TyR31R32R33Tz0001][xWyWzW1]\begin{bmatrix} x_C \\ y_C \\ z_C \\ 1 \end{bmatrix} = \begin{bmatrix} R_{11} & R_{12} & R_{13} & T_x \\ R_{21} & R_{22} & R_{23} & T_y \\ R_{31} & R_{32} & R_{33} & T_z \\ 0 & 0 & 0 & 1 \end{bmatrix} \begin{bmatrix} x_W \\ y_W \\ z_W \\ 1 \end{bmatrix}

[xCyCzC1]=[R3×3T3×101×31][xWyWzW1]\begin{bmatrix} x_C \\ y_C \\ z_C \\ 1 \end{bmatrix} = \begin{bmatrix} R_{3\times 3} & T_{3\times 1} \\ 0_{1\times 3} & 1 \end{bmatrix} \begin{bmatrix} x_W \\ y_W \\ z_W \\ 1 \end{bmatrix}

其中 RR 为三维旋转矩阵, TT 为 三维平移向量

Camera Calibration 中所说的外参,也即此处的 RRTT

此转换所描述的即为相机在三维空间的运动

相机坐标系到图像坐标系的转换

相机坐标系通过 Perspective Transform (成像模型中的相似三角形原理) 得到图像坐标系

{x=fxCzCy=fyCzC\left\{\begin{aligned} x &= \frac{f\cdot x_C}{z_C} \\ y &= \frac{f\cdot y_C}{z_C} \end{aligned}\right.

zC[xy1]=[f0000f000010][xCyCzC1]z_C \begin{bmatrix} x \\ y \\ 1 \end{bmatrix} = \begin{bmatrix} f & 0 & 0 & 0 \\ 0 & f & 0 & 0 \\ 0 & 0 & 1 & 0 \end{bmatrix} \begin{bmatrix} x_C \\ y_C \\ z_C \\ 1 \end{bmatrix}

ff 为相机焦距

值得注意的是,当前成像系统往往是透镜成像而非小孔成像,透镜的形状很难完全规则,因而成像效果可能存在不同程度的畸变

图像坐标系到像素坐标系的转换

图像坐标系通过Affine Transform (缩放和平移) 得到像素坐标系

{u=1dxx+u0v=1dyy+v0\left\{\begin{aligned} u &= \frac{1}{\text{d}x}x+ u_0 \\ v &= \frac{1}{\text{d}y} y+v_0 \end{aligned}\right.

[uv1]=[1dx0u001dyv0001][xy1]\begin{bmatrix} u \\ v \\ 1 \end{bmatrix} = \begin{bmatrix} \frac{1}{\mathrm{d}x} & 0 & u_0 \\ 0 & \frac{1}{\mathrm{d}y} & v_0 \\ 0 & 0 & 1 \end{bmatrix} \begin{bmatrix} x \\ y \\ 1 \end{bmatrix}

其中 u0,v0u_0,v_0 表示 图像中心像素坐标,dx,dy\text{d}x,\text{d}y 表示水平和垂直方向每个像素分别对应多少毫米

总结:世界坐标系到像素坐标系

zC[uv1]=[1dx0u001dyv0001][f0000f000010][R11R12R13TxR21R22R23TyR31R32R33Tz0001][xWyWzW1]z_C \begin{bmatrix} u \\ v \\ 1 \end{bmatrix} = \begin{bmatrix} \frac{1}{\mathrm{d}x} & 0 & u_0 \\ 0 & \frac{1}{\mathrm{d}y} & v_0 \\ 0 & 0 & 1 \end{bmatrix} \begin{bmatrix} f & 0 & 0 & 0 \\ 0 & f & 0 & 0 \\ 0 & 0 & 1 & 0 \end{bmatrix} \begin{bmatrix} R_{11} & R_{12} & R_{13} & \mathbf{T}_x \\ R_{21} & R_{22} & R_{23} & \mathbf{T}_y \\ R_{31} & R_{32} & R_{33} & \mathbf{T}_z \\ 0 & 0 & 0 & 1 \end{bmatrix} \begin{bmatrix} x_W \\ y_W \\ z_W \\ 1 \end{bmatrix}

zC[uv1]=[fdx0u000fdyv000010][R11R12R13TxR21R22R23TyR31R32R33Tz0001][xWyWzW1]z_C \begin{bmatrix} u \\ v \\ 1 \end{bmatrix} = \begin{bmatrix} \frac{f}{\mathrm{d}x} & 0 & u_0 & 0 \\ 0 & \frac{f}{\mathrm{d}y} & v_0 & 0 \\ 0 & 0 & 1 & 0 \end{bmatrix} \begin{bmatrix} R_{11} & R_{12} & R_{13} & \mathbf{T}_x \\ R_{21} & R_{22} & R_{23} & \mathbf{T}_y \\ R_{31} & R_{32} & R_{33} & \mathbf{T}_z \\ 0 & 0 & 0 & 1 \end{bmatrix} \begin{bmatrix} x_W \\ y_W \\ z_W \\ 1 \end{bmatrix}

zC[uv1]=[R11fdx+R31u0R12fdx+R32u0R13fdx+R33u0Txfdx+Tzu0R21fdy+R31v0R22fdy+R32v0R23fdy+R33v0Tyfdy+Tzv0R31R32R33Tz][xWyWzW1]z_C \begin{bmatrix} u \\ v \\ 1 \end{bmatrix} = \begin{bmatrix}\frac{R_{11} f}{dx} + R_{31} u_{0} & \frac{R_{12} f}{dx} + R_{32} u_{0} & \frac{R_{13} f}{dx} + R_{33} u_{0} & \frac{Tx f}{dx} + Tz u_{0}\\\frac{R_{21} f}{dy} + R_{31} v_{0} & \frac{R_{22} f}{dy} + R_{32} v_{0} & \frac{R_{23} f}{dy} + R_{33} v_{0} & \frac{Ty f}{dy} + Tz v_{0}\\R_{31} & R_{32} & R_{33} & Tz\end{bmatrix} \begin{bmatrix} x_W \\ y_W \\ z_W \\ 1 \end{bmatrix}

zC[uv1]=M3×4[xWyWzW1]=[M11M12M13M14M21M22M23M24M31M32M33M34][xWyWzW1]z_C \begin{bmatrix} u \\ v \\ 1 \end{bmatrix} = M_{3\times 4} \begin{bmatrix} x_W \\ y_W \\ z_W \\ 1 \end{bmatrix} = \begin{bmatrix} M_{11} & M_{12} & M_{13} & M_{14} \\ M_{21} & M_{22} & M_{23} & M_{24} \\ M_{31} & M_{32} & M_{33} & M_{34} \end{bmatrix} \begin{bmatrix} x_W \\ y_W \\ z_W \\ 1 \end{bmatrix}

当 世界坐标 和 像素坐标 都已确定,可以求解 M 矩阵