news 2026/1/12 11:36:33

自动驾驶—CARLA仿真(11)bounding_boxes demo

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
自动驾驶—CARLA仿真(11)bounding_boxes demo

📌 测试用例

PythonAPI/examples/bounding_boxes.py

这是一个2D/3D 边界框(Bounding Box)生成与可视化系统,用于:

  1. 在仿真中生成大量 NPC 车辆
  2. 通过RGB 摄像头 + 实例分割摄像头获取场景数据
  3. 实时计算并绘制 2D/3D 边界框
  4. 将边界框、速度、灯光状态等结构化数据保存为 JSON

适用于自动驾驶感知算法训练、数据集生成、传感器融合验证

carla_bounding+boxes

3D box 有些异常,使用时请检查、增加后处理等;


🔑 主要模块解析

1.数据结构定义
  • EDGES:定义 3D 边界框的 12 条边连接顺序(8 个顶点 → 12 条边)
  • SEMANTIC_MAP:CARLA 语义标签 ID 到类别名和颜色的映射(如14: ('car', (0,0,142))

✅ 支持28 类语义标签,覆盖道路、车辆、行人、交通设施等。


2.坐标变换与投影
  • build_projection_matrix():构建相机内参矩阵(K 矩阵)
  • get_image_point():将 3D 世界坐标 → 相机坐标 → 2D 图像坐标
    • 处理 CARLA 特有的坐标系转换:(x,y,z) → (y,-z,x)
  • point_in_canvas():判断 2D 点是否在图像范围内

💡 这是3D→2D 投影的核心数学工具


3.实例分割解码
defdecode_instance_segmentation(img_rgba):semantic_labels=img_rgba[...,2]# R 通道存语义标签actor_ids=...# G+B 通道组合为 Actor ID
  • 利用sensor.camera.instance_segmentation输出的 RGBA 图像
  • R 通道:语义类别 ID
  • G+B 通道:Actor 唯一 ID(16 位)

✅ 实现像素级实例识别,为每个物体生成独立掩码。


4.2D 边界框生成
defbbox_2d_for_actor(actor,actor_ids,semantic_labels):mask=(actor_ids==actor.id)ys,xs=np.where(mask)return(xmin,ymin,xmax,ymax)
  • 基于实例分割掩码,计算轴对齐 2D 边界框(AABB)

5.3D 边界框生成
defbbox_3d_for_actor(actor,ego,camera_bp,camera):# 1. 获取 8 个 3D 顶点的世界坐标verts=actor.bounding_box.get_world_vertices(...)# 2. 投影到 2D 图像(处理相机后方的点)foredgeinEDGES:p1=get_image_point(verts[edge[0]],K,world_2_camera)...projection.append((p1x,p1y,p2x,p2y))# 3. 计算相对 ego 的 3D 信息return{'center':{x,y,z},# 相对位置'dimensions':{l,w,h},# 尺寸'rotation_yaw':...,# 相对偏航角'projection':[...]# 12 条边的 2D 投影}

✅ 输出完整的 3D 检测所需参数,支持后续 3D 目标检测训练。


6.可视化系统
  • visualize_2d_bboxes():在 RGB 图像上绘制矩形框 + 类别标签
  • visualize_3d_bboxes():绘制 3D 边界框的 12 条边 + 标签

🎮 通过2/3实时切换 2D/3D 可视化模式。


7.结构化数据导出

每帧保存 JSON 文件,包含:

{"frame_id":123,"objects":[{"id":456,"class":"car","velocity":{"x":2.1,"y":-0.3,...},"bbox_3d":{"center":{...},"dimensions":{...},"rotation_yaw":1.2},"bbox_2d":{"xmin":100,"ymin":200,...},"light_state":{"brake":true,"left_blinker":false,...}}]}

💾 按R启动录制,生成_out/目录下的 PNG + JSON 对。


8.仿真环境配置
  • 同步模式:确保传感器数据与时序严格对齐
  • 双摄像头
    • sensor.camera.rgb:获取原始图像
    • sensor.camera.instance_segmentation:获取实例 ID 图
  • 100 辆 NPC:创建密集交通场景
  • 距离过滤:仅处理 50 米内的车辆(可配置)

🎯 核心应用场景

应用如何使用本脚本输出
2D 目标检测训练使用bbox_2d+ RGB 图像
3D 目标检测训练使用bbox_3d参数(中心、尺寸、朝向)
多目标跟踪(MOT)利用actor.id实现跨帧关联
行为预测结合velocitylight_state(转向灯、刹车灯)
合成数据集生成带精确标注的 PNG+JSON 对

⚠️ 技术点

  1. 3D 边界框正确投影

    • 处理相机后方的顶点(使用is_behind_camera=True的投影矩阵)
    • 避免 3D 框在图像边缘出现断裂
  2. 相对坐标系

    • 所有 3D 信息(位置、速度、朝向)均相对于 ego 车辆
    • 符合自动驾驶感知系统的输入要求
  3. 灯光状态编码

    • 解析VehicleLightState为结构化字典
    • 提供意图线索(如左转灯亮 → 可能左转)

✅ 总结

该脚本是 CARLA感知数据生成的工业级范例,展示了:

  1. 如何融合RGB + 实例分割获取像素级物体 ID
  2. 如何从仿真中提取精确的 2D/3D 边界框
  3. 如何导出结构化、可直接用于训练的标注数据

它是构建自动驾驶感知 pipeline的关键工具,特别适合生成带 3D 标注的合成数据集

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2025/12/24 2:26:18

24小时从0到1:React+Web3.js极速开发DApp MVP的完整避坑指南

引言:当区块链开发进入"快餐时代"在2025年的区块链开发生态中,一个显著趋势正在显现:DApp开发周期从数月压缩至数天。随着Solana生态单日新增500智能合约、以太坊Layer2的Gas费降至0.01美元以下,开发者面临的新挑战已不…

作者头像 李华
网站建设 2025/12/24 2:26:15

Part 09|我为什么选择从「业务边界」开始拆系统

当我真正进入系统设计阶段时,有一个问题很快摆在了我面前:这套系统,第一刀该从哪里下?是先定技术架构, 还是先画模块图, 又或者直接从某个功能最复杂的地方开始拆? 我最后选择的,并不…

作者头像 李华
网站建设 2026/1/12 11:07:27

PyTorch模型转换指南:将Seed-Coder-8B-Base用于自定义训练

PyTorch模型转换指南:将Seed-Coder-8B-Base用于自定义训练 在现代软件工程中,开发者面对的不仅是功能实现的压力,还有日益复杂的编码规范、团队协作和系统维护成本。智能编程助手不再只是“锦上添花”的工具,而是逐渐成为提升生产…

作者头像 李华
网站建设 2026/1/5 11:31:10

10、应用程序国际化与本地化全攻略

应用程序国际化与本地化全攻略 在全球化的今天,将应用程序部署到国际市场时,提供本地化版本是必不可少的。这不仅涉及到不同语言的翻译,还包括时间、日期、货币值的表示差异,以及文字读写方向等复杂的书写语言问题。 1. 国际化与本地化的概念 国际化(i18n)和本地化(l…

作者头像 李华
网站建设 2026/1/11 5:34:11

11、Qt 插件开发全解析

Qt 插件开发全解析 1. Qt 插件基础 Qt 提供了丰富的编程接口,能与多种技术交互。借助插件,我们不仅可以为 Qt 增添新特性,还能让自己的应用程序更具扩展性。 在深入开发之前,我们得先了解插件的工作原理。对 Qt 应用而言,插件就是一个类的实例,其可用方法由接口类决定…

作者头像 李华
网站建设 2025/12/24 4:09:43

java计算机毕业设计生物样本采集系统 基于SpringBoot的临床生物标本信息管理系统的设计与实现 面向医院检验科的生物样本库在线管理平台的设计与实现

计算机毕业设计生物样本采集系统g774o9 (配套有源码 程序 mysql数据库 论文) 本套源码可以在文本联xi,先看具体系统功能演示视频领取,可分享源码参考。近年来,精准医疗与多中心科研合作快速升温,医院、实验室每天产生的…

作者头像 李华