3D Gaussian Splatting 简要笔记

本文介绍了3DGS渲染方法,它使用球谐函数存储与中心物体相关的特定点,通过压缩变换和高斯分布扩展,实现非传统光线追踪。通过SfM获取点云作为输入,通过并行化和视锥裁剪提高渲染效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

介绍

相较于传统nerf,3DGS存储“特定点”(这些点与中心物体密切相关)的球谐函数而不是用mlp存储空间中每个点颜色和透明度。渲染时,不是采用从像素点引出射线的方式而是采用压缩变换的方式,把整个空间压缩到以成像平面为低面的长方体中。

3DGS存储“特定点”的球谐函数,并用一个高斯分布的椭球拓展这些点。这里的高斯分布其实和概率论中的高斯分布没有太大关系,也没有涉及到概率的计算。高斯分布只是为了用概率密度代表“特定点”对其他点的影响程度。

渲染过程

渲染时,首先对所有空间点进行压缩变换,相机坐标:

x_1=\frac{t_1}{t_2}

x_2=\frac{t_2}{t_3}

x_3=\sqrt{t_1^2+t_2^2+t_3^2}

然后把空间内所有的高斯分布投影到成像平面上(现在变成了二维的高斯分布),对于每一个像素点(x_1,x_2),按照公式

C=\sum_{i}[c_ip_i\alpha_i\prod_{j=1}^{i-1}(1-p_i\alpha_i)]

p_i=exp(-\frac{1}{2}(x-\mu )^T\Sigma^{-1}(x-\mu ))

算出像素点x=(x_1,x_2)的颜色,其中N是覆盖像素点(x_1,x_2)的高斯分布数量,c_i是第i个高斯分布所代表的颜色(由球谐函数和方向求得),p_i是第i个高斯分布在(x,y)点的贡献度,\alpha_i是不透明度,\mu是高斯分布中心点。(在渲染前先将覆盖像素点的高斯球由近到远排序)

如何获得“特定点”?

利用SfM获得点云,将点云中每一个点就是“特定点”,将他们扩展成一个高斯椭球,并初始化这些“特定点”的位置\mu、协方差\Sigma、颜色c(用球谐函数存储)、不透明度\alpha

如何提升渲染效率?

将要渲染的图片划分为16×16个方格,每一个线程负责渲染一个格子,这样渲染就可以并行进行,提高效率。每个格子在渲染时只用考虑视锥内的高斯球,而忽略其他的高斯球。

### 实现 3D Gaussian Splatting 的准备工作 为了在 Ubuntu 上成功实现 3D Gaussian Splatting (3DGS),需要确保操作系统环境已经准备好并安装必要的依赖项。对于 Ubuntu 22.04 版本,建议按照以下指南操作。 #### 安装基础软件包 首先更新系统的软件源列表,并安装一些基本工具和库: ```bash sudo apt-get update && sudo apt-get upgrade -y sudo apt-get install build-essential cmake git wget unzip pkg-config libopencv-dev python3-pip -y ``` #### 设置 Python 和 PyTorch 环境 由于 3D Gaussian Splatting 需要使用到 PyTorch 进行模型训练与推理,因此需先确认 CUDA 版本再选择合适的 PyTorch 版本来安装[^1]。可以通过命令 `nvcc --version` 来查看当前 GPU 所支持的 CUDA 版本号。接着通过 pip 工具来安装对应版本的 PyTorch 及其扩展组件 torchvision: ```bash pip3 install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu117 ``` 这里假设使用的 CUDA 是 11.7 版本;如果不是,则应调整 URL 中 cu 后面的部分以匹配实际的 CUDA 版本。 #### 获取项目代码 从 GitHub 下载官方提供的 3D Gaussian Splatting 源码仓库: ```bash git clone https://github.com/graphdeco-inria/gaussian-splatting.git cd gaussian-splatting ``` #### 编译 C++ 组件 进入克隆下来的目录后,编译所需的 C++ 插件模块: ```bash mkdir build && cd build cmake .. make -j$(nproc) ``` 这一步骤会生成执行文件和其他必需的支持文件。 #### 准备数据集 如果打算测试自采集的数据集,在此之前还需要做额外的工作来处理这些原始图像序列或者点云数据,使其能够被算法所接受。具体方法可以参见相关文档说明[^3]。 #### 测试运行 最后,尝试启动示例程序验证整个流程是否正常工作: ```bash python3 main.py --config configs/example.yaml ``` 以上就是在 Ubuntu 平台上部署 3D Gaussian Splatting 技术的大致过程概述。需要注意的是,不同硬件配置可能会遇到不同的兼容性和性能优化问题,所以在实践中可能还需进一步调试参数设置。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值