当前位置: 首页 > news >正文

【三维重建NeRF(三)】Mip-NeRF论文解读

本文结合深蓝学院课程学习和本人的理解,欢迎交流指正

文章目录

    • Mip-NeRF流程简述
    • 混叠问题与MipMap
    • Mip-NeRF提出的解决办法
    • 圆锥台近似计算与集成位置编码(IPE)

Mip-NeRF流程简述

Mip-NeRF的大体流程和NeRF基本是一样的,NeRF介绍
创新的部分就是针对NeRF出现的混叠问题,提出了用圆锥体来取代光线,NeRF一条射线对应Mip-NeRF一个圆锥体,NeRF一个采样点对应Mip-NeRF一个圆锥截台。利用三维高斯逼近圆锥截台(后面简称截台),得到高斯球内所有三维点位置编码的期望值,叫做集成位置编码(IPE)。然后将集成位置编码输入MLP,根据MLP的输出结果进行体渲染,后面的流程和NeRF没有大的区别。另外,Mip-NeRF简化了网络,不同于NeRF有一个粗网络和一个细网络,Mip-NERF只需要一个网络完成重建。

混叠问题与MipMap

奈奎斯特准则
要了解混叠问题首先需要知道奈奎斯特准则:在采样的过程中如果要让原始信号不丢失,那采样频率f必须大于2B,B是信号的最大频率。当f < 2B的时候,原本的高频信号会被混叠成低频信号,跟原有的低频信号产生了混合,导致产生锯齿、伪影等现象。由f > 2B有B < f / 2,所以产生混叠现象的一种解决方案就是在采样之前使用低通滤波器去除高于采样频率一半的频率分量。
低通滤波器
低通滤波器去噪的基本思想就是把噪声和周围的像素加权求和,达到一种平滑的效果。高斯滤波器就是一种常用的低通滤波器。
在这里插入图片描述
上面5*5的权重值,叫做滤波核,权重值是将滤波核坐标(x,y)和σ值带入上面公式计算得出的。σ的值越大,像素去除噪声能力越强,也越容易对有效信号产生干扰。图像上处于滤波核中间位置的值就是根据周围像素颜色乘权值的和得来的。
但图像越大滤波的时间越长,如果每次采样之前都要先进行滤波会降低系统性能,所以提出了一种策略叫做MipMap。
MipMap
MipMap(也称为金字塔纹理或多级渐进纹理)。它由一系列逐渐降低分辨率的纹理图像组成,每个级别都是上一个级别的一半大小。基本思想是:随着观察角度的增大,物体表面的细节应该相应减少,这样可以提高渲染效率并减少视觉伪影。
就是指根据一张大图平滑采样生成一系列小图,摄像机拉到某一个尺度,就用对应尺度分辨率的图片采样。预先计算各种分辨率的图像,这样在拉动摄像机的时候,就可以直接找到对应分辨率的图像进行细微的处理,减少计算量。

Mip-NeRF提出的解决办法

对于原始NeRF中已经训练好的模型,当摄像机往远离物体方向移动时,渲染结果就会存在混叠问题,因为NeRF是在固定尺度下进行训练的,当图片分辨率变化时没有自适应性。

那么在训练数据中增加摄像机远离物体方向的样本,可以解决这个问题吗?答案是不能。
在神经网络不变的情况下,对于同一个物体,摄像机往远离物体方向移动后体渲染得到的像素颜色C‘和原来体渲染得到的C是不同的。这样在训练的过程中,由于摄像机远近的不同,对于同一个图像我们希望神经网络输出的值是C’或C,是不统一的,在这种情况下,神经网络就会输出介于C’和C之间的值,导致增加远离物体的样本以后,模型在两种情况上的效果都不理想,可以参考下图(b)的效果。
在这里插入图片描述出现混叠的原因主要是采样频率过低,那么用超采样可以解决问题吗?可以抗混叠,但计算量太大,因此这种方法也不理想。
所以mip-NeRF提出的就是用低通滤波器来解决问题,用圆锥体取代光线。
在这里插入图片描述把每个圆锥截台里所有的像素做加权平均,这样考虑了邻域的像素,结果会更加平滑,再进行体渲染,就可以去除混叠。
但是如果计算神经网络中输出的截台上每一个像素点的σ和C值,再求平均,那计算量就太大了。
所以我们首先计算每个圆锥截台上所有点位置编码的平均值,然后送入神经网络,得到输出σ和C值。这样对于每一个圆锥截台,都会得到一个平滑后的σ和C值,再根据这些σ和C值实现体渲染,因此说NeRF的一个采样点对应Mip-NeRF一个圆锥截台。

圆锥台近似计算与集成位置编码(IPE)

