原文链接:https://browse.arxiv.org/abs/2402.00752
1. 引言
许多基于3D高斯溅射(3D-GS)的方法针对稀疏视图场景的鲁棒性、性能和存储效率进行增强,但没有专门处理高斯投影的误差。
3D-GS以一组图像和相机通过SfM校准产生的点云为输入,建立3D高斯来表达场景。渲染时,3D高斯会通过投影函数 ϕ \phi ϕ投影到图像平面( z = 1 z=1 z=1平面),以进行可微栅格化。
但是,尽管高斯函数经过卷积或仿射变换可以保留高斯属性,经过投影变换却不一定。因此,3D高斯溅射使用了局部仿射近似,即使用二阶泰勒展开近似投影函数,这会引入误差,从而在渲染图像中产生伪影。本文通过对泰勒余项的分析,揭示了3D高斯溅射误差与高斯均值的关系;同时,通过确定误差函数的极值,找到了使误差最小的条件。
本文还通过对误差函数的极值分析,提出最优投影方法,沿高斯均值与相机中心投影,投影平面与该线垂直。与直接将3D高斯投影到 z = 1 z=1 z=1平面相比,本文的投影方法误差更小,且也可实现真实且实时的渲染。
3. 准备知识
设有3D高斯函数 G G G,由均值 μ \mu μ和协方差矩阵 Σ \Sigma Σ表达:
G μ , Σ ( x ) = exp ( − 1 / 2 ( x − μ ) T Σ − 1 ( x − μ ) ) G_{\mu,\Sigma}(x)=\exp(-1/2(x-\mu)^T\Sigma^{-1}(x-\mu)) Gμ,Σ(x)=exp(−1/2(x−μ)TΣ−1(x−μ))
在混合过程中,高斯会乘以不透明度 α \alpha α。
通过视图变换矩阵 W W W,将高斯函数从世界坐标系变换到相机坐标系:
G ′ ( x ) = exp ( − 1 / 2 ( W x − W μ ) T ( W Σ W T ) − 1 ( W x − W μ ) ) (1) G'(x)=\exp(-1/2(Wx-W\mu)^T(W\Sigma W^T)^{-1}(Wx-W\mu))\tag1 G′(x)=exp(−1/2(Wx−Wμ)T(WΣWT)−1(Wx−Wμ))(1)
记 x ′ = W x , μ ′ = W μ , Σ ′ = W Σ W T x'=Wx,\mu'=W\mu,\Sigma'=W\Sigma W^T x′=Wx,μ′=Wμ,Σ′=WΣWT,可得:
G ′ ( x ′ ) = exp ( − 1 / 2 ( x ′ − μ ′ ) T Σ ′ − 1 ( x ′ − μ ′ ) ) G'(x')=\exp(-1/2(x'-\mu')^T\Sigma'^{-1}(x'-\mu')) G′(x′)=exp(−1/2(x′−μ′)TΣ′−1(x′−μ′))
记 x 0 = [ 0 , 0 , 1 ] T x_0=[0,0,1]^T x0=[0,0,1]T, z = 1 z=1 z=1的投影平面可以记为:
x 0 T ⋅ ( x ′ − x 0 ) = 0 x_0^T\cdot(x'-x_0)=0 x0T⋅(x′−x0)=0
可以据此获取投影函数 ϕ \phi ϕ:
ϕ ( x ′ ) = x ′ ( x 0 T x ′ ) − 1 ( x 0 T x 0 ) = x ′ ( x 0 T x ′ ) − 1 \phi(x')=x'(x_0^Tx')^{-1}(x_0^Tx_0)=x'(x_0^Tx')^{-1} ϕ(x′)=x′(x0Tx′)−1(x0Tx0)=x′(x0Tx′)−1
可以使用泰勒展开到一阶:
ϕ ( x ′ ) = ϕ ( μ ′ ) + ∂ ϕ ∂ x ′ ( μ ′ ) ( x ′ − μ ′ ) + R 1 ( x ′ ) \phi(x')=\phi(\mu')+\frac{\partial\phi}{\partial x'}(\mu')(x'-\mu')+R_1(x') ϕ(x′)=ϕ(μ′)+∂x′∂ϕ(μ′)(x′−μ′)+R1(x′)
其中 ∂ ϕ ∂ x ′ ( μ ′ ) \frac{\partial\phi}{\partial x'}(\mu') ∂x′∂ϕ(μ′)为投影变换的仿射近似,记为 J J J。不考虑泰勒余项时,可按照(1)式类似推导得到投影的2D高斯:
G 2 D ( x ′ ) = exp ( − 1 / 2 ( J x ′ − J μ ′ ) T ( J Σ J T ) − 1 ( J x ′ − J μ ′ ) ) ≈ exp ( − 1 / 2 ( ϕ ( x ′ ) − ϕ ( μ ′ ) ) T ( J Σ J T ) − 1 ( ϕ ( x ′ ) − ϕ ( μ ′ ) ) ) \begin{aligned}G_{2D}(x')&=\exp(-1/2(Jx'-J\mu')^T(J\Sigma J^T)^{-1}(Jx'-J\mu'))\\ &\approx\exp(-1/2(\phi(x')-\phi(\mu'))^T(J\Sigma J^T)^{-1}(\phi(x')-\phi(\mu')))\end{aligned} G2D(x′)=exp(−1/2(Jx′−Jμ′)T(JΣJT)−1(Jx′−Jμ′))≈exp(−1/2(ϕ(x′)−ϕ(μ′))T(JΣJT)−1(ϕ(x′)−ϕ(μ′)))
注意 J J J的秩为2, J Σ J T J\Sigma J^T JΣJT的逆跳过第三维度求取。记 x 2 D = ϕ ( x ′ ) , μ 2 D = ϕ ( μ ′ ) , Σ 2 D = J Σ ′ J T x_{2D}=\phi(x'),\mu_{2D}=\phi(\mu'),\Sigma_{2D}=J\Sigma' J^T x2D=ϕ(x′),μ2D=ϕ(μ′),Σ2D=JΣ′JT,则投影的2D高斯可写成:
G 2 D ( x 2 D ) = exp ( − 1 / 2 ( x 2 D − μ 2 D ) T Σ 2 D − 1 ( x 2 D − μ 2 D ) ) G_{2D}(x_{2D})=\exp(-1/2(x_{2D}-\mu_{2D})^T\Sigma_{2D}^{-1}(x_{2D}-\mu_{2D})) G2D(x2D)=exp(−1/2(x2D−μ2D)TΣ2D−1(x2D−μ2D))
4. 局部仿射近似误差
该部分推导见原文。
局部仿射近似误差由泰勒余项决定。可知该余项向量与随机变量 x ′ x' x′和高斯均值 μ ′ \mu' μ′相关。可计算其F-范数的平方,并计算其关于 x ′ x' x′的期望,得到关于 μ ′ \mu' μ′的误差函数 ϵ \epsilon ϵ。
然后,可以证明 x ′ x' x′与 μ ′ \mu' μ′在单位球面上的投影 再投影到投影平面上(注意这个投影不是正交投影)时,得到的结果与直接将 x ′ x' x′和 μ ′ \mu' μ′投影到投影平面上相同,即 ( ϕ ∘ π ) ( x ′ ) = ϕ ( x ′ ) (\phi\circ\pi)(x')=\phi(x') (ϕ∘π)(x′)=ϕ(x′)。计算球面坐标,带入误差函数的表达式,可计算得到,当 x 0 x_0 x0与 μ ′ \mu' μ′在球面上的投影重合时,误差函数取得极值。
可视化误差函数发现,极值附近的较大区域,误差函数值变化不大,但靠近积分界限时误差急剧变大。因此,使用局部仿射近似的3D-GS在多数情况下能高质量地合成新视图,但对于离平面中心(相机中心在投影面上的投影点)远的高斯,会有大误差,从而导致伪影。
5. 最优高斯溅射
5.1 最优投影
本文将各3D高斯投影到不同的平面(高斯均值的与相机中心连线的垂直平面)上,以保证投影误差最小。投影平面与单位球相切,为:
x μ T ⋅ ( x ′ − x μ ) = 0 x^{\mu T}\cdot(x'-x^{\mu})=0 xμT⋅(x′−xμ)=0
其中 x μ = π ( μ ′ ) = μ ′ ( μ ′ T μ ′ ) − 1 / 2 x^\mu=\pi(\mu')=\mu'(\mu'^T\mu')^{-1/2} xμ=π(μ′)=μ′(μ′Tμ′)−1/2。最优投影函数为:
ϕ μ ( x ′ ) = x ′ ( x μ T x ′ ) − 1 \phi^\mu(x')=x'(x^{\mu T}x')^{-1} ϕμ(x′)=x′(xμTx′)−1
对应的局部仿射近似雅可比矩阵 J μ J^\mu Jμ可用 μ ′ \mu' μ′的坐标表达(见原文)。
5.2 基于单位球的栅格化
由于投影不位于图像平面上,需要使用基于单位球的栅格化来生成图像。
具体来说,对图像像素 ( u , v ) (u,v) (u,v),类似NeRF投射射线,然后确定单位球上的哪些平面高斯与射线相交:
x 2 D μ = ϕ μ ( [ ( u − c x ) / f x , ( v − c y ) / f y , 1 ] T ) x^\mu_{2D}=\phi^\mu([(u-c_x)/f_x,(v-c_y)/f_y,1]^T) x2Dμ=ϕμ([(u−cx)/fx,(v−cy)/fy,1]T)
然后使用 x 2 D μ x^\mu_{2D} x2Dμ查询高斯函数值,进行alpha混合,获取颜色:
C ( u , v ) = ∑ z = z near z far SH ( μ z ) α ( u , v , μ z ) ∏ k = z near z ( 1 − α ( u , v , μ k ) ) C(u,v)=\sum_{z=z_\text{near}}^{z_\text{far}}\text{SH}(\mu_z)\alpha(u,v,\mu_z)\prod_{k=z_\text{near}}^{z}(1-\alpha(u,v,\mu_k)) C(u,v)=z=znear∑zfarSH(μz)α(u,v,μz)k=znear∏z(1−α(u,v,μk))
其中 α ( u , v , μ ) = α μ ⋅ G 2 D μ ( x 2 D μ ) \alpha(u,v,\mu)=\alpha_\mu\cdot G^\mu_{2D}(x_{2D}^\mu) α(u,v,μ)=αμ⋅G2Dμ(x2Dμ), α μ \alpha_\mu αμ为中心为 μ \mu μ的高斯的不透明度, SH ( μ ) \text{SH}(\mu) SH(μ)为中心为 μ \mu μ的高斯的球面谐波, μ z \mu_z μz表示深度为 z z z的高斯中心。
6. 实验
6.4 结果
定量结果:与MipNeRF360相比,本文方法在MipNeRF360数据集下PSNR性能略低,但速度远远更快。这是因为MipNeRF360没有使用显著的近似。但总的来说,与3D-GS和MipNeRF360相比,本文方法能保证实时性,并取得性能提升。
定性结果:与3D-GS相比,本文方法可以减少伪影产生并保留更多细节。