【基础理论】相机坐标变换

1,266 阅读4分钟

1 概述

在计算机视觉领域中,训练模型通常需要使用到大量的图像数据,而图像数据来源于真实的物理世界。要想将真实物理世界中的物体转换为可以输入到模型中图像数据,即图像获取阶段,需要使用相机完成这一转换。本文简要介绍相机是如何具体实现这一转换的。

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

世界坐标系是指3D世界中的绝对坐标系;相机坐标系是指以相机的光心为原点,x轴和y轴分别平行于相机成像平面的X、Y轴,z轴平行于相机的光轴的相对坐标系。世界坐标系到相机坐标系的转换需要进行坐标系的旋转和平移。

对于世界坐标系中的点(xw,yw,zw)(x_w,y_w,z_w),将其转换为相机坐标系中的点(xc,yc,zc)(x_c,y_c,z_c),如下所示。

(xcyczc)=R(xwywzw)+t(1)\begin{pmatrix} x_c \\ y_c \\ z_c \end{pmatrix} = \boldsymbol{R} \begin{pmatrix} x_w \\ y_w \\ z_w \end{pmatrix} + \boldsymbol{t} \tag{1}

其中R\boldsymbol{R}是正交旋转矩阵,代表相机在世界坐标系中的姿态角;t\boldsymbol{t}是相机光心在世界坐标系中的坐标。

相机的姿态角由俯仰角(pitch)、偏航角(yaw)和翻转角(roll)组成,分别代表相机围绕xx轴、yy轴和zz轴的旋转角度。而姿态角的转换可以通过正交旋转矩阵,即行列式为1的正交矩阵来实现。

这里解释一下为什么正交旋转矩阵能够实现姿态角的转换。

由于正交旋转矩阵是行列式为1的正交矩阵,这就说明矩阵的各列向量是Rn\boldsymbol{R}^n的一组标准正交基。对于单位向量I\boldsymbol{I},与正交矩阵相乘后,相当于将标准基向量转换为正交向量代表的一组标准基向量,而规定行列式为1则保证转换前后的基向量代表的坐标系手性相同。

如果相机围绕xx轴、yy轴和zz轴分别旋转ϕ\phiγ\gammaθ\theta,则正交旋转矩阵分别为

Rx=(1000cosϕsinϕ0sinϕcosϕ)R_x = \begin{pmatrix} 1 & 0 & 0 \\ 0 & \cos{\phi} & -\sin{\phi} \\ 0 & \sin{\phi} & \cos{\phi} \end{pmatrix}
Ry=(cosγ0sinγ010sinγ0cosγ)R_y = \begin{pmatrix} \cos{\gamma} & 0 & \sin{\gamma} \\ 0 & 1 & 0 \\ -\sin{\gamma} & 0 & \cos{\gamma} \end{pmatrix}
Rz=(cosθsinθ0sinθcosθ0001)R_z = \begin{pmatrix} \cos{\theta} & -\sin{\theta} & 0 \\ \sin{\theta} & \cos{\theta} & 0 \\ 0 & 0 & 1 \end{pmatrix}

相机围绕xx轴、yy轴和zz轴分别旋转ϕ\phiγ\gammaθ\theta,是指在右手坐标系下,分别站在xxyyzz轴的正方向朝负方向看去,相机分别在yzyzxzxzxyxy平面上沿逆时针方向旋转ϕ\phiγ\gammaθ\theta

因此,相机的姿态角旋转矩阵为

R=RxRyRz\boldsymbol{R} = R_x \cdot R_y \cdot R_z

对于公式(1),将其转换为齐次形式,则有

(xcyczc)=(Rt)(xwywzw1)(2)\begin{pmatrix} x_c \\ y_c \\ z_c \end{pmatrix} = \begin{pmatrix} \boldsymbol{R} & \boldsymbol{t} \end{pmatrix} \begin{pmatrix} x_w \\ y_w \\ z_w \\ 1 \end{pmatrix} \tag{2}

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

相机坐标系是指以相机的光心为原点,x轴和y轴分别平行于相机成像平面的X、Y轴,z轴平行于相机的光轴的3D坐标系;图像坐标系是相机成像平面上的2D坐标系,原点为成像平面的中心点,x轴和y轴分别平行于相机成像平面的X、Y轴。相机坐标系到图像坐标系的转换需要使用到小孔成像的原理。

对于相机坐标系中的点(xc,yc,zc)(x_c,y_c,z_c),将其转换为图像坐标系中的点(x,y)(x,y),如下所示。

