【读论文】S3-NeRF

原文链接

S3-NeRF: Neural Reflectance Field from Shading and Shadow under a Single Viewpoint
单视点下基于阴影和影子的神经反射场

扩展NeuS,对透明块中物体重建

对标方法

这篇文章对标的方法主要是现有的多视角重建和单视角重建方法。具体来说,与多视角重建(如 NeRF)和单视角重建(如光度立体法和影子形状法)相比,该方法通过从单个视点下不同点光源的单视图图像来学习神经场表示,从而解决了现有方法的一些局限性。

现有方法的缺点

现有单视角重建方法(例如光度立体法和影子形状法)有以下几个缺点:
由于在空气和透明块界面处多次光反射和折射导致的严重图像失真。不能处理多次反射和折射

  1. 只能恢复2.5D场景表示:现有单视角方法通常只能恢复可见表面的法线或深度图,无法描述背面和被遮挡的表面。
  2. 处理深度不连续性困难:使用表面法线表示的方法在处理深度不连续性时存在困难。

文章解决的问题
恢复限制在透明外壳中的物体的三维几何结构,能处理多次折射和反射
这篇文章提出了一种基于单视角不同点光源图像的神经反射场表示方法,解决了以下问题:

  1. 完整的3D几何和BRDF恢复:通过利用单视角图像中的阴影和影子线索,该方法能够从单视角图像中恢复场景的3D几何和BRDF,包括可见和不可见部分。
  2. 深度不连续性鲁棒性:采用神经反射场表示,使方法在处理深度不连续性时更加鲁棒。
  3. 支持新视角合成和重光照:由于神经反射场表示的灵活性,该方法能够支持新视角合成和重光照等应用。

创新点

  1. 神经反射场优化:首次提出利用单视角图像中的阴影和影子线索进行神经反射场优化的方法。
  2. 物理渲染和在线影子计算:结合表面几何和BRDF模型,通过物理渲染计算3D点颜色,并通过光线追踪计算光线可见性以实现在线影子计算,从而充分利用了信息丰富的阴影和影子线索。

method

两点假设:

  1. 透明块(矩形)几何形状和姿态已知
  2. 均匀的背景和环境光照

使用一种新颖的混合渲染策略,结合光线追踪和体积渲染技术来处理两个子空间之间的光线交互,称为ReNeuS:
透明块内部空间:NeuS 编码几何和外观信息
透明块外部空间:假设均匀的背景和环境光照

内部:和NeuS基本相同
外部:利用折射反射定律进行基本的光线追踪

外部空间中光线的处理方法

在这篇文章中,外部空间(Sout)的处理方法是基于以下几个关键假设和步骤:

  1. 均匀的背景光照:假设外部空间是均匀的,具有固定的环境光照条件。对于合成数据,环境光照设置为 [0.8,0.8,0.8][0.8, 0.8, 0.8]

  2. 光线追踪:当光线进入外部空间时,不再考虑其与其他物体的交互。外部空间被视为空的,这意味着光线在外部空间中传播时,只受环境光照的影响。

  3. 颜色分配:外部空间中的光线颜色直接被分配为预定义的背景颜色 CoutCout。这简化了对外部空间光线交互的建模。

  4. 递归光线追踪:通过递归地追踪反射和折射光线,计算光线在内部和外部空间中的传播路径。当光线从内部空间进入外部空间时,使用菲涅耳方程计算反射率和透射率,并分别追踪反射光线和折射光线。

具体步骤

  1. 光线计算:对于每条入射光线,计算其与透明盒子的交点。如果光线没有击中盒子,追踪过程结束,仅记录原始光线。
  2. 反射和折射:如果光线击中了盒子,根据反射定律和斯涅尔定律计算反射光线和折射光线。同时,使用菲涅耳方程计算反射率 RiRi 和透射率 TreT_{re},并继续追踪这些反射和折射光线。
  3. 颜色积累:逐步积累每条子光线的颜色,最终得到相机射线的颜色。对于内部空间中的光线,通过体积渲染计算颜色;对于外部空间中的光线,直接使用预定义的背景颜色。

这种方法通过显式分割场景为内部和外部空间,并分别处理光线在不同子空间中的交互,从而有效地解决了透明容器内部物体的3D重建问题。

实验结果

实验结果表明,该方法在多个具有挑战性的数据集上能够准确重建完整的场景几何,包括可见和不可见部分,并且在处理深度不连续性方面表现出色。此外,该方法支持新视角合成和重光照应用。实验结果的详细数据和对比分析可以在文章的实验部分找到。

具体来说,实验结果展示了在重光照和法线估计任务上的优越表现,例如在多个数据集上,该方法相较于现有方法在PSNR和MAE指标上均表现更优。

模型结构

