【笔记】Ref-Nerf

Ref-NeRF

介绍

NeRF在镜面反射上,有着许多artifacts,有两个原因。一个是,用外向辐射作为视角,不好插值;另一个是,NeRF会用各向同相的内部光源来假装镜面反射,结果是半透明或雾状的artifacts。

Ref-NeRF用反射光作为输入,因为表面的取向不影响它,因此MLP能在上面更好地插值。

一个问题是,反射光需要找法向量,而NeRF生成的geometry不够好,上面的法向量噪声过多。Ref-NeRF在volume density上加了一个新的正则化器,激励volume density集中在表面上,同时获得更好的法向量。

Structured View-Dependent Apperance

反射光

用入射光和法向量求反射光(入射光其实是发射的)

ωr=2(ωon)nωo

Integrated Directional Encoding

在现实中,辐射不能仅仅用反射方向来表示,考虑到粗糙和光滑材质的区别,引入了Integrated Directional Encoding (IDE) 让MLP能表示材质的粗糙度。

首先,不用sin函数做encoding了,改用一系列球谐函数,保证了球面上的不变性。

接下来,用encode反射向量分布的方法,让MLP可以推理材质粗糙度,并引入参数κ表征粗糙度。

漫反射和镜面反射颜色

通过解耦漫反射和镜面反射的组成,进一步简化外向辐射的函数。根据定义,漫反射颜色只与位置有关,将真实颜色拆解为

c=γ(cd+scs)

其中cd是漫反射颜色,s是spatial MLP输出颜色,cs是directional MLP输出颜色。

额外的自由度

将spatial MLP的输出b,作为directional MLP的输入,让它更好地表征位置变化带来的影响。

准确的法向量

好的反射向量,依赖于好的法向量,然而NeRF出来的volume density很凌乱,而且NeRF会用内部各向同性的光源来假装反射光,这是一个局部最优解。

为了解决第一个问题,即法向量噪声多的问题,Ref-NeRF使用预测的法向量来计算反射方向,从spatial MLP中得到一个三维向量,正则化以后作为预测的法向量。MLP预测的法向量比梯度算出来的更光滑,因为梯度算子在MLP的插值卷积核上是一个高通滤波器的作用。

为了解决第二个问题,使用正则函数来惩罚雾状表面,从而避免NeRF用藏在半透明面后的内部发光源来解释镜面反射。

posted @   GhostCai  阅读(1125)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
点击右上角即可分享
微信分享提示