x=fxczc,y=fyczc(3)x = f \cdot \frac{x_c}{z_c}, y = f \cdot \frac{y_c}{z_c} \tag{3}

其中ff代表相机的焦距,也即相机的快门到成像平面的距离。

对于公式(3),将其转换为齐次形式,则有

zc(xy1)=(f000f0001)(xcyczc)(4)z_c \begin{pmatrix} x \\ y \\ 1 \end{pmatrix} = \begin{pmatrix} f & 0 & 0 \\ 0 & f & 0 \\ 0 & 0 & 1 \end{pmatrix} \begin{pmatrix} x_c \\ y_c \\ z_c \end{pmatrix} \tag{4}

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

图像坐标系是相机成像平面上的2D坐标系,原点为成像平面的中心点,x轴和y轴分别平行于相机成像平面的X、Y轴;像素坐标系是最终的图像平面上的2D坐标系,以图像左上角为原点,用于标定图像上像素的坐标。

对于图像坐标系中的点(x,y)(x, y),将其转换为像素坐标系中的点(u,v)(u,v),如下所示。

u=xdx+u0,v=ydy+v0(5)u = \frac{x}{dx}+u_0,v = \frac{y}{dy}+v_0 \tag{5}

其中(u0,v0)(u_0, v_0)是图像坐标系原点在像素坐标系中的坐标,dxdxdydy分别代表一个像素在图像坐标系上xx轴和yy轴方向上的物理尺寸。

如果图像坐标系中的单位是毫米,则dxdxdydy的单位是毫米/像素

对于公式(5),将其转换为齐次形式,则有

(uv1)=(1dx0u001dyv0001)(xy1)(6)\begin{pmatrix} u \\ v \\ 1 \end{pmatrix} = \begin{pmatrix} \frac{1}{dx} & 0 & u_0 \\ 0 & \frac{1}{dy} & v_0 \\ 0 & 0 & 1 \end{pmatrix} \begin{pmatrix} x \\ y \\ 1 \end{pmatrix} \tag{6}

5 相机坐标变换公式

由公式(2)(4)(6)可导出如下公式

zc(uv1)=(1dx0u001dyv0001)(f000f0001)(Rt)(xwywzw1)z_c \begin{pmatrix} u \\ v \\ 1 \end{pmatrix} = \begin{pmatrix} \frac{1}{dx} & 0 & u_0 \\ 0 & \frac{1}{dy} & v_0 \\ 0 & 0 & 1 \end{pmatrix} \begin{pmatrix} f & 0 & 0 \\ 0 & f & 0 \\ 0 & 0 & 1 \end{pmatrix} \begin{pmatrix} \boldsymbol{R} & \boldsymbol{t} \end{pmatrix} \begin{pmatrix} x_w \\ y_w \\ z_w \\ 1 \end{pmatrix}

其中

(1dx0u001dyv0001)(f000f0001)=(fdx0u00fdyv0001)\begin{pmatrix} \frac{1}{dx} & 0 & u_0 \\ 0 & \frac{1}{dy} & v_0 \\ 0 & 0 & 1 \end{pmatrix} \begin{pmatrix} f & 0 & 0 \\ 0 & f & 0 \\ 0 & 0 & 1 \end{pmatrix} = \begin{pmatrix} \frac{f}{dx} & 0 & u_0 \\ 0 & \frac{f}{dy} & v_0 \\ 0 & 0 & 1 \end{pmatrix}

称为相机的内参矩阵K\boldsymbol{K},而

(Rt)\begin{pmatrix} \boldsymbol{R} & \boldsymbol{t} \end{pmatrix}

称为相机的外参矩阵。

因此相机的坐标变换矩阵P\boldsymbol{P}就是相机的内参矩阵与相机的外参矩阵之积,即

P=K(Rt)\boldsymbol{P} = \boldsymbol{K} \begin{pmatrix} \boldsymbol{R} & \boldsymbol{t} \end{pmatrix}

有时坐标变换矩阵PP也使用方阵形式,即

P~=(K00T1)(Rt0T1)\widetilde{\boldsymbol{P}} = \begin{pmatrix} \boldsymbol{K} & \boldsymbol{0} \\ \boldsymbol{0}^T & 1 \end{pmatrix} \begin{pmatrix} \boldsymbol{R} & \boldsymbol{t} \\ \boldsymbol{0}^T & 1 \end{pmatrix}

6 参考文章

[1] blog.csdn.net/Cl2212/arti…

[2] zhuanlan.zhihu.com/p/90295867

[3] zhuanlan.zhihu.com/p/143056551

[4] blog.csdn.net/cxwwyc/arti…