这篇文章提出的模型主要包括三个关键部分:神经反射场表示、基于物理的颜色渲染和在线阴影计算。以下是模型结构的详细介绍,包括输入和输出的含义:

1. 神经反射场表示 (Neural Reflectance Field Representation)

输入:3D点xR3x \in \mathbb{R}^3和观察方向dR3d \in \mathbb{R}^3

输出:占据值o(x)o(x)和颜色c(x,d)c(x, d)

模型采用一个多层感知器(MLP)将3D点和观察方向映射到场景的占据值和颜色。通过体渲染技术,模型可以计算每个像素(或光线)的颜色。

公式如下:
C(r)=i=1NVo(xi)j<i(1o(xj))c(xi,d)C(r) = \sum_{i=1}^{N_V} o(x_i) \prod_{j<i} (1 - o(x_j)) c(x_i, d)
其中,xix_i是沿着光线r=o+tdr = o + td采样的3D点,oo是相机中心,dd是由像素指定的光线方向,NVN_V是每条光线的采样点数 。

2. 基于物理的颜色渲染 (Physics-based Color Rendering)

输入:表面点xx、观察方向dd、光源位置plp_l和光源强度LeL_e

输出:颜色fc(d,pl,Le;x)f_c(d, p_l, L_e; x)

模型考虑具有空间变化的BRDF(双向反射分布函数)。渲染方程如下:
fc(d,pl,Le;x)=Lint(pl,Le;x)fm(d,wi(pl;x);x)max(wi(pl;x)n(x),0)f_c(d, p_l, L_e; x) = L_{int}(p_l, L_e; x) \cdot f_m(d, w_i(p_l; x); x) \cdot \max(w_i(p_l; x) \cdot n(x), 0)
其中,Lint(pl,Le;x)L_{int}(p_l, L_e; x)表示入射光,wi(pl;x)w_i(p_l; x)是入射光方向,fm(d,wi(pl;x);x)f_m(d, w_i(p_l; x); x)是BRDF值,n(x)n(x)是法线 。

3. 在线阴影计算 (Online Shadow Computation)

输入:光源位置plp_l、表面点xx和占据值o(x)o(x)

输出:光照可见性fv(pl,x)f_v(p_l, x)

模型通过从表面点到光源位置的光线跟踪来计算光照可见性。公式如下:
fv(pl;x)=1i=1NLo(xi)j<i(1o(xj))f_v(p_l; x) = 1 - \sum_{i=1}^{N_L} o(x_i) \prod_{j<i} (1 - o(x_j))
其中,NLN_L是沿光线采样的点数 。

模型优化

模型的优化目标是通过图像重建损失来进行优化:

  1. 体渲染损失LvL_v
    Lv=CvI1L_v = \sum \| C_v - I \|_1
    其中,CvC_v是体渲染的图像,II是输入图像 。

  2. 表面渲染损失LsL_s
    Ls=CsI1L_s = \sum \| C_s - I \|_1
    其中,CsC_s是表面渲染的颜色 。

  3. 法线平滑损失LnL_n
    Ln=n(xs)n(xs+ϵ)22L_n = \sum \| n(x_s) - n(x_s + \epsilon) \|_2^2
    其中,ϵ\epsilon是一个小的随机扰动 。

综合损失函数如下:
L=Lv+Ls+αLnL = L_v + L_s + \alpha L_n
其中,α\alpha通常设为0.005 。

这篇文章通过结合阴影和阴影线索,提出了一种从单视点图像中恢复完整场景几何和BRDF的新方法。这种方法在处理深度不连续性方面表现优越,并支持新视角合成和重新光照等应用。

总体步骤

光线与透明盒子的交点计算:

使用几何算法计算光线与透明盒子界面的交点。如果没有交点,光线被直接处理为背景光。
计算反射和折射光线:

在交点处,根据法向量和入射光线的方向,使用反射定律和斯涅尔定律计算反射和折射光线。
计算菲涅耳方程,以确定反射和折射光线的强度。
递归光线追踪:

对每条反射和折射光线,重复上述步骤,直到达到递归深度(Dre)。
记录每条子光线的路径和颜色信息。
颜色积累:

在所有光线追踪完成后,从最内部的空间开始,逐步积累每条光线的颜色。
对于内部空间,使用体积渲染计算颜色;对于外部空间,直接使用背景光颜色。
根据光线在各个介质中的路径,逐步调整光线颜色,最终得到摄像机光线的总颜色。

Relative Works

BRDF 是 Bidirectional Reflectance Distribution Function 的缩写,中文称为双向反射分布函数。它是用于描述物体表面反射特性的一个函数,即在给定入射角和出射角的情况下,物体表面反射光线的分布情况。BRDF 函数通常被用来计算在特定角度下的反射光强。
BRDF 在计算机图形学、光学、遥感等领域有广泛的应用。例如,在计算机图形学中,BRDF 可以帮助模拟物体表面的反射效果,使渲染的图像更加逼真。在遥感领域,BRDF 可以用来解释和分析地表反射特性,从而获取地面的信息。

