用3D高斯泼溅(3DGS)重建自己的数据

几乎可以下结论:3D Gaussian Splatting(3DGS)技术的出现,宣告了NeRF时代的结束。犹如transformer当年对CNN的打击。
一个集高渲染质量、分钟级重建速度、实时渲染速度为一身的三维重建算法3DGS,毫无疑问开创了一个新的时代。本文不对3DGS的原理做太深入的解读,只做实验。

1. 准备自己的数据
我们规定一个路径(你自己任意命名),为方便为这里命名为folder_A,在folder_A下,你放入文件夹images,如下:

├── images
│   ├── 00001.png
│   ├── 00002.png
│   ├── 00003.png
│   ├── 00004.png
│   ├── ...
│   ├── 00057.png
│   ├── 00058.png
│   └── 00059.png

一个图像文件夹,每个视角各一张图片,命名方式如上。

2. 用COLMAP跑出稀疏点云,这一步为了给3DGS做初始化
打开我们的数据路径folder_A:

cd /path/to/folder_A
colmap automatic_reconstructor \
    --workspace_path . \
    --image_path ./images \
	--sparse 1 \
	--dense 0 \
	--camera_model SIMPLE_PINHOLE

这一步的关键在于,--camera_model一定要选用【SIMPLE_PINHOLE】,因为colmap会默认选用【SIMPLE_RADIAL】,而这个是3DGS不支持的模式。然后,记得加上【–dense 0】,因为COLMAP会自动开启dense点云重建,但3DGS只需要sparse即可,为了节约时间可以把dense关掉。

安装COLMAP可以参考《官方文档》,链接可戳。

3. 用3DGS跑数据:

git clone https://github.com/graphdeco-inria/gaussian-splatting --recursive
# after install requirements
# ...
# ...

cd gaussian-splatting
 python train.py -s /path/to/folder_A --model_path /path/to/folder_B/

folder_A是数据路径,folder_B是结果路径。大家可自命名。

本文由本人亲自整理,实验获得成功。如有疑问,请留言交流~

### 3DGS高斯点云处理、分析与可视化的概述 #### 处理 3DGS(三维高斯射)作为一种先进的视图合成方法,能够从二维图像及其对应的相机姿态生成高质量的三维表示[^2]。在实际应用中,处理阶段涉及多个步骤,包括但不限于数据采集、特征提取和模型训练。具体而言,3DGS依赖于结构化光流法(Structure from Motion, SfM)获取精确的初始化参数[^1]。如果采用随机初始化,则可能影响最终生成图像的质量。 为了克服这一局限性,研究者提出了诸如RAIN-GS这样的优化策略,使得即使从随机初始化的点云出发也能训练出高质量的3DGS模型。此外,在构建完整的3DGS工作流时,还需要考虑硬件加速的需求。例如,`gaussian-splatting-cuda`项目提供了基于CUDA的高效实现方案,支持大规模点云数据集的快速处理[^4]。 ```bash # 安装gaussian-splatting-cuda所需的依赖项 sudo apt-get install nvidia-cuda-toolkit git clone https://github.com/your-repo/gaussian-splatting-cuda.git cd gaussian-splatting-cuda && make ``` --- #### 分析 针对3DGS的数据分析主要集中在以下几个方面: 1. **精度评估**:通过比较不同初始化方式下的峰值信噪比(PSNR),可以量化模型性能的变化趋势。 2. **几何特性解析**:由于每个高斯分布不仅包含位置信息还携带尺度和方向属性,因此可以通过统计手段深入理解场景的空间布局特点。 3. **与其他技术对比**:相比于传统的点云表达形式,3DGS具备更高的分辨率及更细致的表现力;不过也存在一些不足之处,比如难以完全保留所有的几何细节。 值得注意的是,尽管可以直接导入至某些主流软件包(如CloudCompare)来进行初步观察,但由于丢失部分重要维度的信息(例如旋转矩阵等),所以得到的结果往往显得较为稀疏不够理想。 --- #### 可视化 对于3DGS成果的有效展示离不开专用渲染引擎的支持。当前市面上已有不少开源工具可供选用,其中包括由GauStudio团队开发的一整套综合型框架,它允许使用者便捷地执行各类实验并分享研究成果[^3]。借助此类平台,不仅可以轻松预览复杂的动态效果还能调整各项参数直至达到满意的效果为止。 以下是使用Python脚本调用PyVista库绘制简单点云实例: ```python import pyvista as pv def visualize_gaussian_splatting(points, colors=None): point_cloud = pv.PolyData(points) if colors is not None: point_cloud['colors'] = colors p = pv.Plotter() p.add_points(point_cloud, scalars='colors', render_points_as_spheres=True, point_size=5) p.show() if __name__ == "__main__": points = [[0, 0, 0], [1, 0, 0], [0, 1, 0]] # 示例坐标列表 colors = [(255, 0, 0), (0, 255, 0), (0, 0, 255)] # 对应的颜色值 visualize_gaussian_splatting(points, colors) ``` ---
评论 22
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

木盏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值