AI赋能解剖学:知识图谱与医学影像智能分析实践指南
2026/5/4 18:19:10
PythonAPI/examples/tutorial_gbuffer.py
这是一个高级传感器数据采集示例,用于:
适用于计算机视觉研究、神经渲染、图像合成、感知算法训练等需要底层图形数据的场景。
如下,展示下FinalColor和GBuffer-B:
✅ 通过 GBuffer,你可以获取:
- 场景深度(SceneDepth)
- 表面法线(GBufferB/C)
- 材质属性(金属度、粗糙度等)
- 运动矢量(Velocity)
- 屏幕空间环境光遮蔽(SSAO)
# 固定使用第一个出生点(非随机)transform=world.get_map().get_spawn_points()[0]vehicle=world.spawn_actor(bp,transform)vehicle.set_autopilot(True)# 创建 1920x1080 高分辨率 RGB 摄像头camera_bp=blueprint_library.find('sensor.camera.rgb')camera_bp.set_attribute('image_size_x','1920')camera_bp.set_attribute('image_size_y','1080')camera=world.spawn_actor(camera_bp,carla.Transform(carla.Location(x=1.5,z=2.4)),attach_to=vehicle)# 必须先启用 GBuffercamera.enable_gbuffers(True)# 注册 Final Color 回调(常规图像)camera.listen(lambdaimage:image.save_to_disk('_out/FinalColor-%06d.png'%image.frame))# 注册所有 GBuffer 通道回调camera.listen_to_gbuffer(carla.GBufferTextureID.SceneColor,...)camera.listen_to_gbuffer(carla.GBufferTextureID.SceneDepth,...)...camera.listen_to_gbuffer(carla.GBufferTextureID.SSAO,...)| 通道 | 用途 |
|---|---|
SceneColor | 最终未应用后处理的颜色 |
SceneDepth | 场景深度(可用于 3D 重建) |
SceneStencil | 模板缓冲(物体 ID 掩码) |
GBufferA/B/C/D | 核心几何/材质数据(法线、粗糙度、金属度等) |
Velocity | 屏幕空间运动矢量(用于动态模糊) |
SSAO | 屏幕空间环境光遮蔽 |
CustomDepth/Stencil | 自定义深度/模板(可用于特定物体分割) |
GBufferE/F 在简单场景中可能为空,因它们通常用于高级材质(如透明、次表面散射)。
所有图像按帧号保存至_out/目录:
_out/ ├── FinalColor-000001.png # 最终渲染图 ├── GBuffer-SceneColor-000001.png ├── GBuffer-SceneDepth-000001.png ├── GBuffer-GBufferA-000001.png ... └── GBuffer-SSAO-000001.png✅ 每帧包含14+ 个图像文件,形成完整的渲染数据集。
actor_list跟踪所有生成的 Actorfinally块确保退出时销毁摄像头和车辆| 应用领域 | 如何利用 GBuffer |
|---|---|
| NeRF / 3D 重建 | SceneDepth+SceneColor提供深度-颜色对 |
| 语义分割 | SceneStencil或CustomStencil提供实例 ID |
| 去模糊/视频插帧 | Velocity提供运动信息 |
| 材质编辑 | GBufferB/C/D包含 PBR 材质参数 |
| 合成数据增强 | 修改 GBuffer 后重新着色,生成新视角 |
性能开销大
磁盘空间消耗快
_out/目录有足够空间部分通道可能为空
GBufferE/F在可能无数据该脚本是 CARLA高级图形数据采集的标杆示例,展示了: