将三维点云投影到摄像头画面

已知三维空间中某点的坐标,如何计算其在摄像头拍摄到的图像中的位置。

将三维点云投影到摄像头画面
小孔成像原理示意图,来自OpenCV

基于小孔成像原理,将三维点云投影至摄像头图像平面中可以通过以下公式实现:

$$P_{u,v} = KTP_{w}$$

其中$$P_{u,v}$$为图像坐标,$$P_{w}$$为三维世界坐标系中的坐标。

投影矩阵

$$K=\begin{bmatrix} f_x & 0 & c_x \\ 0 & f_y & c_y \\ 0 & 0 & 1 \\ \end{bmatrix}$$

也称为摄像头内参。

变换矩阵

$$T=\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}$$

将点云从世界坐标系转换到摄像头坐标系。

知晓其原理后,可以使用Python或者C++来实现。