3D Gaussian Splatting
- Description:3D Gaussian Splatting 论文笔记 (读 arXiv 全文后所写) — 用各向异性 3D 高斯 + 可微光栅化实现实时辐射场渲染。2023 SIGGRAPH 最佳论文,3DGS-SLAM 的基石
- Paper:Kerbl, B., Kopanas, G., Leimkühler, T., & Drettakis, G. (2023). 3D Gaussian Splatting for Real-Time Radiance Field Rendering. ACM ToG (SIGGRAPH). arXiv:2308.04079
- K2E-B ID:[K2E-B-G6-3]
- Max3 PDF:
[K2E] SLAM/[K2E-B-G] Geometry & Rendering/[K2E-B-G6] Radiance Field Foundations/[K2E-B-G6-3][2023] 3D Gaussian Splatting for Real-Time Radiance Field Rendering.pdf(G6-2 留给 Instant-NGP) - Notion ID:(待创建)
- Created:2024-03-31
- Updated:2026-06-02
- License:转载欢迎 — 请署名 Yu Zhang 并链回 yuzhang.io 原文
Table of Contents
1. 3DGS 概述
3D Gaussian Splatting (3DGS) — Kerbl et al. 2023 (Inria / Max-Planck-Institut für Informatik),2023 SIGGRAPH 最佳论文。用一堆各向异性 3D 高斯 + 可微 tile 光栅化做辐射场渲染,1080p ≥ 30 fps 实时,质量达 SOTA,训练时间也有竞争力。
相比 NeRF (隐式 MLP + 体渲染,慢):3DGS 是显式表示 (一堆高斯点),光栅化而非逐光线积分 → 快得多。三个关键步骤:高斯表示 + 自适应密度控制 + 快速可见性感知渲染。
是 SplaTAM / Gaussian-SLAM / MonoGS 等 3DGS-SLAM 的基石。
2. 3D 高斯表示
场景 = 一组 3D 高斯,每个高斯:
$$ G(\mathbf{x}) = \exp\left( -\frac{1}{2} (\mathbf{x} - \boldsymbol{\mu})^T \Sigma^{-1} (\mathbf{x} - \boldsymbol{\mu}) \right) $$
每个高斯的属性:
- 位置 $\boldsymbol{\mu}$ (均值)
- 协方差 $\Sigma$ (形状/朝向)
- 不透明度 $\alpha$
- 球谐系数 (SH) — 视角相关颜色 (类似 NeRF 的方向相关,但用 SH 而非 MLP)
协方差参数化
直接优化 $\Sigma$ 会破坏半正定约束。3DGS 把 $\Sigma$ 分解成旋转 + 缩放:
$$ \Sigma = R S S^T R^T $$
- $S$ — 对角缩放矩阵 (各向异性,3 个 scale)
- $R$ — 旋转矩阵 (来自四元数 $\mathbf{q}$,见 四元数 EKF §2)
优化 $\mathbf{q}$ 和 $S$ 而非 $\Sigma$ → 永远合法 PSD。各向异性 (anisotropic) 让高斯能拉长贴合表面/边缘。
3. 投影到 2D
渲染时 3D 高斯投影到图像平面 (splatting):
$$ \Sigma' = J W \Sigma W^T J^T $$
- $W$ — 视图变换 (world → camera)
- $J$ — 投影变换的仿射近似的 Jacobian
$\Sigma'$ 左上 $2 \times 2$ 块 = 屏幕空间 2D 协方差 → 决定这个高斯在屏幕上的椭圆 footprint。
4. 可见性感知光栅化与混合
每个像素的颜色 = 覆盖它的高斯按深度从前到后 alpha 混合:
$$ C = \sum_{i} c_i \alpha_i \prod_{j=1}^{i-1} (1 - \alpha_j) $$
(与 NeRF 体渲染离散公式同源,见 NeRF §3) — $\alpha_i$ = 2D 高斯值 × 学习的不透明度。
Tile-based 光栅化
- 屏幕分 16×16 像素 tile
- 高斯按深度做全局 radix 排序 (一次,非逐像素)
- 每个 tile 并行处理 → 快,且反向传播可微 (训练用)
这是 3DGS 实时的关键 — 避开了 NeRF 的逐光线 MLP 查询。
5. 自适应密度控制
优化中交错调整高斯数量/密度:
- Clone (克隆) — 欠重建区域 (under-reconstruction),小高斯但梯度大 → 复制一个并沿梯度方向移开
- Split (分裂) — 过重建区域 (over-reconstruction),大高斯 → 替换成 2 个,scale 除以 $\phi = 1.6$
- Prune (剪枝) — 不透明度 $\alpha < \epsilon_\alpha$ 的高斯删掉
从 SfM 稀疏点云初始化高斯 (SfM 标定时附带产出的点,论文引 Schönberger & Frahm 2016),密度控制逐步加密到细节充分。
6. 优化与损失
从 SfM 点初始化 → splatting 渲染 → 与真值比 loss → 反传 (更新高斯参数 + 触发密度控制)。
损失 = L1 + D-SSIM:
$$ \mathcal{L} = (1 - \lambda) \mathcal{L}1 + \lambda \mathcal{L}{\text{D-SSIM}}, \quad \lambda = 0.2 $$
(像素级重建 + 结构相似性)
7. 贡献与影响
- 显式高斯 + 光栅化 取代 NeRF 隐式 MLP + 体渲染 → 实时
- 质量与 SOTA (Mip-NeRF360) 相当 (PSNR 27.21 vs 27.69,略低但视觉 on par),渲染快 ~2000× (134 fps vs Mip-NeRF360 0.06 fps)
- 缺点:存储大 (百万高斯)、无几何约束 (易飘)、依赖 SfM 初始化
- 衍生:2DGS/SuGaR (几何)、Scaffold-GS (结构化)、3DGS-SLAM (SplaTAM/Gaussian-SLAM/MonoGS,见 K2E-B-G2)
References
- Kerbl, B., Kopanas, G., Leimkühler, T., & Drettakis, G. (2023). 3D Gaussian Splatting for Real-Time Radiance Field Rendering. ACM ToG (SIGGRAPH). arXiv:2308.04079 — 论文 (本笔记读 arXiv 全文整理)
- 项目页: repo-sam.inria.fr/fungraph/3d-gaussian-splatting
- awesome-3DGS: github.com/MrNeRF/awesome-3D-gaussian-splatting
- alpha 混合与 NeRF 同源 (见 NeRF §3);四元数→旋转见 四元数 EKF;3DGS-SLAM 见 K2E-B-G2 Gaussian Splatting