首先我们要判断哪些点位于圆锥截台内,给出了一个公式,如果把三维点代入F(x,▪)=1的话,点x就是圆锥截台内的点。F(x,▪)是一个指示函数,通常表示为 1{⋅},具体来说,如果括号中的条件为真,则函数值为1;如果条件为假,则函数值为0。
关于期望的计算,F()可以理解为截台内点的个数,乘以每个点的位置编码γ(x),再除以点的个数得到位置编码,这个位置编码也叫集成位置编码。
在这里插入图片描述该公式括号内包含的两个条件需要同时满足,它们意义分别是:

  1. 点x处于t_0和t_1的中间。
  2. 点x处于图示圆锥体夹角范围内。

这两条就确定了点x的位置是处于截台内的。
但是截台位置编码期望的计算是比较困难的,因此我们要利用3D高斯逼近圆台,3D高斯是一个球,使x服从μ和σ的一个分布。为了找到这个合适的高斯球,定义了t_μ和t_σ,r是一个固定的值,这是根据圆半径计算公式得到的。
在这里插入图片描述将其转换到世界坐标系下,这样我们就能得到高斯球内位置坐标x的期望,但我们需要的是位置编码γ(x)的期望值。
为了便于表达,我们将位置编码写成矩阵的形式,很多网络中会将π直接去掉,这不会对性能产生很大的影响。
在这里插入图片描述要计算γ(x)的期望值,可以先计算sin( p)和cos( p)的期望,p服从是高斯分布,计算公式如上图。
得到了sin§和cos§的计算公式,那我们要求的E(γ(x))就是要求得[Esin(px), Ecos(px)]。
X ~ (μ , Σ)的均值分布,那么Px服从的分布如下图公式,继而可以得到集成位置编码的期望计算公式。
在这里插入图片描述这样我们就可以得到最终的集成位置编码计算公式,将其输入神经网络得到对应的颜色和体密度,再进行渲染。
mip-nerf采用集成位置编码,摄像机距离物体较近时,就会学习到高频信息。当摄像机距离变远时,高频位置信息就会被平滑,避免出现伪影,这样就实现了自适应。
NeRF有两套网络。一个均匀采样的粗网络和一个在均匀采样的基础上在体密度分布较多的地方多采样的细网络。Mip-NeRF由于圆锥截台的存在,所有的领域信息都会被考虑上,因此只需要一个网络。

相关文章:

【三维重建NeRF(三)】Mip-NeRF论文解读

本文结合深蓝学院课程学习和本人的理解&#xff0c;欢迎交流指正 文章目录 Mip-NeRF流程简述混叠问题与MipMapMip-NeRF提出的解决办法圆锥台近似计算与集成位置编码(IPE) Mip-NeRF流程简述 Mip-NeRF的大体流程和NeRF基本是一样的&#xff0c;NeRF介绍 创新的部分就是针对NeRF…...

安卓SystemServer进程详解

目录 一、概述二、源码分析2.1 SystemServer fork流程分析2.1.1 [ZygoteInit.java] main()2.1.2 [ZygoteInit.java] forkSystemServer()2.1.3 [Zygote.java] forkSystemServer()2.1.4 [com_android_internal_os_Zygote.cpp]2.1.5 [com_android_internal_os_Zygote.cpp] ForkCom…...

Android studio 连接 adb传输文件到电脑

前提是已经连接到adb window R&#xff1a; 打开控制台adb devices&#xff1a;可以查看已经连接的设备adb pull /storage/emulated/0/Download/aa.png C:\Users\Administrator\Desktop&#xff1a;拉取连接设备的文件 aa.png 到电脑桌面上 (在电脑控制台进行拉取操作) 如果…...

Web学习篇(二)

命令执行漏洞 一、常用的函数 1、eval() 例: eval(string $code) 把字符串code作为PHP代码执行 2、assert() assert( mixed $assertion [, string $description ]) 检查一个断言是否为 FALSE,如果 assertion 是字符串,它将会被 assert()当做 PHP 代码来执行。 3、p…...

在Linux/Ubuntu/Debian系统中使用 `tar` 压缩文件

在Linux/Ubuntu/Debian系统中使用 tar 压缩文件 tar 命令是用于在类 Unix 操作系统中创建文件和目录存档的强大实用程序。 基本存档创建 要创建文件夹的简单存档&#xff0c;请使用以下命令&#xff1a; tar -cf ./my-archive.tar ./my-folder/此命令将创建一个名为 my-arc…...

Idea-Linux远程开发部署

第一步&#xff1a;File->Remote Development 第二步&#xff1a; 第三步&#xff1a; 第四步&#xff1a;在Host位置填写Linux虚拟机的IP地址&#xff0c;在Username、Password填写对应的账号密码后点击Test Connection测试连接。 第五步&#xff1a; 第六步&#xff1a;在…...

智能硬件会是下一个风口行业吗?

