110、2D Gaussian Splatting for Geometrically Accurate Radiance Fields

简介

官网
在这里插入图片描述
由于三维高斯的多视图不一致性,3DGS无法准确地表示表面

将三维体折叠成一组二维定向平面高斯盘。与3D高斯函数不同,2D高斯函数在本质上建模表面时提供了一致的视图几何。为了准确地恢复薄表面并实现稳定的优化,我们引入了一种利用射线-飞溅相交和光栅化的透视精度2D飞溅过程

与3DGS不同,用二维高斯基元表示3D场景,每个基元定义一个定向椭圆盘。2D高斯函数相对于3D高斯函数的显著优势在于在渲染过程中精确的几何表示。具体来说,3DGS在像素射线和3D高斯之间的交叉点评估高斯值,这导致从不同视点渲染时深度不一致。相比之下,利用明确的射线-飞溅相交,导致透视精度飞溅
在这里插入图片描述
3DGS在不同视点观看时,使用不同的相交平面进行价值评估,导致不一致。2DGS提供多视图一致的价值评估。

实现流程

首先,三维高斯的体积辐射表示与表面的薄性质相冲突

其次,3DGS不原生建模表面法线,这对于高质量的表面重建至关重要

第三,3DGS中的光栅化过程缺乏多视图一致性,导致不同视点的2D相交平面不同,如上图所示。此外,使用仿射矩阵将3D高斯变换为射线空间只能在中心附近产生准确的投影,影响周围区域的透视精度。因此,它经常导致噪声重构。

Modeling

在这里插入图片描述

在一个blob中建模整个角度辐射,通过在3D空间中嵌入“平面”二维高斯函数来简化三维建模。在二维高斯模型中,原语将密度分布在平面圆盘内,并将法线定义为密度变化最剧烈的方向。此功能可以更好地与薄表面对齐。

2D splat的特征是其中心点 p k p_k pk,两个主切向量 t μ t_\mu tμ t v t_v tv,以及控制2D高斯方差的缩放向量 S = ( s u , s b ) S =(s_u,s_b) S=(susb)。始法线是由两个正交的切向量 t w = t u × t v t_w = t_u \times t_v tw=tu×tv 定义的。可以将方向排列成一个3 × 3的旋转矩阵 R = [ t u , t v , t w ] R=[t_u,t_v,t_w] R=[tu,tv,tw],将缩放因子排列成一个3 × 3的对角矩阵 S,其最后一项为零

在世界空间的局部切平面上定义二维高斯函数
在这里插入图片描述
其中 H ∈ 4 × 4 H∈4 × 4 H4×4 是表示二维高斯几何的齐次变换矩阵。

对于 u v uv uv空间中的点 u = ( u , v ) u =(u,v) u=(uv),则可以用标准高斯函数求其二维高斯值
在这里插入图片描述
中心 p k p_k pk,缩放 ( s u , s v ) (s_u,s_v) (su,sv)和旋转 ( t u , t v ) (t_u,t_v) (tu,tv)是可学习的参数。与3DGS一样,每个2D高斯原语都具有不透明度的 α \alpha α和与视图相关的外观 c ,并以球面谐波参数化。

Splatting

渲染二维高斯图的一种常用策略是使用透视投影的仿射近似将二维高斯基元投影到图像空间上,这种投影仅在高斯中心准确,并且随着距离中心的增加,近似误差也会增加

这里使用基于齐次坐标的公式。具体来说,将2D图像投影到图像平面上可以用齐次坐标下的一般2D到2D映射来描述。设W∈4 × 4 为世界空间到屏幕空间的变换矩阵。屏幕空间点由
在这里插入图片描述
其中 x 表示从相机发出的均匀射线,穿过像素(x,y),并在深度 z 处与splat相交

使用 M = ( W H ) − 1 M = (WH)^{−1} M=(WH)1 的隐式方法将其二次曲线投影到屏幕空间中,逆变换引入了数值不稳定性,特别是当飞溅退化成线段时(即,如果从侧面观察),为了解决这个问题,以前的表面喷溅呈现方法使用预定义的阈值丢弃这种病态转换。然而,这种方案在可微分的呈现框架中提出了挑战,因为阈值设置可能导致不稳定的优化。为了解决这个问题,利用了一个明确的射线-拼板交叉

Ray-splat Intersection

通过寻找三个非平行平面的交点来有效地定位射线片的交点

给定一个图像坐标 x = ( x , y ) x = (x, y) x=(x,y),将像素的射线参数化为两个正交平面的交点:x-plane 和 y-plane

x-plane由一个法向量(- 1,0,0)和一个偏移量 x 定义,可以表示为一个四维齐次平面 h x = ( − 1 , 0 , 0 , x ) h_x = (-1,0,0,x) hx=(1,0,0,x),同样的y-plane表示为 h y = ( 0 , − 1 , 0 , y ) h_y=(0,-1,0,y) hy=(0,1,0,y)

射线 x = ( x , y ) x = (x, y) x=(x,y) 可以由 x-plane和y-planes的交集确定

将两个平面转换为二维高斯基元的局部坐标,即𝑢𝑣-coordinate系统,用变换矩阵M变换平面上的点等价于用 M − 1 M^{-1} M1 的逆转置变换齐次平面参数 M = ( W H ) − 1 = = ( W H ) T M=(WH)^{-1} == (WH)^T M=(WH)1==(WH)T,由此消除显式矩阵反演

在这里插入图片描述
二维高斯平面上的点表示为(𝑢,𝑣,1,1),同时交点落在变换后的𝑥-plane和𝑦-plane上
在这里插入图片描述
得到了交点 u(x) 的有效解
在这里插入图片描述
h u i , h v i h^i_u,h^i_v hui,hvi为第i个四维均匀平面参数

