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