辨析
Neural Reflectance FieldNeural Radiance Field 是两种用于场景重建和表示的不同神经网络模型,它们的主要区别如下:

Neural Radiance Field (NeRF)

Neural Radiance Field,简称NeRF,是一种通过多层感知器(MLP)来表示连续3D空间的模型,特别适用于多视图场景重建和新视角合成。它的主要特点包括:

  1. 输入:3D点坐标和视角方向。
  2. 输出:3D点的颜色和体积密度。
  3. 渲染方式:通过体渲染技术,累积不同视角下的光线颜色,生成逼真的2D图像。
  4. 应用:主要用于新视角合成和多视图场景重建。
  5. 优点:能够生成高质量的、细节丰富的图像,尤其适用于具有复杂几何形状和光照的场景。

Neural Reflectance Field (NRF)

Neural Reflectance Field,是一种结合了反射率(BRDF)和几何信息的模型,适用于从单视点图像中恢复场景的3D几何和材质。它的主要特点包括:

  1. 输入:3D点坐标、光源位置和观察方向。
  2. 输出:3D点的颜色和反射率(BRDF)信息。
  3. 渲染方式:采用基于物理的渲染方法,考虑光照、阴影和反射率来计算颜色。
  4. 应用:主要用于单视点图像的3D重建,支持新视角合成和重新光照。
  5. 优点:能够恢复场景的完整3D几何,包括可见和不可见部分,并且在处理深度不连续性和复杂光照效果方面表现优越。

区别总结

  • 目标不同:NeRF主要用于多视图场景重建,而NRF则致力于从单视点图像中恢复场景的3D几何和材质。
  • 输入输出不同:NeRF的输入是3D点和视角方向,输出是颜色和体积密度;NRF的输入是3D点、光源位置和观察方向,输出是颜色和反射率。
  • 渲染方法不同:NeRF采用体渲染技术,而NRF则使用基于物理的渲染方法来考虑光照和阴影。

通过这些区别,可以看出NeRF和NRF各自针对不同的应用场景和需求进行了优化,从而在各自领域中发挥最大的作用。

