📌 测试用例
PythonAPI/examples/lidar_to_camera.py
LiDAR 点云投影到 RGB 图像的同步可视化示例,用于:
- 同步采集 LiDAR 与摄像头数据
- 将 3D 点云精确投影到 2D 图像平面
- 用颜色编码点云强度并叠加显示
适用于 多传感器融合、感知算法调试、数据集生成。

🔑 主要模块解析
1. 同步数据采集机制
# 启用同步模式(关键!)
settings.synchronous_mode = True
settings.fixed_delta_seconds = 3.0
# 使用 Queue 存储传感器数据
image_queue = Queue()
lidar_queue = Queue()
camera.listen(lambda data: sensor_callback(data, image_queue))
lidar.listen(lambda data: sensor_callback(data, lidar_queue))
# 同步获取数据
world.tick()
image_data = image_queue.get()
lidar_data = lidar_queue.get()
assert image_data.frame == lidar_data.frame # 确保帧对齐
- 核心价值:避免异步采集导致的 运动模糊/错位问题
- 生产级实践:使用线程安全队列处理传感器回调
2. 相机内参矩阵构建
# 计算焦距(focal length)
focal = image_w / (2.0 * tan(fov * π / 360.0))
# 构建 3x3 相机内参矩阵 K
K = [[Fx, 0, image_w/2],
[ 0, Fy, image_h/2],
[ 0, 0, 1]]
- 假设:像素宽高比为 1(
Fx = Fy) - 用途:后续 3D→2D 投影的核心参数
3. LiDAR → 相机坐标变换链(核心数学)
完整的坐标变换流程:
| 步骤 | 变换 | 代码实现 |
|---|---|---|
| 1. LiDAR 局部坐标 | (x,y,z) | p_cloud[:, :3] |
| 2. → 世界坐标 | 通过 LiDAR 位姿 | np.dot(lidar_2_world, local_points) |
| 3. → 相机坐标 | 通过相机逆位姿 | np.dot(world_2_camera, world_points) |
| 4. CARLA → 标准 CV 坐标系 | (x,y,z) → (y, -z, x) | point_in_camera_coords = [sensor_points[1], -sensor_points[2], sensor_points[0]] |
| 5. → 2D 像素坐标 | 通过 K 矩阵 | np.dot(K, point_in_camera_coords) |
✅ 关键处理:
正确转换 CARLA 左手坐标系(X=前, Y=右, Z=上)到标准计算机视觉坐标系(X=右, Y=下, Z=前)
4. 点云可视化增强
-
强度着色:
intensity = 4 * intensity - 3 # 归一化调整 color_map = np.interp(intensity, VID_RANGE, VIRIDIS) # Viridis 色图- 使用 Viridis 色图(对色盲友好,感知均匀)
- 强度值映射为 RGB 颜色
-
点绘制方式:
if dot_extent <= 0: im_array[v, u] = color # 单像素点 else: im_array[v-ext:v+ext, u-ext:u+ext] = color # 方形区域(更易见)
5. 有效点过滤
points_in_canvas_mask = (
(x > 0) & (x < image_w) &
(y > 0) & (y < image_h) &
(z > 0) # 排除相机后方的点
)
- 三重过滤:
- X/Y 在图像范围内
- Z > 0(深度为正,排除后方点)
- 避免无效投影(如负深度导致的坐标翻转)
🎯 核心应用场景
| 应用 | 如何利用本脚本 |
|---|---|
| 2D-3D 对齐验证 | 检查投影点是否准确落在物体边缘 |
| 点云标注辅助 | 在 RGB 图上直接标注 3D 点对应区域 |
| 传感器标定验证 | 通过投影误差反推外参精度 |
| 合成数据生成 | 生成带精确 2D-3D 对应关系的数据集 |
⚠️ 技术点
-
完整的坐标系处理
- 显式处理 CARLA 特有的坐标系转换
- 避免常见投影错误(如左右镜像、上下颠倒)
-
物理一致的同步采集
- 严格帧对齐确保动态场景下的投影准确性
-
可配置的 LiDAR 参数
- 支持调整 FOV、通道数、噪声等(
--no-noise移除 dropoff)
- 支持调整 FOV、通道数、噪声等(
-
高效可视化
- 使用 NumPy 向量化操作(仅小范围用循环画大方块)
✅ 总结
该脚本是 CARLA 多传感器融合的教科书级示例,展示了:
- 如何 同步采集 LiDAR 与摄像头数据
- 如何 实现鲁棒的 3D→2D 投影管线
- 如何 可视化点云强度信息
它是开发 自动驾驶感知系统(如 3D 目标检测、SLAM)的基础工具,特别适合需要 精确 2D-3D 对应关系 的任务。
lidar_to_camera demo&spm=1001.2101.3001.5002&articleId=155980004&d=1&t=3&u=95e17dd01a2e4230a6193082c92e4553)
6990

被折叠的 条评论
为什么被折叠?



