图像转点云
Image to Point Cloud¶
输入输出数据¶
- 输入数据:
- 深度图 depth :
depth[u, v]
表示像素点 \((u,v)\) 对应的场景中的三维点的 \(z\) 值。 - 相机内参矩阵 intrinsics
-
相机外参矩阵/相机位姿 extrinsics(可选)
-
输出数据:
- 点云 point cloud:
(x, y, z)
表示点在相机或世界坐标系下的三维坐标。
相机内参矩阵¶
相机内参(intrinsics)是指相机的光学参数,包括焦距、像素大小、主点等。它们决定了图像在相机成像过程中的投影关系和畸变情况。相机内参通常通过标定获取,可以用于校正图像畸变和计算三维空间中的物体位置。
我们可以 利用相机内参矩阵和深度图将点由 屏幕坐标系 转换到 相机坐标系 。具体推导如下。
由上一节,我们知道 相机坐标系 中的点 \(P\) 投影到 胶片坐标系,再转换到 屏幕坐标系 共经历了两次矩阵变换:
\[
\begin{pmatrix}x' \\ y' \\ 1\end{pmatrix}=\frac{1}{z}\begin{pmatrix}f & 0 & 0 \\ 0 & f & 0 \\ 0 & 0 & 1\end{pmatrix}\begin{pmatrix}x \\ y \\ z\end{pmatrix} ,\quad \begin{pmatrix}u \\ v \\ 1\end{pmatrix}=\begin{pmatrix}\alpha & 0 & t_x \\ 0 & \beta & t_y\\ 0 & 0 & 1\end{pmatrix}\begin{pmatrix}x' \\ y' \\ 1\end{pmatrix}
\]
合并两次矩阵变换,可以得到相机坐标系与屏幕坐标系的转换关系:
\[
\begin{pmatrix}u \\ v \\ 1\end{pmatrix}=\begin{pmatrix}\alpha & 0 & t_x \\ 0 & \beta & t_y\\ 0 & 0 & 1\end{pmatrix}\frac{1}{z}\begin{pmatrix}f & 0 & 0 \\ 0 & f & 0 \\ 0 & 0 & 1\end{pmatrix}\begin{pmatrix}x \\ y \\ z\end{pmatrix}
\quad \Rightarrow \quad
\begin{pmatrix}u \\ v \\ 1\end{pmatrix}=\frac{1}{z}\begin{pmatrix}\alpha f& 0 & t_x \\ 0 & \beta f& t_y\\ 0 & 0 & 1\end{pmatrix}\begin{pmatrix}x \\ y \\ z\end{pmatrix}
\quad \Rightarrow \quad
z \begin{pmatrix}u \\ v \\ 1\end{pmatrix}=\mathbf{K}\begin{pmatrix}x \\ y \\ z\end{pmatrix}
\]
上式中的 \(\mathbf{K}\) 即为相机内参矩阵。因此, 在已知深度图时,可以通过下式得到相机坐标系下的点云 :
\[
\begin{pmatrix}x \\ y \\ z\end{pmatrix}=\mathbf{K^{-1}}\begin{pmatrix}u \\ v \\ 1\end{pmatrix}\cdot z
\quad\Rightarrow\quad
\textcolor{blue}{
\begin{pmatrix}x \\ y \\ z\end{pmatrix}=\mathbf{K^{-1}}\begin{pmatrix}u \\ v \\ 1\end{pmatrix}\cdot \mathbf{depth}_{u,v}}
\]
相机外参矩阵¶
相机外参(extrinsics)是指相机在世界坐标系下的位置和姿态,通常包括相机的平移向量和旋转矩阵。它们描述了相机拍摄图像时相对于物体的位置和方向关系。相机外参可以通过计算机视觉中的标定方法获取,或者通过传感器的数据融合进行估计。
我们可以 利用相机外参矩阵将点由 相机坐标系 转换到 世界坐标系 。相机的位姿由旋转矩阵 \(\mathbf{R}\) 和 平移向量 \(\mathbf{t}\) 来描述,有
\[
\mathbf{camera\ pose}=\begin{pmatrix}\mathbf{R}|\mathbf{t}\end{pmatrix}
\quad\Rightarrow\quad
\textcolor{blue}{
\begin{pmatrix}x_w \\ y_w \\ z_w\end{pmatrix}=\mathbf{R}\begin{pmatrix}x \\ y \\ z\end{pmatrix} + \mathbf{t}}
\]