2D Gaussian Splatting for Geometrically Accurate Radiance Fields

基本信息

项目 内容
论文标题 2D Gaussian Splatting for Geometrically Accurate Radiance Fields
作者 Binbin Huang, Zehao Yu, Anpei Chen, Andreas Geiger, Shenghua Gao
第一单位 ShanghaiTech University, China
时间 2024
发表会议/期刊 SIGGRAPH Conference Papers '24

方法概览

特点 描述
输入 多视角RGB图像及其对应的相机位姿(由COLMAP估计的稀疏点云初始化)
输出 可实时渲染的2D高斯场景表示、高质量新视角合成图像、噪声低且几何准确的表面网格(Mesh)
所属领域 3D场景表示与渲染、多视角几何重建

1. 摘要精简

3D高斯泼溅(3DGS)在新视角合成和渲染速度上表现出色,但其三维体积表示与物体表面的“薄层”本质相冲突,导致几何重建不准确。本文提出2D高斯泼溅(2DGS),将3D高斯“压扁”为一系列2D有向高斯圆盘来建模场景。2D高斯本质上建模表面,提供了多视角一致的几何表示。为实现精确的薄表面重建和稳定优化,本文引入了利用射线-面片相交透视准确2D泼溅光栅化过程,并融合了深度畸变法向一致性正则化项。该方法能够重建出无噪声、细节丰富的几何,同时保持了有竞争力的外观质量、快速的训练速度和实时渲染能力。

2. 引言与动机

  • 现有方法不足
    1. 3D高斯泼溅(3DGS):其体积式的高斯 blob 与表面的薄层特性冲突,导致几何重建不准确、多视角不一致(如图2所示,不同视角下评估高斯值的相交平面不同)。
    2. 传统Surfel(表面元)方法:虽然能有效表示复杂几何,但通常需要真实几何(GT)、深度传感器数据或在已知光照的受限场景下运行。
    3. 基于神经隐式表面的方法(如NeuS):尽管重建质量高,但训练和优化非常耗时(例如Neuralangelo重建一个场景需128 GPU小时)。
  • 核心出发点:结合3DGS的高效、高质量渲染和Surfel的精确几何表示优势,提出一种仅需多视角RGB图像和光度监督,即可同时优化外观与精确几何的表示方法——2D高斯泼溅。

3. 创新点与相关工作对比

核心创新点

  1. 2D高斯场景表示:用“扁平”的2D有向高斯圆盘代替3D高斯,其法向由切空间自然定义,能够更本质地贴合物体表面,实现视角一致的几何。
  2. 透视准确的2D光栅化:提出基于显式射线-面片相交的可微分渲染方法,替代3DGS中仅在高斯中心准确的仿射投影近似,实现了透视正确的泼溅。
  3. 针对几何重建的正则化:引入深度畸变损失法向一致性损失,以抑制优化中的噪声,促使2D高斯紧密贴合表面,从而得到干净、准确的网格重建。

相关工作对比

方法类型 代表工作 指出问题
NeRF系列 NeRF, Mip-NeRF, Instant NGP 渲染速度慢(非实时),训练耗时;隐式表示提取表面需额外步骤。
3D重建 (隐式表面) NeuS, VolSDF, Neuralangelo 重建质量高但训练极慢(数十小时),对初始化和正则化敏感。
可微分点/面渲染 NPBG, DSS, 3DGS 3DGS几何噪声大、多视角不一致;DSS等方法需要GT法向或已知光照。
并发改进工作 SuGaR, NeuSG, 各向异性3DGS SuGaR用3D高斯近似2D,过程复杂;NeuSG联合优化高斯与SDF网络,仍非直接表面表示。
方法类型 场景表示 渲染速度 优化灵活性 几何重建 核心问题
NeRF 系列 隐式 复杂 渲染耗时久,几何提取流程繁琐
3DGS 显式 实时 体素化基元导致几何不准确
Surfel 方法 显式 较快 较好 需真实几何 / 深度标注
SDF 类方法 隐式 训练耗时极长,对初始化敏感

4. 网络/系统架构

本文方法是一个非神经网络的、基于梯度下降的优化框架,构建于3DGS代码库之上。其核心Pipeline如下:

  1. 初始化:从COLMAP生成的稀疏点云创建初始的2D高斯基元(设置初始中心、切向向量、缩放、不透明度和颜色)。
  2. 可微分渲染(前向)
    • 对于每个像素射线,使用射线-面片相交计算与每个相关2D高斯的交点 (u,v)(u, v) 和深度 zz
    • 根据交点计算高斯值 G(u)\mathcal{G}(\mathbf{u}),并结合退化处理得到最终权重 G^(x)\hat{\mathcal{G}}(\mathbf{x})
    • 通过体渲染alpha混合(公式12)合成像素颜色 c(x)\mathbf{c}(\mathbf{x})、深度和法向,结合 alpha blending 生成视图、深度图和法向图。
  3. 优化(反向):计算光度重建损失深度畸变损失法向一致性损失,反向传播更新2D高斯的参数(位置、旋转、缩放、不透明度、球谐系数)。
  4. 自适应密度控制:继承自3DGS的策略,定期根据位置梯度克隆或分裂高斯,并根据不透明度移除高斯。
  5. 网格提取(后处理):训练完成后,从多个视角渲染深度图,使用截断符号距离函数(TSDF)融合得到最终的三角形网格。

5. 3D高斯的定义与属性

