【论文精读】NeRF中的数学公式推导

这篇具有很好参考价值的文章主要介绍了【论文精读】NeRF中的数学公式推导。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

这篇文章用于记录NeRF论文中数学公式的推导过程。
论文里的第一个公式就很硬核,展示了相机射线的期望颜色的计算方法。
5D 神经辐射场将场景表示为空间中任意点的体积密度和定向发射的辐射。文章使用经典体积渲染的原理,来渲染任何穿过场景的光线的颜色。体积密度 σ ( x ) σ(x) σ(x)可以解释为射线终止在位置 x x x 处无穷小粒子的微分概率。而期望的颜色 C ( r ) C(r) C(r)(相机光线 r ( t ) = o + t d r(t) = o + td r(t)=o+td,近处远处界限为 t n t_{n} tn t f t_{f} tf)可以被表示为:
nerf数学推导,NeRF,计算机视觉
这个结论来源于1995年Max的一篇文章Optical models for direct volume rendering,是体渲染的开山之作。这篇文章将光线模型分为三类,我们逐个看一看。

光线吸收模型

简单来说就是吸收它们拦截的所有光,却不散射或发射任何光。假设粒子是相同的球体,半径为 r r r,投影面积 A = π r 2 A =πr^{2} A=πr2,设 ρ ρ ρ 为每单位体积的粒子数。这个模型的传递方程是

d I d s = − ρ ( s ) A I ( s ) = − τ ( s ) I ( s ) \frac{dI}{ds} = -\rho(s)AI(s)=-\tau(s)I(s) dsdI=ρ(s)AI(s)=τ(s)I(s)

其中 s s s是沿光流方向的光线的长度, I ( s ) I(s) I(s) 是距离 s s s 处的光强度, ρ \rho ρ是光点密度。 τ ( s ) = ρ ( s ) A \tau(s) = \rho(s)A τ(s)=ρ(s)A 称为消光系数,反映了光被遮挡的速率。整理并且等式两边同时积分:
1 I ( s ) d I d s = − τ ( s ) \frac{1}{I(s)}\frac{dI}{ds}=-\tau(s) I(s)1dsdI=τ(s)
∫ 0 s 1 I ( s ) d I = ∫ 0 s − τ ( t ) d t \displaystyle \int^{s}_{0}{\frac{1}{I(s)}dI} = \displaystyle \int^{s}_{0}{-\tau(t)dt} 0sI(s)1dI=0sτ(t)dt
l n I ( s ) I ( 0 ) = ∫ 0 t − τ ( t ) d t ln\frac{I(s)}{I(0)}= \displaystyle \int^{t}_{0}{-\tau(t)dt} lnI(0)I(s)=0tτ(t)dt

这个微分方程的解是:

I ( s ) = I 0 e x p ( − ∫ 0 s τ ( t ) d t ) I(s)=I_{0}exp(-\displaystyle \int^{s}_{0}{\tau(t)dt}) I(s)=I0exp(0sτ(t)dt)

其中, I 0 I_{0} I0是在 s = 0 s=0 s=0处的强度,而 T ( s ) = e x p ( − ∫ 0 s τ ( t ) d t ) T(s)=exp(-\displaystyle \int^{s}_{0}{\tau(t)dt}) T(s)=exp(0sτ(t)dt)是介于 0 0 0 s s s 之间的介质的透明度。在体渲染中,消光系数 τ \tau τ通常称为不透明度。

光线发射模型

介质还可以通过外部照明的发射或反射来增加光线。
如果粒子是透明的,但以每单位投影面积的强度 C 发光,这个 I ( s ) I(s) I(s)的微分方程为:

d I d s = C ( s ) ρ ( s ) A = C ( s ) τ ( s ) = g ( s ) \frac{dI}{ds} = C(s)\rho(s)A=C(s)\tau(s)=g(s) dsdI=C(s)ρ(s)A=C(s)τ(s)=g(s)

这个 g ( s ) g(s) g(s)被叫做源项。
我们把式子可以变为:

d I = g ( s ) d s dI = g(s)ds dI=g(s)ds

对两边进行积分:

∫ 0 s d I = ∫ 0 s g ( s ) d s \displaystyle \int^{s}_{0}{dI} = \displaystyle \int^{s}_{0}{g(s)ds} 0sdI=0sg(s)ds

这个方程的解是:

I ( s ) = I 0 + ∫ 0 s g ( t ) d t I(s)=I_{0}+\displaystyle \int^{s}_{0}{g(t)dt} I(s)=I0+0sg(t)dt

其中 I 0 I_{0} I0 s = 0 s=0 s=0 处的光强度。

吸收发射模型

实际上,空间中的粒子会遮挡入射光,并添加自己的光。 因此,一个现实的微分方程应该包括源项 g ( s ) g(s) g(s)和衰减项 I ( s ) I(s) I(s) 。我们只需要将前两种模型进行简单的数值加和(微分方程右侧加在一起),就可以得到这个模型的传递方程:

d I d s = g ( s ) − τ ( s ) I ( s ) \frac{dI}{ds} =g(s)-\tau(s)I(s) dsdI=g(s)τ(s)I(s)

我们把 τ ( s ) I ( s ) \tau(s)I(s) τ(s)I(s)移到等式左边,然后都乘上 e x p ( ∫ 0 s τ ( t ) d t ) exp(\displaystyle \int^{s}_{0}{\tau(t)dt}) exp(0sτ(t)dt),得到:

( d I d s + τ ( s ) I ( s ) ) e x p ( ∫ 0 s τ ( t ) d t ) = g ( s ) e x p ( ∫ 0 s τ ( t ) d t ) (\frac{dI}{ds}+\tau(s)I(s))exp(\displaystyle \int^{s}_{0}{\tau(t)dt}) =g(s)exp(\displaystyle \int^{s}_{0}{\tau(t)dt}) (dsdI+τ(s)I(s))exp(0sτ(t)dt)=g(s)exp(0sτ(t)dt)

也可以表示为:

d d s ( I ( s ) e x p ( ∫ 0 s τ ( t ) d t ) ) = g ( s ) e x p ( ∫ 0 s τ ( t ) d t ) \frac{d}{ds}(I(s)exp(\displaystyle \int^{s}_{0}{\tau(t)dt}))=g(s)exp(\displaystyle \int^{s}_{0}{\tau(t)dt}) dsd(I(s)exp(0sτ(t)dt))=g(s)exp(0sτ(t)dt)

从volume边缘的 s = 0 s = 0 s=0 积分到眼睛的 s = D s = D s=D,我们得到:

I ( D ) e x p ( ∫ 0 D τ ( t ) d t ) − I 0 = ∫ 0 D ( g ( s ) e x p ( ∫ 0 s τ ( t ) d t ) ) d s I(D)exp(\displaystyle \int^{D}_{0}{\tau(t)dt})-I_{0} = \displaystyle \int^{D}_{0}{(g(s)exp(\displaystyle \int^{s}_{0}{\tau(t)dt}))ds} I(D)exp(0Dτ(t)dt)I0=0D(g(s)exp(0sτ(t)dt))ds

I 0 I_{0} I0移到等式右边,然后等式两边都乘上 e x p ( − ∫ 0 D τ ( t ) d t ) exp(-\displaystyle \int^{D}_{0}{\tau(t)dt}) exp(0Dτ(t)dt),我们可以得到 I D I_{D} ID

I ( D ) = I 0 e x p ( − ∫ 0 D τ ( t ) d t ) + ∫ 0 D ( g ( s ) e x p ( − ∫ s D τ ( t ) d t ) ) d s I(D) = I_{0}exp(-\displaystyle \int^{D}_{0}{\tau(t)dt})+ \displaystyle \int^{D}_{0}{(g(s)exp(-\displaystyle \int^{D}_{s}{\tau(t)dt}))ds} I(D)=I0exp(0Dτ(t)dt)+0D(g(s)exp(sDτ(t)dt))ds

