当前位置:   article > 正文

NeRF之体渲染 (Volume Rendering)理解

体渲染

 光子与粒子

     为了建模这种非刚性物体的渲染,体渲染把气体等物质抽象成一团飘忽不定的粒子群。光线在穿过这类物体时,其实就是光子在跟粒子发生碰撞的过程。

        下图是体渲染建模的示意图。光沿直线方向穿过一堆粒子 (粉色部分),如果能计算出每根光线从最开始发射,到最终打到成像平面上的辐射强度,我们就可以渲染出投影图像。而体渲染要做的,就是对这个过程进行建模。为了简化计算,我们就假设光子只跟它附近的粒子发生作用,这个范围就是图中圆柱体大小的区间。

体渲染把光子与粒子发生作用的过程,进一步细化为四种类型:

  • 吸收 (absorption):光子被粒子吸收,会导致入射光的辐射强度减弱

  • 放射 (emission):粒子本身可能发光,比如气体加热到一定程度就会离子化,变成发光的「火焰」。这会进一步增大辐射强度;

  • 外散射 (out-scattering):光子在撞击到粒子后,可能会发生弹射,导致方向发生偏移,会减弱入射光强度;

  • 内散射 (in-scattering):其他方向的光子在撞到粒子后,可能和当前方向上的光子重合,从而增强当前光路上的辐射强度。

出射光与入射光之间的变化量,可以表示为这四个过程的叠加: 

吸收 (absorbing)

我们先剖析下吸收的过程。

(文章最后提供了常微分方程的求解方法,感兴趣的读者可自行查阅)。

公式 (3) 有丰富的物理意义。

不同光学厚度下,光线透射度对比

放射 (emission)

除了吸收之外,粒子本身也可能发光。

外散射 (out-scattering)

粒子除了吸收光子,也可能会弹射光子,这个过程称为外散射,即光子被弹射出原本的光路,导致光线强度减弱。

内散射 (in-scattering)

光子可以被弹射走,自然就有其他光路的光子被弹射到当前光路,这一过程就是内散射。

内散射的过程比外散射又更加复杂,因为弹射到当前光路的光子可能来自多条不同的光路,因此需要综合考虑其他光路的辐射强度以及各种弹射角度。

体渲染方程

我们把以上四个过程都综合到一个公式中:

计算机中的体渲染

公式 (11) 在计算机中是无法表达的,需要进一步离散化。

常微分方程求解

体渲染公式 (9) 是一种很典型的常微分方程 (ordinary differential equation, ODE)。

总结

这篇文章基本把体渲染建模的原理和公式推导介绍完了,并顺带推出了 NeRF 中最重要的两个公式。从中可以看出,NeRF 对体渲染做了一些简化,但整体上遵循体渲染的模型框架。NeRF 所说的神经辐射场,其实就是用网络来建模场景中的光学厚度以及自发光颜色等信息,这也是 NeRF 最重要的贡献。

下一章会进一步深入 NeRF 的建模过程,看看如何把深度学习融入到整个体渲染框架中,从而实现三维重建。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/268924
推荐阅读
相关标签
  

闽ICP备14008679号