激光雷达坐标系到图像坐标系之间的转换关系
1.介绍
本文只介绍已知相机内参和外参的前提下,针对激光雷达坐标系到图像坐标系的转换关系做一个详细得解释(针对相机内参和外参的标定,可以私信)。
2.坐标系定义
2.1. 激光雷达坐标系(Lidar Frame,记为L系)
- 原点:雷达机械旋转轴的物理中心;
- X轴:正方向为雷达的正前方(机器人/车辆的前进方向);
- Y轴:正方向为雷达的左侧(右手坐标系:X向前,四指从X向Z弯曲,大拇指指向Y轴正方向);
- Z轴:正方向为垂直地面向上;
- 单位:米(m),雷达点云的坐标值均以米为单位。
2.2. 相机坐标系(Camera Frame,记为C系)
以针孔相机模型(OpenCV/KITTI通用)的标准定义为准:
- 原点:相机的光心(镜头的光学中心);
- X轴:正方向为相机的右侧(与图像的宽度方向一致);
- Y轴:正方向为相机的下方(与图像的高度方向一致);
- Z轴:正方向为相机的正前方(光轴方向,朝向拍摄的场景);
- 单位:米(m),与雷达坐标系单位统一。
2.3. 关键:两个坐标系的核心差异(必记!)
| 轴方向 | 雷达坐标系(L系) | 相机坐标系(C系) |
|---|---|---|
| 正前方 | X轴正方向 | Z轴正方向 |
| 左右 | Y轴正方向=左 | X轴正方向=右 |
| 上下 | Z轴正方向=上 | Y轴正方向=下 |
3.坐标系的转换
激光雷达坐标系到图像坐标系之间的转换需要两步来实现,其具体流程为:
3.1 激光雷达 → 相机坐标系(外参)
首先是将激光雷达坐标系到相机坐标系的转换,其计算公式为:
其中:
-
$P_{lidar} = (X_l, Y_l, Z_l)$:激光雷达坐标系下的3D点
-
$P_{camera} = (X_c, Y_c, Z_c)$:相机坐标系下的3D点
-
$R$:激光雷达到相机的旋转矩阵(3×3 )
-
$T$:激光雷达到相机的平移向量(3×1)
R和T统称为相机的外参矩阵,这是根据外参标定来的。
将上述公式展开为:
-
左侧 第一列(Xc,Yc,Zc) :激光雷达点在相机坐标系下的3D坐标。
-
右侧第一项:旋转矩阵对激光雷达坐标做线性变换。
-
右侧第二项:激光雷达坐标系的3D点
-
右侧第三项:平移向量(平移后的旋转坐标系原点)。
举例:
3.1.1. 旋转矩阵
旋转矩阵的每一列表示激光雷达坐标轴在相机坐标系中的方向。
假设激光雷达到相机的外参矩阵为:
将上述公式写成向量的形式为:
其中:
-
c1= [0.00557177, 0.069586, 0.997561]ᵀ(激光雷达X轴在相机坐标系中的方向) -
c2= [-0.999879, -0.0141175, 0.00656956]ᵀ(激光雷达Y轴在相机坐标系中的方向) -
c3= [0.01454, -0.997476, 0.0694988]ᵀ(激光雷达Z轴在相机坐标系中的方向)
其具体的映射关系为:
X轴 (前方) [0.0056, 0.0696, 0.9976] → 几乎完全对齐 +Z
Y轴 (左侧) [-0.9999, -0.0141, 0.0066] → 几乎完全对齐 -X
Z轴 (上方) [0.0145, -0.9975, 0.0695] → 几乎完全对齐 -Y
注意:
-
上述矩阵的对应关系为: X→Z, Y→X, Z→Y,这里的对应关系不是固定的,绝对值大的元素才决定对齐到哪个轴。
-
正负号:决定同向还是反向。
-
两个小的元素:说明与其他轴垂直。
3.1.2. 平移矩阵
平移向量T是激光雷达坐标系原点(激光雷达中心)指向相机坐标系原点(相机光心)的向量,表示在激光雷达坐标系下的表示。
假设激光雷达到相机的平移矩阵为:
T = [-0.0100033, -1.02251, -0.154385]
其中:
-
X=-0.0100033,表示相机在激光雷达后方1厘米处;
-
Y=-1.02251,表示相机在激光雷达的右侧1.02米处;
-
Z=-0.154385表示相机在激光雷达的下方15.5厘米处。
因为在激光雷达坐标系下X方向向前,负值表示向后,Y方向是向左,负值表示向右,Z方向是向上,负值表示向下。
到此为止,激光雷达到相机的坐标系就转换完成,可能会有人对此有疑问,相机的坐标系和图像的坐标系有什么区别呢?难道相机的坐标系不就是图像的坐标系吗?
这里我做个简单的解释:相机成像的数学本质就是3D到2D的投影。相机拍摄的2D图像丢失了深度信息(Z坐标),所以我们看到的只有2D坐标(x,y)。而相机的3D坐标到2D的投影,就是通过相机的内参来实现转换的。
3.2 相机坐标系→图像坐标系(内参)
相机坐标系到图像坐标系之间的转换,其计算公式为:
其中:
-
是激光雷达到相机的坐标点;
-
是相机的内参矩阵。
相机内参矩阵的表示格式为:
实际上齐次坐标投影公式为:
将上述公式展开为:
例:
相机内参矩阵为:
焦距:fx 对应矩阵中 (1,1) 位置的 1190.436,fy 对应矩阵中(2,2) 位置的 1190.765。它们代表了镜头的放大倍率。
主点坐标:cx 对应矩阵中 (1,3) 位置的 959.865,cy 对应矩阵中(2,3) 位置的 539.059。这是相机光轴(可以想象成从镜头中心垂直射出去的那条线)与图像传感器平面的交点。简单说,就是图像上最接近镜头中心点的那个像素的位置。
(1,2) 位置的 0:这代表相机的 x 轴和 y 轴是绝对垂直的,没有扭曲(skew)。现代工业相机这一点都做得很好。
(3,1)、(3,2) 位置的 0 和 (3,3) 位置的 1:这是为了数学计算方便,维持齐次坐标的形式。
假设激光雷达测得一个障碍物,经过旋转平移后,它在相机坐标系下的坐标是(Xc,Yc,Zc)=(1.5,0.8,10)米:
算归一化坐标:Xc/Zc=1.5/10=0.15,Yc/Zc=0.8/10=0.08
代入内参矩阵计算像素位置:
u=1190.44×0.15+959.87=178.57+959.87=1138.44
v=1190.77×0.08+539.06=95.26+539.06=634.32
这个公式告诉你,那个在相机前方 10 米、右边 1.5 米、高 0.8 米的障碍物,会出现在你照片的 (1138, 634) 这个像素附近。
这就是激光雷达坐标系到相机图像坐标系的整体流程。
更多推荐
所有评论(0)