“风口行业”一直是人们热捧的择业目标&#xff0c;曾经红极一时房地产行业&#xff0c;此时已成沉舟侧畔之势&#xff0c;也意味着一个又一个行业时代的更迭。 随着5G时代的到来&#xff0c;“智能化”成了人们热议的话题&#xff0c;因为大家都懂&#xff1a;顺势而为才是王…...

mysql like 查询优化

1.如果我们查询的时候用like 模糊查询%a%&#xff0c;数据量大了会查询全局&#xff0c;效率很低 SELECT * FROM Customers WHERE CustomerName LIKE %a%; 优化&#xff1a; 不会破坏索引 -步骤-:创建适合Like查询的索引ALTER TABLE users ADD INDEX idx_username (usernam…...

3389连接器,3389连接器如何进行安全设置

在计算机网络领域&#xff0c;3389端口作为Windows系统默认的远程桌面协议&#xff08;RDP&#xff09;端口&#xff0c;在远程办公、技术支持等场景中发挥着重要作用。然而&#xff0c;由于其广泛的使用和直接暴露在互联网上的特性&#xff0c;3389端口也极易成为黑客攻击的目…...

代码随想录训练营Day56:Leetcode647、516

Leetcode647&#xff1a; 问题描述&#xff1a; 给你一个字符串 s &#xff0c;请你统计并返回这个字符串中 回文子串 的数目。 回文字符串 是正着读和倒过来读一样的字符串。 子字符串 是字符串中的由连续字符组成的一个序列。 示例 1&#xff1a; 输入&#xff1a;s &q…...

LLM主要类别架构

LLM主要类别架构介绍 LLM主要类别 LLM本身基于transformer架构。自2017年&#xff0c;attention is all you need诞生起&#xff0c;transformer模型为不同领域的模型提供了灵感和启发。基于原始的Transformer框架&#xff0c;衍生出了一系列模型&#xff0c;一些模型仅仅使用e…...

试比较GD32E230系列与L233/235芯片在IIC上使用温度传感器SHT40的异同

不说废话&#xff0c;上代码&#xff0c;不同之处直接用宏 展开 1. 首先是i2c 时钟配置 函数有些出入 void sensirion_i2c_attribute_config(){#ifdef GD32E230/* I2C clock configure */i2c_clock_config(I2C1, 100000, I2C_DTCY_2);/* I2C address configure */i2c_mode_a…...

超强算力 Orange Pi Kunpeng Pro 开发板基础测评与体验

目录 开箱体验资源简介系统启动连接网络登录系统通过桌面登录通过串口登录通过 SSH 登录配置散热风扇 算力测试MNIST示例MBNET示例 体验总结 大家好&#xff0c;我是 Hello 阿尔法&#xff0c;有幸接到 CSDN 的邀请参与 Orange Pi Kunpeng Pro 开发板的测评活动&#xff0c;本文…...

vs - ms官方查看pdb文件内容的例子工程

文章目录 vs - ms官方查看pdb文件内容的例子工程概述笔记END vs - ms官方查看pdb文件内容的例子工程 概述 不管哪个版本的VS&#xff0c;生成debug版工程时&#xff0c;除了工程自己的.pdb还会有vc*.pdb. e.g. vc.pdb, vc70.pdb, vc90.pdb, vc120.pdb, vc140.pdb, vc142.pdb,…...

【excel】设置二级可变联动菜单

文章目录 【需求】在一级菜单选定后&#xff0c;二级菜单联动显示一级菜单下的可选项【步骤】step1 制作辅助列1.列转行2.在辅助列中匹配班级成员 step2 名称管理器step3 制作二级下拉菜单step4 消除二级菜单中的空白 【总结】 之前做完了 【excel】设置可变下拉菜单&#xff…...

8月1-3日西安国际储能产业博览会

同期举办&#xff1a;2024西部国际氢能源及燃料电池产业博览会 2024年12月5-7日 西安国际会展中心 一、展会概况&#xff1a; 在能源转型和“双碳”目标的推动下&#xff0c;风电、太阳能、氢能等能源产业得到快速的发展&#xff0c;新型储能日益成为我国建设新型能源体…...

MySQL事务处理:ACID属性基础与实现概览

前言 ​ 本文核心思想就是介绍一下 Mysql ACID 的实现&#xff0c;至于事务、锁、redo 的底层结构及实现原理&#xff0c;后面会单独出文章介绍。之所以这样是不希望一篇文章过长&#xff0c;在闲暇时间就可轻易掌握一个知识点。 ACID 介绍 ​ ACID 是数据库管理系统&#x…...

PostgreSQL 修改表结构卡住不动

目录 1 问题2 实现 1 问题 今天遇到的一个问题记录一下&#xff0c;因为系统上的一个改动需要同步脚本至测试库上&#xff0c;具体的脚本内容也很简单,就是修改了某张表的一个字段。但是无论怎么操作都是一直卡住&#xff0c;表的数据量很小就十几条数据所以初步怀疑是表被锁了…...