第一项表示来自背景的光,乘以空间的透明度。第二项是源项 g ( s ) g(s) g(s) 在每个位置 s s s 贡献的积分,乘以位置 s s s到眼睛的透明度 T ′ ( s ) = e x p ( − ∫ s D τ ( x ) d x ) T'(s)=exp(-\displaystyle \int^{D}_{s}{\tau(x)dx}) T(s)=exp(sDτ(x)dx),那么:

I ( D ) = I 0 T ( D ) + ∫ 0 D g ( s ) T ′ ( s ) d s I(D) = I_{0}T(D)+\displaystyle \int^{D}_{0}{g(s)T'(s)ds} I(D)=I0T(D)+0Dg(s)T(s)ds

等式右侧第一项代表着从坐标 0 0 0点出发经过 0 0 0 D D D的介质入射到摄像机的光强,称之为背景光,在NeRF中,这一项考虑为 0 0 0。所以在NeRF中,这个式子化简为:
I ( D ) = ∫ 0 D g ( s ) T ′ ( s ) d s = ∫ 0 D T ′ ( t ) τ ( t ) c ( t ) d t I(D) = \displaystyle \int^{D}_{0}{g(s)T'(s)ds}=\displaystyle \int^{D}_{0}{T'(t)\tau(t)c(t)dt} I(D)=0Dg(s)T(s)ds=0DT(t)τ(t)c(t)dt
其中 T ′ ( t ) = e x p ( − ∫ t D τ ( x ) d x ) T'(t)=exp(-\displaystyle \int^{D}_{t}{\tau(x)dx}) T(t)=exp(tDτ(x)dx)

转变为NeRF当中的形式

上面的式子和NeRF原文中仍然有差别,这是因为NeRF和Max的文章中使用的坐标不同。Max文章中的坐标是让相机在D坐标,而无穷远点在0坐标,这样前面的推导就是正确的。但是NeRF中的坐标,是让相机在坐标原点,无穷远坐标就是无穷远,这样就可以得到:

I ( 0 ) = ∫ 0 ∞ g ( s ) T ′ ( 0 , s ) d s = ∫ 0 ∞ T ′ ( 0 , t ) τ ( t ) c ( t ) d t I(0) = \displaystyle \int^{\infty}_{0}{g(s)T'(0,s)ds}=\displaystyle \int^{\infty}_{0}{T'(0,t)\tau(t)c(t)dt} I(0)=0g(s)T(0,s)ds=0T(0,t)τ(t)c(t)dt

其中 T ′ ( 0 , t ) = e x p ( − ∫ 0 t τ ( x ) d x ) T'(0,t)=exp(-\displaystyle \int^{t}_{0}{\tau(x)dx}) T(0,t)=exp(0tτ(x)dx)

试想,其实在 0 0 0 ∞ \infty 不是所有位置上都有介质,介质总有边界,我们就可以定义近平面和远平面 t n t_{n} tn t f t_{f} tf,那么上述的积分其实可以写成:
I ( 0 ) = ∫ t n t f T ′ ( t n , t ) τ ( t ) c ( t ) d t I(0) = \displaystyle \int^{t_{f}}_{t_{n}}{T'(t_{n},t)\tau(t)c(t)dt} I(0)=tntfT(tn,t)τ(t)c(t)dt

NeRF中把消光系数(也就是不透明度) τ ( t ) \tau(t) τ(t)叫做体积密度 σ ( t ) \sigma(t) σ(t),那么上式可以整理为:

I ( 0 ) = ∫ t n t f T ′ ( t n , t ) σ ( t ) c ( t ) d t I(0) = \displaystyle \int^{t_{f}}_{t_{n}}{T'(t_{n},t)\sigma(t)c(t)dt} I(0)=tntfT(tn,t)σ(t)c(t)dt

如果记 T ( t ) = e x p ( ∫ t n t − σ ( t ) d t ) T(t)=exp(\displaystyle \int^{t}_{t_{n}}{-\sigma(t)dt}) T(t)=exp(tntσ(t)dt),那么上式可以变成:

I ( 0 ) = ∫ t n t f T ( t ) σ ( t ) c ( t ) d t I(0) = \displaystyle \int^{t_{f}}_{t_{n}}{T(t)\sigma(t)c(t)dt} I(0)=tntfT(t)σ(t)c(t)dt

而这一切讨论都是在固定射线的情况下,如果这个射线是动态的,我们还需要用 r ( t ) = o + t d r(t) = o + td r(t)=o+td来表示的话,那么 τ ( r ( t ) ) \tau(r(t)) τ(r(t))其实可以表示在 r r r这条射线上, t t t位置的体积密度, c ( r ( t ) , d ) c(r(t),d) c(r(t),d)就可以表示在 r r r这条射线上, t t t位置对 d d d方向的光强。那么上式可以进一步变为:

I ( 0 ) = ∫ t n t f T ( t ) σ ( r ( t ) ) c ( r ( t ) , d ) d t , w h e r e   T ( t ) = e x p ( − ∫ t n t σ ( r ( s ) ) d s ) I(0) = \displaystyle \int^{t_{f}}_{t_{n}}{T(t)\sigma(r(t))c(r(t),d)dt}, where~T(t)=exp(-\displaystyle \int^{t}_{t_{n}}{\sigma(r(s))ds}) I(0)=tntfT(t)σ(r(t))c(r(t),d)dt,where T(t)=exp(tntσ(r(s))ds)

因为我们研究的是 r r r这条射线上的光,眼睛位置固定不变,所以可以隐去相机位置 0 0 0,而添加参数 r r r来强调射线也是个变量,再用C替换掉光强I,所以最终式子变为:

C ( r ) = ∫ t n t f T ( t ) σ ( r ( t ) ) c ( r ( t ) , d ) d t , w h e r e   T ( t ) = e x p ( − ∫ t n t σ ( r ( s ) ) d s ) C(r) = \displaystyle \int^{t_{f}}_{t_{n}}{T(t)\sigma(r(t))c(r(t),d)dt}, where~T(t)=exp(-\displaystyle \int^{t}_{t_{n}}{\sigma(r(s))ds}) C(r)=tntfT(t)σ(r(t))c(r(t),d)dt,where T(t)=exp(tntσ(r(s))ds)

这就是原文当中的公式 1 1 1

把上式离散化,将近远平面区间等分为N份,在每个小区间内取样。
把积分符号变为求和, T ( t ) T(t) T(t)变为 T i T_{i} Ti c ( r ( t ) , d ) c(r(t),d) c(r(t),d)变为 c i c_{i} ci σ ( r ( t ) ) d t \sigma(r(t))dt σ(r(t))dt 变为 σ i δ i \sigma_{i}\delta_{i} σiδi,则得到最终的离散化公式。文章来源地址https://www.toymoban.com/news/detail-692830.html

到了这里,关于【论文精读】NeRF中的数学公式推导的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 论文解读Nerf2Mesh:基于Nerf的网格资产生成

    论文标题 Delicate Textured Mesh Recovery from NeRF via Adaptive Surface Refinement 简单翻译:通过Nerf恢复网格结构 论文下载地址,点这里 1:网格知识点介绍(可跳过): 3D模型有三种表达方式, 体素(Voxel),网格(Mesh),点云(Point Cloud) 、SDF等,但在实际渲染应用中,主流的表达方

    2024年02月02日
    浏览(51)
  • NeRF+SLAM论文阅读笔记

    input: RGB-D contribution: 1.场景表示:多分辨率哈希网格(加速保留高频特征) 2.编码方式:one-blob(提升未观察到区域的补全能力和一致性)编码方式根据场景表示(hash网格)制定 3.改进关键帧:支持在所有关键帧上执行BA Related Work iMap:由于实时性的要求,iMap使用系数采样

    2024年02月09日
    浏览(40)
  • 计算机视觉与图形学-神经渲染专题-NeRF汇总大礼包-I

    (说明:如果您认为下面的文章对您有帮助,请您花费一秒时间点击一下最底部的广告以此来激励本人创作,谢谢!!!) 原始NeRF论文 001 NeRF Representing Scenes as Neural Radiance Fields for View Synthesis NeRF综述类 002 NEURAL VOLUME RENDERING NERF AND BEYOND 025 Multimodal Image Synthesis and Editing: A Survey 数

    2024年02月09日
    浏览(38)
  • 【论文笔记 - NeRFs - CVPR/ICCV2021】NeRF泛化相关工作——pixelNeRF,IBRNet,MVSNeRF

    原论文 从标题中就可以看出,本文是将 NeRF 推广到少量甚至一张视图来建立神经辐射场(实验中还表明对于没有见过的类别中的对象也能做到)。作者指出NeRF是一种基于优化的方法,使用几何一致性作为唯一信号,类似于经典的多视图立体匹配。因此,每个场景都必须单独

    2024年02月09日
    浏览(26)
  • 计算机视觉与图形学-神经渲染专题-第一个基于NeRF的自动驾驶仿真平台

    如今,自动驾驶汽车可以在普通情况下平稳行驶,人们普遍认识到,真实的 传感器模拟将在通过模拟解决剩余的极端情况方面发挥关键作用 。为此,我们提出了一种基于神经辐射场(NeRF)的自动驾驶模拟器。与现有作品相比,我们的作品具有三个显着特点:(1) 实例感知

    2024年02月12日
    浏览(37)
  • Text-to-3D 任务论文笔记: Latent NeRF

    论文链接: https://arxiv.org/pdf/2211.07600.pdf 这篇文章做的task可以简单分为三个: 直接用文本生成3D; 用一个所谓的Sketch-Shape,让用户定义基础形状,然后加上文本,共同去引导生成3D;(Latent-NeRF主体) 用户给定mesh,可以给uv参数,也可以不给,然后引导latent-NeRF去给这个Me

    2024年02月10日
    浏览(36)
  • NeRFMeshing - 精确提取NeRF中的3D网格

    准确的 3D 场景和对象重建对于机器人、摄影测量和 AR/VR 等各种应用至关重要。 NeRF 在合成新颖视图方面取得了成功,但在准确表示底层几何方面存在不足。 推荐:用 NSDT编辑器 快速搭建可编程3D场景 我们已经看到了最新的进展,例如 NVIDIA 的 Neuralangelo,但也有 NeRFMeshing,它

    2024年02月11日
    浏览(43)
  • 计算机视觉与图形学-神经渲染专题-Seal-3D(基于NeRF的像素级交互式编辑)

    摘要 随着隐式神经表示或神经辐射场 (NeRF) 的流行,迫切需要与隐式 3D 模型交互的编辑方法,以完成后处理重建场景和 3D 内容创建等任务。虽然之前的作品从不同角度探索了 NeRF 编辑,但它们在编辑灵活性、质量和速度方面受到限制,无法提供直接的编辑响应和即时预览。

    2024年02月13日
    浏览(32)
  • 【论文解读】基于神经辐射场NeRF的像素级交互式编辑(Seal-3D)

    来源:投稿 作者:橡皮 编辑:学姐 论文链接:https://arxiv.org/pdf/2307.15131 项目主页:https://windingwind.github.io/seal-3d/ 随着隐式神经表征或神经辐射场(NeRF)的普及,人们迫切需要与隐式三维模型交互的编辑方法,以完成重建场景的后期处理和三维内容创建等任务。虽然以前的作

    2024年02月03日
    浏览(28)
  • 用NeRFMeshing精确提取NeRF网络中的3D网格

    准确的 3D 场景和对象重建对于机器人、摄影测量和 AR/VR 等各种应用至关重要。 NeRF 在合成新颖视图方面取得了成功,但在准确表示底层几何方面存在不足。 推荐:用 NSDT编辑器 快速搭建可编程3D场景 我们已经看到了最新的进展,例如 NVIDIA 的 Neuralangelo,但也有 NeRFMeshing,它

    2024年02月11日
    浏览(56)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包