Carla仿真系列:17_利用Carla仿真环境跑通3DGS——从采集360张图到高斯泼溅建模

3DGS是这两年最火的三维重建技术------拍一圈照片,就能重建出可实时渲染、可任意换视角的3D场景,想试试看效果,然后就有了这期 用 Carla 生成的数据,跑通 3DGS(3D Gaussian Splatting)建模

1 为什么用 Carla 做 3DGS

用真实数据 用 Carla 仿真数据
相机标定可能不准 相机内外参绝对精确
场景不可控、不可复现 场景、光照、视角全可控
数据规模受限 想采集多少帧都行

结论 :Carla 是练 3DGS 的完美数据源------不用出门,就能拿到"完美采集"的图像序列

2 整体流程

复制代码
采集360张环视图像 → COLMAP预处理(位姿+稀疏点云) → LiteGS训练 → 可视化ply

第一步:采集车辆图像数据

以自车为采集对象,围绕车的几何中心360度,每隔1度采集一张,共360张720P图像。

bash 复制代码
cd carla_sim/sim_workspace/slam/3dgs_data/
python surround_collect_gs_py2.py

这样保证每个角度都有观测,重建时不会出现"没见过的角度"。

第二步:COLMAP 预处理

3DGS 需要知道每张照片的相机位姿 和场景的稀疏点云------这就是 COLMAP 干的活(SfM 运动恢复结构)。

bash 复制代码
cd carla_sim/sim_workspace/slam/3dgs_data/
bash colmap_3dgs.sh

一个真实的工程取舍 :这里用 apt 直接安装的 COLMAP,预处理跑在 CPU 上,速度比较慢。如果要用 GPU 加速,需要自己下载源码编译 GPU 版本的 COLMAP。

demo 够用:CPU 慢一点能接受,先把流程跑通再说。

第三步:LiteGS 训练

LiteGS(摩尔线程开源的 3DGS 训练框架)训练。注意:这个环境需要自己搭建,不在 Carla 项目里,照着官方文档配就行。

bash 复制代码
python example_train.py --sh_degree 3 -s carla_colmap_data -i images -m ./output

参数说明:

参数 含义
--sh_degree 3 球谐系数阶数(3阶,颜色随视角变化更丰富)
-s carla_colmap_data COLMAP 预处理后的数据目录(含360张图+相机参数+3D点云bin)
-i images 图像文件夹名
-m ./output 训练输出的点云目录(ply格式)

第四步:效果可视化

把训练好的 ply 文件导入在线查看器(如 https://superspl.at/editor)即可实时浏览。

放大看能清晰看到一个个"尖刺"------那就是高斯球

3 基本原理

  • 用大量可学习的 3D 半透明高斯椭球来显式表达场景;
  • 渲染时把 3D 高斯投影到图像平面变成 2D 高斯斑点,按深度排序做 α 混合生成图片;
  • 通过可微光栅化反向优化所有高斯参数,实现照片级新视角合成,且可以实时渲染。

每个高斯球保存了什么

参数 含义
xyz 3D 空间中心坐标
scale 3个方向的尺度(log空间,控制椭球大小)
rot(四元数) 椭球的旋转
opacity 不透明度
f_dc + f_rest(SH球谐系数) 颜色,SH 可随观察角度改变颜色,实现照片级光影

一句话理解 3DGS:用几十万个"会发光的小椭球"拼出整个场景------比传统网格(Mesh)真实,比 NeRF 渲染快。

4 测试效果

下图这个角度是采集图像时相机的视角,这个视角渲染的效果就很好。

下图是放大后看到的高斯小球,类似很多毛刺。

反思:

整体效果还可以,但有几个明显问题,也是下一步改进方向:

  1. 有些角度效果不好------说明采集视角还不够充分
  2. 相机高度太低------视角偏平,看到的场景信息有限
  3. 只在一个平面上运动------纯水平环绕,缺少俯仰视角

改进方向 :让相机在采集时上下俯仰移动(不只是水平绕圈),这样能覆盖更多视角,重建质量会明显提升。

这个反思是 3DGS 的关键:重建质量的上限,在采集数据时就决定了。

本期视频

17_利用Carla场景跑通3DGS建模

5 往期回顾

如果本文对你有帮助,欢迎点赞、关注、收藏

遇到问题可以评论区留言交流,也欢迎转发给需要的朋友。

开源项目地址放在个人主页简介中,欢迎前往查看。

相关推荐
赵大仁2 小时前
极空间 NAS 没有命令行,我逆向了它的桌面客户端
python·ai编程·nas·mcp·极空间
空白3 小时前
Power BI +VBA 【数据分析】
python
科技苑9 小时前
Python简单网络爬虫教程
爬虫·python
Patrick在香港11 小时前
Claude Prompt 香港场景:公文里「今日」落在 6 个日历日上,「翌日」锚错了 5 天
python·自然语言处理·正则表达式·claude·数据清洗
YsyaaabB12 小时前
Python 数值分析
python
阿洛学长12 小时前
计算机二级 Python 基本操作题(15 分)真题笔记(0101 ~ 1903 全套)
python·pycharm
weixin1997010801613 小时前
[特殊字符]️《二手ERP对接电商平台的总体方案:统一数据模型 + 事件驱动 + 灰度上线6原则》(附Python源码)
大数据·python
滚雪球~13 小时前
量化交易 防止Windows电脑自动更新并重启
python·量化
L@ncor14 小时前
第二章可能出现的问题
人工智能·python