wvp-gb28181-pro搭建流媒体服务器,内存占用过高问题

直接给出解决办法,端口暴露的太多了,暴露了500个端口导致从3g---->11g 遇到的问题,直接使用镜像《648540858/wvp_pro:latest》在宿主机上运行,如我下面的博客 https://blog.csdn.net/weixin_41012767/article/details/137112338?spm=1001.2014.3001.5502 docker run …...

项目-双人五子棋对战: websocket的讲解与使用 (1)

项目介绍 接下来, 我们将制作一个关于双人五子棋的项目, 话不多说先来理清一下需求. 1.用户模块 用户的注册和登录 管理用户的天梯分数, 比赛场数, 获胜场数等信息. 2.匹配模块 依据用户的天梯积分, 实现匹配机制. 3.对战模块 把两个匹配到的玩家放到同一个游戏房间中, 双方通…...

3.3.1_1 检错编码(奇偶校验码)

从这节课开始&#xff0c;我们会探讨数据链路层的差错控制功能&#xff0c;差错控制功能的主要目标是要发现并且解决一个帧内部的位错误&#xff0c;我们需要使用特殊的编码技术去发现帧内部的位错误&#xff0c;当我们发现位错误之后&#xff0c;通常来说有两种解决方案。第一…...

python/java环境配置

环境变量放一起 python&#xff1a; 1.首先下载Python Python下载地址&#xff1a;Download Python | Python.org downloads ---windows -- 64 2.安装Python 下面两个&#xff0c;然后自定义&#xff0c;全选 可以把前4个选上 3.环境配置 1&#xff09;搜高级系统设置 2…...

mongodb源码分析session执行handleRequest命令find过程

mongo/transport/service_state_machine.cpp已经分析startSession创建ASIOSession过程&#xff0c;并且验证connection是否超过限制ASIOSession和connection是循环接受客户端命令&#xff0c;把数据流转换成Message&#xff0c;状态转变流程是&#xff1a;State::Created 》 St…...

【SpringBoot】100、SpringBoot中使用自定义注解+AOP实现参数自动解密

在实际项目中,用户注册、登录、修改密码等操作,都涉及到参数传输安全问题。所以我们需要在前端对账户、密码等敏感信息加密传输,在后端接收到数据后能自动解密。 1、引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId...

SpringBoot+uniapp 的 Champion 俱乐部微信小程序设计与实现,论文初版实现

摘要 本论文旨在设计并实现基于 SpringBoot 和 uniapp 的 Champion 俱乐部微信小程序&#xff0c;以满足俱乐部线上活动推广、会员管理、社交互动等需求。通过 SpringBoot 搭建后端服务&#xff0c;提供稳定高效的数据处理与业务逻辑支持&#xff1b;利用 uniapp 实现跨平台前…...

2025 后端自学UNIAPP【项目实战:旅游项目】6、我的收藏页面

代码框架视图 1、先添加一个获取收藏景点的列表请求 【在文件my_api.js文件中添加】 // 引入公共的请求封装 import http from ./my_http.js// 登录接口&#xff08;适配服务端返回 Token&#xff09; export const login async (code, avatar) > {const res await http…...

【AI学习】三、AI算法中的向量

在人工智能&#xff08;AI&#xff09;算法中&#xff0c;向量&#xff08;Vector&#xff09;是一种将现实世界中的数据&#xff08;如图像、文本、音频等&#xff09;转化为计算机可处理的数值型特征表示的工具。它是连接人类认知&#xff08;如语义、视觉特征&#xff09;与…...

大数据学习(132)-HIve数据分析

​​​​&#x1f34b;&#x1f34b;大数据学习&#x1f34b;&#x1f34b; &#x1f525;系列专栏&#xff1a; &#x1f451;哲学语录: 用力所能及&#xff0c;改变世界。 &#x1f496;如果觉得博主的文章还不错的话&#xff0c;请点赞&#x1f44d;收藏⭐️留言&#x1f4…...

Android第十三次面试总结(四大 组件基础)

Activity生命周期和四大启动模式详解 一、Activity 生命周期 Activity 的生命周期由一系列回调方法组成&#xff0c;用于管理其创建、可见性、焦点和销毁过程。以下是核心方法及其调用时机&#xff1a; ​onCreate()​​ ​调用时机​&#xff1a;Activity 首次创建时调用。​…...

以光量子为例,详解量子获取方式

光量子技术获取量子比特可在室温下进行。该方式有望通过与名为硅光子学&#xff08;silicon photonics&#xff09;的光波导&#xff08;optical waveguide&#xff09;芯片制造技术和光纤等光通信技术相结合来实现量子计算机。量子力学中&#xff0c;光既是波又是粒子。光子本…...