【笔记】Ref-Nerf
2022/7/13 6:22:29
本文主要是介绍【笔记】Ref-Nerf,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
Ref-NeRF
介绍
NeRF在镜面反射上,有着许多artifacts,有两个原因。一个是,用外向辐射作为视角,不好插值;另一个是,NeRF会用各向同相的内部光源来假装镜面反射,结果是半透明或雾状的artifacts。
Ref-NeRF用反射光作为输入,因为表面的取向不影响它,因此MLP能在上面更好地插值。
一个问题是,反射光需要找法向量,而NeRF生成的geometry不够好,上面的法向量噪声过多。Ref-NeRF在volume density上加了一个新的正则化器,激励volume density集中在表面上,同时获得更好的法向量。
Structured View-Dependent Apperance
反射光
用入射光和法向量求反射光(入射光其实是发射的)
\[\mathbf{\omega_r} = 2(\mathbf{\omega_o}\cdot \mathbf{n})\mathbf{n} -\mathbf{\omega_o} \]Integrated Directional Encoding
在现实中,辐射不能仅仅用反射方向来表示,考虑到粗糙和光滑材质的区别,引入了Integrated Directional Encoding (IDE) 让MLP能表示材质的粗糙度。
首先,不用sin函数做encoding了,改用一系列球谐函数,保证了球面上的不变性。
接下来,用encode反射向量分布的方法,让MLP可以推理材质粗糙度,并引入参数\(\kappa\)表征粗糙度。
漫反射和镜面反射颜色
通过解耦漫反射和镜面反射的组成,进一步简化外向辐射的函数。根据定义,漫反射颜色只与位置有关,将真实颜色拆解为
\[\mathbf{c} = \gamma (\mathbf{c}_d+\mathbf{s}\odot \mathbf{c}_s) \]其中\(\mathbf{c}_d\)是漫反射颜色,\(\mathbf{s}\)是spatial MLP输出颜色,\(\mathbf{c}_s\)是directional MLP输出颜色。
额外的自由度
将spatial MLP的输出b,作为directional MLP的输入,让它更好地表征位置变化带来的影响。
准确的法向量
好的反射向量,依赖于好的法向量,然而NeRF出来的volume density很凌乱,而且NeRF会用内部各向同性的光源来假装反射光,这是一个局部最优解。
为了解决第一个问题,即法向量噪声多的问题,Ref-NeRF使用预测的法向量来计算反射方向,从spatial MLP中得到一个三维向量,正则化以后作为预测的法向量。MLP预测的法向量比梯度算出来的更光滑,因为梯度算子在MLP的插值卷积核上是一个高通滤波器的作用。
为了解决第二个问题,使用正则函数来惩罚雾状表面,从而避免NeRF用藏在半透明面后的内部发光源来解释镜面反射。
这篇关于【笔记】Ref-Nerf的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23Springboot应用的多环境打包入门
- 2024-11-23Springboot应用的生产发布入门教程
- 2024-11-23Python编程入门指南
- 2024-11-23Java创业入门:从零开始的编程之旅
- 2024-11-23Java创业入门:新手必读的Java编程与创业指南
- 2024-11-23Java对接阿里云智能语音服务入门详解
- 2024-11-23Java对接阿里云智能语音服务入门教程
- 2024-11-23JAVA对接阿里云智能语音服务入门教程
- 2024-11-23Java副业入门:初学者的简单教程
- 2024-11-23JAVA副业入门:初学者的实战指南