本文主要使用2D高斯,但对作为基础的3DGS中的3D高斯进行了回顾
一个3D高斯基元由其在世界空间中的中心位置 pk\mathbf{p}_k 和3D协方差矩阵 Σ\Sigma 定义:

\mathcal{G}(\mathbf{p})=xp(- rac{1}{2}(\mathbf{p}-\mathbf{p}_{k})^{ op} \Sigma^{-1}(\mathbf{p}-\mathbf{p}_{k}))

协方差矩阵 Σ\Sigma 通过缩放矩阵 S\mathsf{S} 和旋转矩阵 R\mathbf{R} 参数化:Σ=RSSopRop\Sigma = \mathbf{R}\mathsf{S}\mathsf{S}^{ op}\mathbf{R}^{ op}。此外,每个高斯拥有不透明度 lpha 和用球谐函数(SH)编码的视角相关外观颜色 ck\mathbf{c}_k

本文的2D高斯定义
一个2D高斯是一个嵌入3D空间的椭圆形圆盘,由以下参数定义:

  • 中心点pk\mathbf{p}_k
  • 局部切空间:由两个正交的切向量 tu\mathbf{t}_utv\mathbf{t}_v 张成,其叉积定义了法向 tw=tuimestv\mathbf{t}_w = \mathbf{t}_u imes \mathbf{t}_v,然后构成旋转矩阵R=[tu,tv,tw]R=[t_u,t_v,t_w]
  • 缩放S=(su,sv)\mathbf{S} = (s_u, s_v) 控制椭圆在两个切方向上的方差。
  • 这些参数可以组合成一个齐次变换矩阵 H\mathbf{H}(公式5)来描述该2D平面的几何,用于将局部 uv 坐标系的点映射到世界坐标系。在局部 (u,v)(u,v) 坐标下,其高斯值计算为:$$\mathcal{G}(\mathbf{u})=xp\left(- rac{u^{2}+v^{2}}{2}
    ight)$$
  • 每个2D高斯同样拥有不透明度 lpha ∈[0,1]。
  • 视角相关颜色:采用球谐函数(SH)编码,实现视角依赖的颜色建模,记为 c\mathbf{c}

6. 可微分栅格化渲染的详细实现(Splatting)

2DGS 的可微分渲染核心是 透视准确的射线-面片相交(Ray-Splat Intersection)基于权重的 Alpha 混合。整个过程完全可微,支持梯度从像素颜色反向传播到 2D 高斯的所有参数。以下是具体步骤与公式:

1. 建立2D高斯的局部坐标系

每个2D高斯定义了一个3D空间中的椭圆平面。其几何由齐次变换矩阵 H\mathbf{H} 描述:

\mathbf{H}=egin{bmatrix}s_{u}\mathbf{t}_{u} & s_{v}\mathbf{t}_{v} & 0 & \mathbf{p}_{k}\ 0 & 0 & 0 & 1nd{bmatrix}=egin{bmatrix}\mathbf{R}\mathbf{S} & \mathbf{p}_{k}\ 0 & 1nd{bmatrix}

其中 tu,tv\mathbf{t}_u, \mathbf{t}_v 是单位正交切向量,su,svs_u, s_v 是缩放因子,pk\mathbf{p}_k 是中心点。该矩阵将局部 (u,v)(u,v) 坐标(定义在圆盘平面上)映射到世界空间:P(u,v,1,1)T=H(u,v,1,1)TP(u,v,1,1)^{\mathrm{T}} = \mathbf{H}(u,v,1,1)^{\mathrm{T}}

2. 射线-面片相交求解

核心创新。为规避直接计算变换矩阵的逆 M=(WH)1\mathbf{M}=(\mathbf{WH})^{-1} 的不稳定性,将像素射线表示为两个正交平面(x-plane和y-plane)的交线。将这些平面通过 (WH)op(\mathbf{WH})^{ op} 变换到2D高斯的局部 (u,v)(u,v) 坐标系。

目标是找到从相机发出、穿过像素 (x,y)(x,y) 的射线与2D高斯平面的交点 (u,v)(u,v) 及其深度 zz

步骤1:将射线表示为两个平面的交线
屏幕投影空间中,像素射线可被唯一地定义为两个正交平面的交线:

  • X平面:法向量为 (1,0,0)(-1,0,0),偏移为 xx,用齐次坐标表示为 hx=(1,0,0,x)T\mathbf{h}_{x}=(-1,0,0,x)^{\mathrm{T}}
  • Y平面:法向量为 (0,1,0)(0,-1,0),偏移为 yy,表示为 hy=(0,1,0,y)T\mathbf{h}_{y}=(0,-1,0,y)^{\mathrm{T}}

步骤2:将平面变换到2D高斯的局部空间
将世界到屏幕的变换矩阵记为 W\mathbf{W}。将射线平面变换到2D高斯的局部 (u,v)(u,v) 坐标系,等价于对平面参数应用变换矩阵的逆转置 (WH)T(\mathbf{WH})^{-\mathrm{T}}。巧妙的是,这等价于直接使用 (WH)T(\mathbf{WH})^{\mathrm{T}} 来避免显式求逆:

hu=(WH)Thx,hv=(WH)Thy\mathbf{h}_{u}=(\mathbf{WH})^{\mathrm{T}}\mathbf{h}_{x}, \quad \mathbf{h}_{v}=(\mathbf{WH})^{\mathrm{T}}\mathbf{h}_{y}

步骤3:求解交点坐标 (u,v)(u,v)
在局部坐标系中,点 (u,v,1,1)(u,v,1,1) 必须同时位于变换后的两个平面上,即满足:

hu\mathbf{h}_{u}