斯涅尔定律(Snell's Law)
又称折射定律,用于描述光在两种介质界面发生折射时的关系。它指出入射角和折射角与两种介质的折射率之间存在如下关系:

n1sin(θ1)=n2sin(θ2)n_1 \sin(\theta_1) = n_2 \sin(\theta_2)

其中:

  • n1n_1n2n_2 分别是两种介质的折射率(refractive indices)。
  • θ1\theta_1 是入射光线与法线之间的夹角(入射角)。
  • θ2\theta_2 是折射光线与法线之间的夹角(折射角)。

解释

当光线从一种介质进入另一种介质时,它的传播速度会发生改变,从而导致光线在界面处发生弯折。斯涅尔定律定量描述了这种弯折的程度:

  • 如果 n2>n1n_2 > n_1(即光从折射率较小的介质进入折射率较大的介质,例如从空气进入玻璃),则折射角 θ2\theta_2 会小于入射角 θ1\theta_1,光线会向法线方向弯折。
  • 如果 n2<n1n_2 < n_1(即光从折射率较大的介质进入折射率较小的介质,例如从水进入空气),则折射角 θ2\theta_2 会大于入射角 θ1\theta_1,光线会远离法线方向弯折。

应用

斯涅尔定律在许多光学现象和技术中有广泛应用,例如:

  • 光纤通信:光在光纤中通过不同介质界面的折射进行传输。
  • 透镜设计:用于计算和设计光学透镜的曲率和厚度,以获得期望的光线路径。
  • 光学测量:通过测量折射角来确定未知介质的折射率。

例子

假设光从空气(折射率 n11.0n_1 \approx 1.0)进入玻璃(折射率 n21.5n_2 \approx 1.5),入射角 θ1=30\theta_1 = 30^\circ。根据斯涅尔定律:

sin(θ2)=n1n2sin(θ1)=1.01.5sin(30)=1.01.5×0.5=0.51.5\sin(\theta_2) = \frac{n_1}{n_2} \sin(\theta_1) = \frac{1.0}{1.5} \sin(30^\circ) = \frac{1.0}{1.5} \times 0.5 = \frac{0.5}{1.5}

θ2=sin1(0.51.5)19.47\theta_2 = \sin^{-1}\left(\frac{0.5}{1.5}\right) \approx 19.47^\circ

因此,当光线从空气进入玻璃时,折射角约为 19.4719.47^\circ

菲涅耳方程(Fresnel Equations)
描述了光在两种不同介质的界面处发生反射和折射时,反射光和折射光的振幅和强度的关系。这些方程是基于麦克斯韦方程组推导出来的,用于计算光的反射率和透射率。

基本原理

菲涅耳方程分为两种情况:平行极化(p-极化)和垂直极化(s-极化)。这两种极化情况下的反射率和透射率计算公式不同。

s-极化(电场垂直于入射平面)

  • 反射率(反射振幅系数):
    rs=n1cos(θ1)n2cos(θ2)n1cos(θ1)+n2cos(θ2) r_s = \frac{n_1 \cos(\theta_1) - n_2 \cos(\theta_2)}{n_1 \cos(\theta_1) + n_2 \cos(\theta_2)}

  • 透射率(透射振幅系数):
    ts=2n1cos(θ1)n1cos(θ1)+n2cos(θ2) t_s = \frac{2 n_1 \cos(\theta_1)}{n_1 \cos(\theta_1) + n_2 \cos(\theta_2)}

p-极化(电场平行于入射平面)

  • 反射率(反射振幅系数):
    rp=n2cos(θ1)n1cos(θ2)n2cos(θ1)+n1cos(θ2) r_p = \frac{n_2 \cos(\theta_1) - n_1 \cos(\theta_2)}{n_2 \cos(\theta_1) + n_1 \cos(\theta_2)}

  • 透射率(透射振幅系数):
    tp=2n1cos(θ1)n2cos(θ1)+n1cos(θ2) t_p = \frac{2 n_1 \cos(\theta_1)}{n_2 \cos(\theta_1) + n_1 \cos(\theta_2)}

反射率和透射率(强度)

反射光和透射光的强度(或功率)由反射率和透射率的平方给出:

  • s-极化的反射率和透射率
    Rs=rs2 R_s = |r_s|^2
    Ts=n2cos(θ2)n1cos(θ1)ts2 T_s = \frac{n_2 \cos(\theta_2)}{n_1 \cos(\theta_1)} |t_s|^2

  • p-极化的反射率和透射率
    Rp=rp2 R_p = |r_p|^2
    Tp=n2cos(θ2)n1cos(θ1)tp2 T_p = \frac{n_2 \cos(\theta_2)}{n_1 \cos(\theta_1)} |t_p|^2

使用示例

假设光从空气(折射率 n1=1n_1 = 1)射入玻璃(折射率 n2=1.5n_2 = 1.5),入射角为 θ1=30\theta_1 = 30^\circ。首先计算折射角 θ2\theta_2 使用斯涅尔定律:

n1sin(θ1)=n2sin(θ2)n_1 \sin(\theta_1) = n_2 \sin(\theta_2)

sin(θ2)=n1sin(θ1)n2=1sin(30)1.5=0.51.5=13\sin(\theta_2) = \frac{n_1 \sin(\theta_1)}{n_2} = \frac{1 \cdot \sin(30^\circ)}{1.5} = \frac{0.5}{1.5} = \frac{1}{3}

θ2=sin1(13)19.47\theta_2 = \sin^{-1}\left(\frac{1}{3}\right) \approx 19.47^\circ

计算s-极化和p-极化的反射率:

  • s-极化:
    rs=1cos(30)1.5cos(19.47)1cos(30)+1.5cos(19.47) r_s = \frac{1 \cdot \cos(30^\circ) - 1.5 \cdot \cos(19.47^\circ)}{1 \cdot \cos(30^\circ) + 1.5 \cdot \cos(19.47^\circ)}
    rs=10.8661.50.94110.866+1.50.9410.8661.4110.866+1.4110.5452.2770.239 r_s = \frac{1 \cdot 0.866 - 1.5 \cdot 0.941}{1 \cdot 0.866 + 1.5 \cdot 0.941} \approx \frac{0.866 - 1.411}{0.866 + 1.411} \approx \frac{-0.545}{2.277} \approx -0.239
    Rs=(0.239)20.057 R_s = (-0.239)^2 \approx 0.057

  • p-极化:
    rp=1.5cos(30)1cos(19.47)1.5cos(30)+1cos(19.47) r_p = \frac{1.5 \cdot \cos(30^\circ) - 1 \cdot \cos(19.47^\circ)}{1.5 \cdot \cos(30^\circ) + 1 \cdot \cos(19.47^\circ)}
    rp=1.50.86610.9411.50.866+10.9411.2990.9411.299+0.9410.3582.2400.160 r_p = \frac{1.5 \cdot 0.866 - 1 \cdot 0.941}{1.5 \cdot 0.866 + 1 \cdot 0.941} \approx \frac{1.299 - 0.941}{1.299 + 0.941} \approx \frac{0.358}{2.240} \approx 0.160
    Rp=(0.160)20.026 R_p = (0.160)^2 \approx 0.026

由此可见,不同极化状态下的反射率是不同的,这在光学设计中非常重要。

赞赏