NeuS笔记
Last Update:
Word Count:
Read Time:
NeuS Note
渲染过程
场景表示
要重建的物体场景由两个函数表示:
:将空间位置 映射到物体的符号距离 :将空间位置 和视图方向 映射为颜色
这两个函数都通过 MLP 实现
物体的表面
符号距离函数 SDF
具体来说,SDF是一个函数,通常表示为
,其中 是空间的维度(例如二维或三维)。对于空间中的任意一点 ,SDF 表示从点 到最近表面的距离,并且:
- 如果
,则点 在物体内部; - 如果
,则点 在物体表面上; - 如果
,则点 在物体外部。
S-密度
为了将体渲染的方法用于训练 SDF 神经网络,引入概率密度函数
S-密度场是 Sigmoid 函数
即
原则上,
可以是任何以 0 为中心的单峰(即钟形)密度分布;这里我们选择逻辑密度分布是因为它的计算方便。 注意,
的标准差由 给出,这也是一个可训练参数,即随着网络训练的收敛, 接近于零。 随着
的增大, 的的峰值高度会增加,宽度会变窄,也就是说随着 s 的增大而变得更加尖锐和集中
NeuS 的主要思想是,在 S-密度场
越大 -> 越趋近于0 -> 越趋近于物体表面
渲染
给定一个像素,我们将从该像素发出的射线表示为
是该像素的输出颜色 是点 的权重函数 是沿视图方向 的点 处的颜色。
对权重函数 的要求
从 2D 图像中学习精确的 SDF 表示的关键是建立输出颜色
权重函数
无偏性。给定一条相机射线
, 在表面交点 处取得局部最大值,即 ,也就是说,点 位于 SDF 的零等值面上( )。遮挡感知。给定任意两个深度值
和 ,满足 , , ,且 ,有 。也就是说,当两个点具有相同的 SDF 值(因此具有相同的 SDF 诱导的 S-密度值)时,更靠近视点的点应该对最终输出颜色有更大的贡献。
一个无偏的权重函数
遮挡感知属性确保了当一条射线依次穿过多个表面时,渲染过程将正确地使用离相机最近的表面的颜色来计算输出颜色。
NeRF的朴素解
NeRF中的权重函数定义如下:
是NeRF中所谓的体密度,这里将 设置为等于 S-密度值,即 表示沿射线的累积透射率。
尽管由此产生的权重函数具有遮挡感知性,但它是有偏的,因为它在重建的表面中引入了固有的误差。如图所示,权重函数
NeuS对权重函数 的解
为了介绍 NeuS 的解决方案,首先介绍一种直接使用归一化 S-密度作为权重来构建无偏权重函数的简单方法:
这种权重函数的构造是无偏的,但不具备遮挡感知性。
例如,如果射线穿透两个表面,SDF 函数
将在射线上有两个零点,这导致权重函数 上有两个峰值,并且由此产生的权重函数将平均混合这两个表面的颜色,而不考虑遮挡。
为了确保权重函数
:不透明密度函数,是标准体积渲染中体积密度 的对应 :累积透射率, 区间的不透明度越大 -> 的积分越大 -> 越小,累积透明度越小
不透明密度函数 的推导
首先考虑一个简单的理想情况:表面是一个远离相机的平面,且只有一个交点
此时的符号距离函数 SDF 很明显是:
- 焦点位置:
是视图方向 和向外表面法线向量 之间的角度
在这种假设下公式 5 确实满足要求,由于
在体积渲染框架内,权重函数由
- 由于
,很容易验证 。 - 根据
函数的设定: ,可知 - 由此可得:
朴素解中的偏差
权重函数定义为
待定