跳转至

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。

研究背景与动机

  1. 领域现状:3D Gaussian Splatting (3DGS) 通过将场景表示为 3D 高斯体并光栅化到像素,实现了实时高质量新视角合成。但标准 3DGS 在每个像素只评估中心点处的高斯值,将像素视为孤立点而非面积区域。

  2. 现有痛点

  3. 严重的混叠(aliasing):当训练和测试分辨率不同,或多视角图像拍摄距离变化时,像素足迹变化导致采样带宽不足(违反 Nyquist),产生锯齿和模糊
  4. Mip-Splatting 的过平滑:Mip-Splatting 用 3D 高斯滤波做预滤波来抗混叠,但这会过度平滑高频细节,损失锐度
  5. 超采样(Super-Sampling)成本高:对每个像素多次采样再平均,质量不错但计算成本线性增加

  6. 核心矛盾:抗混叠需要考虑像素的面积效应(积分而非点采样),但精确计算 2D 高斯在矩形窗口上的积分是困难的(2D 高斯 CDF 没有解析形式)

  7. 本文要解决什么? 如何在不引入过度平滑的前提下,高效地将高斯信号在像素窗口上做积分来消除混叠?

  8. 切入角度:用 logistic 函数精确近似 1D 高斯 CDF,然后通过协方差矩阵对角化将 2D 积分分解为两个独立的 1D 积分

  9. 核心 idea 一句话:用条件 logistic 函数 \(S(x) = 1/(1+\exp(-1.6x - 0.07x^3))\) 解析近似高斯 CDF,实现像素窗口积分代替点采样,误差仅 \(10^{-4}\) 级别

方法详解

整体框架

在 3DGS 的渲染 pipeline 中,将每个像素的高斯值评估从"中心点采样"替换为"窗口积分"。技术上用条件 logistic 函数近似高斯 CDF,通过协方差矩阵特征分解实现 2D 窗口的可分离积分。

关键设计

  1. 条件 Logistic 函数近似高斯 CDF:
  2. 做什么:用 \(S(x) = \frac{1}{1+\exp(-1.6x - 0.07x^3)}\) 近似标准正态分布的 CDF
  3. 核心思路:窗口积分 = CDF 之差:\(\mathcal{I}_g(u) = S_\sigma(u+1/2) - S_\sigma(u-1/2)\),其中 \(S_\sigma(x) = S(x/\sigma)\)
  4. 设计动机:误差仅 \(10^{-4}\) 量级,可微分友好(适合反向传播),不像高斯滤波那样会过度平滑高频成分

  5. 2D 窗口积分的分解:

  6. 做什么:将 2D 高斯在矩形像素窗口上的积分转化为两个独立 1D 积分的乘积
  7. 核心思路:对 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)]\)
  8. 设计动机:直接做 2D 高斯积分无解析形式。旋转+分解引入微小误差但换来可解析计算

  9. 替换体渲染公式:

  10. 做什么:将 3DGS 的体渲染中的 \(g_i^{2D}(\mathbf{u})\) 替换为 \(\mathcal{I}_{g_i}^{2D}(\mathbf{u})\)
  11. 公式:\(\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\)
  12. 设计动机:完全兼容 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 的方法