- 1.KITTI数据集的特殊性:
- 底部在地面(y=0)
- 高度向下为负
- 2.坐标系转换:
-
# 雷达坐标系 -> 相机坐标系 x_cam = -y_lidar # 右 y_cam = -z_lidar # 下 z_cam = x_lidar # 前
3. 旋转角转换:
-
y_cam = -ry_lidar - np.pi/2 # 雷达绕z轴 -> 相机绕y轴
4. 3D框构建: -
corners = np.array([ [ l/2, w/2, 0], # 前右上(地面) [ l/2, -w/2, 0], # 前左上(地面) [-l/2, -w/2, 0], # 后左上(地面) [-l/2, w/2, 0], # 后右上(地面) [ l/2, w/2, -h], # 前右下 [ l/2, -w/2, -h], # 前左下 [-l/2, -w/2, -h], # 后左下 [-l/2, w/2, -h], # 后右下 ])
这样的实现确保了与KITTI数据集格式的兼容性,同时保持了正确的3D框显示。 -
标注效果如图所示
-
坐标系转换可能会懵,下面附一张各个传感器坐标系图来阐述关系:
图片来源mm3d欢迎来到 MMDetection3D 文档! — MMDetection3D 1.4.0 文档