Analytic-Splatting: Anti-Aliased 3D Gaussian Splatting via Analytic Integration¶
会议: ECCV 2024
arXiv: 2403.11056
代码: https://lzhnb.github.io/project-pages/analytic-splatting/ (有)
领域: 3D视觉 / 新视角合成
关键词: 3D Gaussian Splatting, Anti-Aliasing, Analytic Integration, Novel View Synthesis, Multi-Scale
一句话总结¶
通过使用条件 logistic 函数解析近似高斯信号在像素窗口上的积分,替代 3DGS 的像素中心点采样,实现无混叠的 3D 高斯泼溅,在多尺度渲染上超越 Mip-Splatting。
研究背景与动机¶
-
领域现状:3D Gaussian Splatting (3DGS) 通过将场景表示为 3D 高斯体并光栅化到像素,实现了实时高质量新视角合成。但标准 3DGS 在每个像素只评估中心点处的高斯值,将像素视为孤立点而非面积区域。
-
现有痛点:
- 严重的混叠(aliasing):当训练和测试分辨率不同,或多视角图像拍摄距离变化时,像素足迹变化导致采样带宽不足(违反 Nyquist),产生锯齿和模糊
- Mip-Splatting 的过平滑:Mip-Splatting 用 3D 高斯滤波做预滤波来抗混叠,但这会过度平滑高频细节,损失锐度
-
超采样(Super-Sampling)成本高:对每个像素多次采样再平均,质量不错但计算成本线性增加
-
核心矛盾:抗混叠需要考虑像素的面积效应(积分而非点采样),但精确计算 2D 高斯在矩形窗口上的积分是困难的(2D 高斯 CDF 没有解析形式)
-
本文要解决什么? 如何在不引入过度平滑的前提下,高效地将高斯信号在像素窗口上做积分来消除混叠?
-
切入角度:用 logistic 函数精确近似 1D 高斯 CDF,然后通过协方差矩阵对角化将 2D 积分分解为两个独立的 1D 积分
-
核心 idea 一句话:用条件 logistic 函数 \(S(x) = 1/(1+\exp(-1.6x - 0.07x^3))\) 解析近似高斯 CDF,实现像素窗口积分代替点采样,误差仅 \(10^{-4}\) 级别
方法详解¶
整体框架¶
在 3DGS 的渲染 pipeline 中,将每个像素的高斯值评估从"中心点采样"替换为"窗口积分"。技术上用条件 logistic 函数近似高斯 CDF,通过协方差矩阵特征分解实现 2D 窗口的可分离积分。
关键设计¶
- 条件 Logistic 函数近似高斯 CDF:
- 做什么:用 \(S(x) = \frac{1}{1+\exp(-1.6x - 0.07x^3)}\) 近似标准正态分布的 CDF
- 核心思路:窗口积分 = CDF 之差:\(\mathcal{I}_g(u) = S_\sigma(u+1/2) - S_\sigma(u-1/2)\),其中 \(S_\sigma(x) = S(x/\sigma)\)
-
设计动机:误差仅 \(10^{-4}\) 量级,可微分友好(适合反向传播),不像高斯滤波那样会过度平滑高频成分
-
2D 窗口积分的分解:
- 做什么:将 2D 高斯在矩形像素窗口上的积分转化为两个独立 1D 积分的乘积
- 核心思路:对 2D 协方差矩阵 \(\hat{\Sigma}\) 做特征分解得到特征值 \(\{\lambda_1, \lambda_2\}\) 和特征向量 \(\{v_1, v_2\}\),将积分域旋转到特征向量方向使协方差对角化,然后分解:\(\mathcal{I}_g^{2D}(\mathbf{u}) \approx 2\pi\sigma_1\sigma_2 [S_{\sigma_1}(\tilde{u}_x+1/2) - S_{\sigma_1}(\tilde{u}_x-1/2)][S_{\sigma_2}(\tilde{u}_y+1/2) - S_{\sigma_2}(\tilde{u}_y-1/2)]\)
-
设计动机:直接做 2D 高斯积分无解析形式。旋转+分解引入微小误差但换来可解析计算
-
替换体渲染公式:
- 做什么:将 3DGS 的体渲染中的 \(g_i^{2D}(\mathbf{u})\) 替换为 \(\mathcal{I}_{g_i}^{2D}(\mathbf{u})\)
- 公式:\(\mathbf{C}(\mathbf{u}) = \sum_{i} T_i \mathcal{I}_{g_i}^{2D}(\mathbf{u}|\hat{\mu}_i, \hat{\Sigma}_i) \alpha_i \mathbf{c}_i\)
- 设计动机:完全兼容 3DGS 的 CUDA 光栅化 pipeline,只需修改着色器
损失函数 / 训练策略¶
- 使用与 3DGS 相同的训练策略和损失函数(L1 + SSIM)
- Custom CUDA shader 实现解析着色模块
- 支持反向传播(附录中推导了梯度)
实验关键数据¶
主实验(Multi-Scale Blender Synthetic)¶
| 方法 | Full PSNR | 1/2 PSNR | 1/4 PSNR | 1/8 PSNR | Avg PSNR |
|---|---|---|---|---|---|
| 3DGS | 28.79 | 30.66 | 31.64 | 27.98 | 29.77 |
| 3DGS-SS | 32.05 | 33.78 | 33.92 | 31.12 | 32.71 |
| Mip-Splatting | 32.81 | 34.49 | 35.45 | 35.50 | 34.56 |
| Ours | 33.22 | 34.92 | 35.98 | 36.00 | 35.03 |
Multi-Scale Mip-NeRF 360¶
| 方法 | Avg PSNR | Avg SSIM | Avg LPIPS |
|---|---|---|---|
| 3DGS | 27.63 | 0.853 | 0.156 |
| Mip-Splatting | 29.12 | 0.883 | 0.134 |
| Ours | 29.51 | 0.887 | 0.123 |
消融实验¶
| 近似方案 | 特点 | 近似误差量级 |
|---|---|---|
| 3DGS (点采样) | 只采样中心点 | 最大 |
| Super-Sampling | 多点采样平均 | 中等 |
| Mip-Splatting (高斯滤波) | 预滤波 → 过平滑 | 中等 |
| Ours (Logistic CDF) | 解析积分 | ~10⁻⁴ |
关键发现¶
- 小 σ(高频细节)时优势最大:Mip-Splatting 的高斯滤波在小 σ 时过度平滑,本文方法保持高频
- 1/8 分辨率提升最显著:36.00 vs 35.50 PSNR,低分辨率下抗混叠更重要
- 超分辨率(2×)也有优势:26.90 vs 26.46 PSNR(vs Mip-Splatting)
- 帧率降低约 10%:额外的根号和指数运算带来轻微计算开销
亮点与洞察¶
- 数学优雅:用 logistic 函数近似高斯 CDF 的思路很巧妙——\(S(x) = 1/(1+\exp(-1.6x-0.07x^3))\) 这个特定参数化实现了 \(10^{-4}\) 级精度
- 比"预滤波"更好的反混叠策略:Mip-Splatting 在信号端做低通滤波(相当于模糊),本文在采样端做积分(不改变信号)——后者保留了更多高频信息
- 协方差对角化做可分离积分:将 2D 窗口旋转到协方差主轴方向,虽然矩形窗口变成了旋转后的矩形(不完全匹配像素),但误差可控
局限性 / 可改进方向¶
- 帧率降低 ~10%:更多的指数和根号运算。可能通过 CUDA 优化或 Tensor Core 利用来缓解
- 旋转像素窗口引入近似误差:对角化后的积分域不再与像素精确对齐,旋转角大时误差增加
- logistic 函数适用范围 σ ∈ [0.3, 6.6]:超出范围精度下降,但实际 3DGS 中很少超出
- 未与 2DGS/GS-Surfel 等新方法比较:3DGS 变体发展迅速,需要更多对比
相关工作与启发¶
- vs Mip-Splatting: 两者都解决 3DGS 的混叠问题。Mip-Splatting 在 3D 空间做高斯预滤波(改变信号),本文在 2D 做窗口积分(改变采样)。积分方式保留更多细节
- vs Mip-NeRF: Mip-NeRF 用锥形像素投射 + IPE 做抗混叠,理念类似但在 NeRF 框架下。本文将类似理念引入 3DGS
评分¶
- 新颖性: ⭐⭐⭐⭐ logistic CDF 近似 + 协方差对角化的技术方案新颖优雅
- 实验充分度: ⭐⭐⭐⭐ 多数据集、多尺度、超分辨率、详细误差分析
- 写作质量: ⭐⭐⭐⭐⭐ 数学推导清晰,插图形象,误差分析到位
- 价值: ⭐⭐⭐⭐ 对 3DGS 的核心渲染 pipeline 改进,直接可用于所有基于 3DGS 的方法