Degenerate Solutions

当从倾斜的角度观察二维高斯曲线时,它退化为屏幕空间中的一条线。因此,在栅格化过程中可能会遗漏它,这里采用目标空间低通滤波器
在这里插入图片描述
c 是中心 p k p_k pk 的投影,直观地说, G ( x ) ^ \hat{G(x)} G(x)^的下界是一个固定的屏幕空间高斯低通滤波器,中心为 c k c_k ckc𝑘,半径为 σ \sigma σ,这里设置 σ = 2 2 \sigma=\frac{\sqrt{2}}{2} σ=22 ,以确保在渲染过程中使用足够的像素

Rasterization

首先,为每个高斯原语计算一个屏幕空间边界框

然后,二维高斯函数根据其中心的深度进行排序,并根据其边界框组织成块

最后,使用体积 α \alpha α混合从前到后整合 α \alpha α加权外观
在这里插入图片描述

regularization

只考虑光损失进行优化时,可能会导致噪声重建,引入两个正则化损失

Depth Distortion

3DGS的体绘制不考虑相交高斯基元之间的距离,分散高斯分布可能会产生相似的颜色和深度渲染。这与表面渲染不同,在表面渲染中,光线与第一个可见表面正好相交一次,类似MipNeRF360,提出了一种深度失真损失,通过最小化射线片相交点之间的距离来集中光线的重量分布

在这里插入图片描述
在这里插入图片描述
w i w_i wi第一个交集的混合权值, z i z_i zi是两个交集点的深度,纵坐标是采样点之间的距离,并且没有进行优化,通过调整交叉深度的纵坐标直接鼓励splats的集中。

Normal Consistency

由于表示是基于二维高斯表面元素,必须确保所有的二维拼板在局部与实际表面对齐。在体绘制中,光线可能存在多个半透明的表面,考虑相交中点的实际表面,累计不透明度达到0.5。然后将splats的法线与深度图的梯度对齐如下
在这里插入图片描述
i 沿射线方向相交的splat上的纵向指标
w 表示相交点的混合权值
n i n_i ni 纵向指标表示splat朝向相机方向的法线
N 附近深度点p估计的法线,计算方法如下
在这里插入图片描述
通过将splat法线与估计的表面法线对齐,确保2D splat局部接近实际物体表面

最终损失
有界场景,a=1000,无界场景 a=100, β = 0.05 \beta=0.05 β=0.05

实验

扩展渲染器来输出深度失真图,深度图和法线图用于正则化。在训练过程中,根据3DGS的自适应控制策略增加了二维高斯基元的数量。由于方法不直接依赖于投影2D中心的梯度,因此将3D中心 p k p_k pk的梯度投影到屏幕空间上作为近似值。类似地,采用0.0002的梯度阈值,每3000步移除不透明度低于0.05的条纹。在单个GTX RTX3090 GPU上进行所有实验。

为了从重建的2D splats中提取网格,使用splats投影到像素的中位数深度值来渲染训练视图的深度图,并使用Open3D利用截断符号距离融合(TSDF)来融合重建深度图。在TSDF融合过程中,将体素大小设置为0.004,截断阈值设置为0.02。还扩展了原始的3DGS渲染深度,并采用相同的技术进行表面重建,以进行公平的比较。
在这里插入图片描述

在这里插入图片描述

缺陷

首先,假设具有完全不透明度的表面,并从多视图深度图中提取网格。由于玻璃等半透明表面具有复杂的光传输特性,这可能会给精确处理半透明表面带来挑战。

其次,目前的致密化策略倾向于纹理丰富而不是几何丰富的区域,偶尔会导致精细几何结构的不准确表示。一个更有效的致密化策略可以缓解这个问题。

最后,正则化通常涉及图像质量和几何之间的权衡,并可能导致某些区域的过度平滑。

相关推荐

  1. 1100-采药

    2024-04-07 21:48:02       44 阅读
  2. 2024.6.05总结1102

    2024-04-07 21:48:02       30 阅读
  3. 时钟DS1302LCD

    2024-04-07 21:48:02       37 阅读
  4. PAT.1101.QuickSort

    2024-04-07 21:48:02       53 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-07 21:48:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-07 21:48:02       101 阅读
  3. 在Django里面运行非项目文件

    2024-04-07 21:48:02       82 阅读
  4. Python语言-面向对象

    2024-04-07 21:48:02       91 阅读

热门阅读

  1. 免密登陆的办法以及设置登录界面的欢迎信息

    2024-04-07 21:48:02       44 阅读
  2. IPv4子网判断

    2024-04-07 21:48:02       37 阅读
  3. 题解:CF1941C(C. Rudolf and the Ugly String)

    2024-04-07 21:48:02       41 阅读
  4. 真正的力量:实力与人际关系的平衡艺术

    2024-04-07 21:48:02       37 阅读
  5. Go rand 随机数

    2024-04-07 21:48:02       32 阅读
  6. 19.删除链表的倒数第N个节点

    2024-04-07 21:48:02       34 阅读
  7. C++ [NOIP2006 普及组] 明明的随机数

    2024-04-07 21:48:02       42 阅读
  8. RabbitMQ交换机类型!!!

    2024-04-07 21:48:02       47 阅读
  9. 投资回报率ROI是什么意思?

    2024-04-07 21:48:02       33 阅读
  10. 《牛客》-C小红的字符串构造

    2024-04-07 21:48:02       40 阅读
  11. jq的跳转方法有哪些(补)

    2024-04-07 21:48:02       34 阅读