
将激光雷达点云投影到图像平面涉及几何变换和相机模型的应用。以下是该过程的基本原理:
1. 坐标系转换
激光雷达生成的点云通常位于激光雷达的坐标系中,而图像则在相机坐标系中。为了将点云投影到图像上,首先需要将点云从激光雷达坐标系转换到相机坐标系。
假设激光雷达坐标系中的一个点表示为
X lidar , Y lidar , Z lidar \] \[X_{\\text{lidar}}, Y_{\\text{lidar}}, Z_{\\text{lidar}}\] \[Xlidar,Ylidar,Zlidar
,我们使用一个外参矩阵 (T)(通常是一个4x4的齐次变换矩阵),将其转换到相机坐标系:
X cam Y cam Z cam 1 \] = T ⋅ \[ X lidar Y lidar Z lidar 1 \] \\begin{bmatrix} X_{\\text{cam}} \\\\ Y_{\\text{cam}} \\\\ Z_{\\text{cam}} \\\\ 1 \\end{bmatrix} =T \\cdot \\begin{bmatrix} X_{\\text{lidar}} \\\\ Y_{\\text{lidar}} \\\\ Z_{\\text{lidar}} \\\\ 1 \\end{bmatrix} XcamYcamZcam1 =T⋅ XlidarYlidarZlidar1 其中,(T) 包含了旋转和平移的信息。 #### 2. 相机投影模型 在得到相机坐标系下的点云坐标 \[ X cam , Y cam , Z cam \] \[X_{\\text{cam}}, Y_{\\text{cam}}, Z_{\\text{cam}}\] \[Xcam,Ycam,Zcam\]后,下一步是将这些三维坐标投影到二维图像平面。相机投影通常使用[针孔相机模型](https://blog.csdn.net/walking_roll/article/details/119571511),其基本公式如下: \[ u v \] = 1 Z cam \[ f x 0 c x 0 f y c y \] ⋅ \[ X cam Y cam Z cam \] \\begin{bmatrix} u \\\\ v \\end{bmatrix} =\\frac{1}{Z_{\\text{cam}}} \\begin{bmatrix} f_x \& 0 \& c_x \\\\ 0 \& f_y \& c_y \\end{bmatrix} \\cdot \\begin{bmatrix} X_{\\text{cam}} \\\\ Y_{\\text{cam}} \\\\ Z_{\\text{cam}} \\end{bmatrix} \[uv\]=Zcam1\[fx00fycxcy\]⋅ XcamYcamZcam 其中: * (u) 和 (v) 是图像平面上的像素坐标。 * (f_x) 和 (f_y) 是相机的焦距(在像素单位下)。 * (c_x) 和 (c_y) 是图像中心的坐标(主点)。  #### 3. 应用畸变校正(如果有) 相机镜头的畸变会导致投影后的点出现偏差,因此通常会应用畸变校正。常见的畸变包括径向畸变和切向畸变,可以通过预先计算的畸变系数来校正。 #### 4. 点云到图像的映射 通过上述步骤,每个激光雷达点都可以在图像平面上找到一个对应的像素坐标 ((u, v))。这些像素坐标表示激光雷达点在图像中的投影位置。 在相机模型中, ( c_x ) 和 ( c_y ) 通常表示图像平面上的主点(principal point)的坐标。主点是相机光学中心在图像平面上的投影点,它通常接近图像的几何中心,但在实际相机中可能会有一些偏移。 #### 详细解释: * **主点 ( c_x, c_y )**:这是图像平面上光轴与平面的交点的坐标,也称为光学中心。它通常由相机的内参矩阵(Intrinsic Matrix)中的两个参数表示。 * **相机内参矩阵** :在相机标定过程中,我们可以得到一个 3x3 的内参矩阵,它的形式如下: K = ( f x 0 c x 0 f y c y 0 0 1 ) K = \\begin{pmatrix} f_x \& 0 \& c_x \\\\ 0 \& f_y \& c_y \\\\ 0 \& 0 \& 1 \\end{pmatrix} K= fx000fy0cxcy1 其中: * f_x, f_y 是相机在 x 和 y 方向的焦距,通常与相机的焦距和像素大小相关。 * c_x, c_y 是主点的坐标。