NeRF与3DGS学习

  • NeRF
    • 计算机视觉的问题
    • NeRF
      • 定义
      • 神经辐射场场景表示
      • 基于辐射场的体渲染
      • 分层采样
      • 优化神经辐射场
  • 基础知识
    • 初始化
    • SFM
    • 基础矩阵 & 本质矩阵 & 单应矩阵
      • 从已经估得的本质矩阵E,恢复出相机的运动R,t
      • SVD 分解

NeRF

NeRF资源

计算机视觉的问题

计算机视觉终极问题定义为:输入二维图像,输出是由二维图像"重建"出来的三维物体的位置与形状

NeRF

定义

环境:静态场景表示为一个连续的 5D 函数
输出:输出空间中每个点 (x, y, z) 在各个方向 (θ, φ) 上的辐射度,以及每个点的密度
方法:优化了一个没有任何卷积层的深度全连接神经网络(通常称为多层感知机或 MLP),通过从单个 5D 坐标 (x, y, z, θ, φ) 回归到单个体积密度和与视图相关的 RGB 颜色来表示这个函数
步骤:
1)让相机光线穿过场景以生成一组采样的 3D 点
2)使用这些点及其对应的 2D 观看方向作为神经网络的输入,以生成一组输出颜色和密度(这组颜色和密度对应采样的3D点)
3)使用经典的体渲染技术将这些颜色和密度累积成 2D 图像
优化模型:使用梯度下降来优化这个模型,同时最小化每个观察到的图像与从我们的表示中渲染的相应视图之间的误差。跨多个视图最小化这种误差会促使网络通过为包含真实底层场景内容的位置分配高体积密度和准确颜色来预测场景的连贯模型。

神经辐射场场景表示

场景函数:连续场景表示为一个 5D 向量值函数
函数输入:** 3D 位置 x=(x,y,z) 和 2D 观看方向d (θ,ϕ)**
函数输出:发射颜色 c=(r,g,b) 和体积密度 σ
全连接多层卷积深度神经网络:MLP 网络 FΘ​:(x,d)→(c,σ) 近似这个连续的 5D 场景表示,并优化其权重 Θ
目标:每个输入的 5D 坐标映射到对应的体积密度σ和方向发射颜色c
预测函数:体积密度 σ 预测为位置 x 的函数 | RGB 颜色 c 作为位置x和观看方向d的函数
网络实现:(多阶段)
1. MLP FΘ​第一阶段使用8 个全连接层(采用 ReLU 激活函数,每层 256 个通道)处理输入的 3D 坐标 x,输出输出 σ 和一个 256 维的特征向量
2. 第二阶段:该特征向量与相机光线的观看方向连接并传递到一个**额外的全连接层(采用 ReLU 激活函数,128 个通道)**该层输出与视图相关的 RGB 颜色
(下图展示:场景分别在海面以及船面是连续场可微分的——>平滑过渡)
请添加图片描述

基于辐射场的体渲染

利用体渲染技术从神经辐射场中合成图像——体渲染通过数值积分将 3D 体积密度和发射颜色投影到 2D 图像平面

下图解释了:沿光线采样点信息r(t),针对于每个采样点利用积分得到该点的累积颜色。

光线 r(t)=o+td(其中 o 是相机原点,d 是单位方向向量)的累积颜色 C(r) 可表示为:对于公式的理解:

  1. 体积密度 σ(r(t)):表示光线在点 r(t) 处被吸收或散射的概率密度——σ 越大,光线越容易在此处 “终止”
  2. 发射颜色 c(r(t),d):表示点 r(t) 在观察方向 d 上发射的颜色——物体表面的反射光 | 介质自身的发光
  3. 透射率 T(t):表示光线从起点 tn​ 传播到 t 时未被吸收的概率
    如果沿途密度 σ 越高,透射率 T(t) 越低(光线被吸收的概率越大)
    在这里插入图片描述
    所以最终的体积渲染公式得到的沿着整条光线累积的颜色可以理解为:其发射颜色与未被前方物体着当的概率加权
    将积分离散化为沿每条光线的有限和。我们在 [tn​,tf​] 范围内均匀采样 N 个点 t1​<t2​<⋯<tN​,并使用以下黎曼和近似
    在这里插入图片描述

分层采样

针对于每条光线执行粗采样和细采样的分层采样
粗网络:首先在 [tn​,tf​] 范围内均匀采样 Nc​ 个点,使用方程 (2) 计算粗渲染结果 Cc​®
细网络:在密度较高的区域(如表面附近)自适应地添加更多采样点 Nf
最终使用这些点重新计算细渲染结果 Cf​®,更精确地表示场景中的高频细节
(通过自适应的增加更多的采样点——具体通过定义一个PDF概率密度函数),并基于这个PDF函数增加额外的采样点:
如何通过PDF函数实现重要性采样

标准的均匀采样造成资源的浪费
在低密度区域(如空旷空间),采样点对最终颜色贡献极小。
在高密度区域(如物体表面),少量采样点可能无法准确捕捉颜色变化。

分层采样的目标是:在保持总采样点数不变的情况下自适应地将更多采样点分配到对最终结果贡献更大的区域(即高概率区域)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这里需要注意CDF函数是计算到当前位置的累加权重,通过均匀分布产生的随机数代表权重,对每个随机数找到对应的区间,然后用线性插值的方法,将这个随机数插值到对应的区间
在这里插入图片描述
最终插值得到新点的位置

优化神经辐射场

支持对高分辨率复杂场景的表示——第一项是输入坐标的位置编码|它帮助多层感知机表示高频函数|第二项是分层采样过程
在将输入传递给网络之前使用高频函数将输入映射到更高维空间,能够更好地拟合包含高频变化的数据
三角化基础点

位置编码——高维信息
并证明将 FΘ​ 重新构造为两个函数的组合 FΘ​=FΘ′​∘γ(一个是学习的,另一个不是)
γ 是从 R 到更高维空间 R2L 的映射,而 FΘ′​ 仍然只是一个常规的 MLP。形式上,我们使用的编码函数为:
γ§=(sin(20πp),cos(20πp),⋯,sin(2L−1πp),cos(2L−1πp))
γ(*)函数分别应用于 x 中的三个坐标值和笛卡尔观察方向单位向量 d 的三个分量

优化实现细节每个场景优化一个单独的神经连续体表示网络
输入捕获 RGB 图像数据集、相应的相机位姿和内参,以及场景边界
优化过程每个优化迭代中,我们从数据集中的所有像素中随机采样一批相机光线。我们沿着每条光线在 N 个随机点查询网络使用体渲染过程,利用这些样本渲染每条光线的颜色。损失只是渲染像素颜色真实像素颜色之间的总平方误差

基础知识

初始化

选择条件:选择足够的重叠区域——确保稳定提取特征点并进行鲁棒性匹配
高冗余性:周围有大量相邻的图像可以快速扩展重建网络

SFM

通过三维场景的多张图像,恢复出该场景的三维结构信息以及每张图像对应的摄像机参数
坐标系与相机参数:
从像平面到像素平面的单位变化是“从m到像素为单位
在这里插入图片描述
欧式结构恢复问题定义:
在这里插入图片描述
第一个相机坐标系与世界坐标系重叠
在这里插入图片描述

在这里插入图片描述
通过八点法估计基础矩阵,然后通过基础矩阵估计本质矩阵存在的问题(尺度、符号不能确定)
在这里插入图片描述

对于W矩阵和Z矩阵的定义:
在这里插入图片描述
对于R旋转矩阵的计算:
在这里插入图片描述
E的因式分解只是保证了矩阵分解为正交的,如果保证为旋转矩阵,需要保证行列式的值为正
在这里插入图片描述
真实的解:知道第一个和第二个摄像机的投影矩阵以及对应的三维点的坐标X,那么进行三角化,正确的解保证该点在两个相机的z坐标均为正。
在这里插入图片描述
单个点存在噪声——>多个点进行三角化,对解进行投票

欧式结构恢复的歧义
恢复结构与真实结构在尺寸,旋转(真实的结构的朝向),平移(真实的经纬度)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
内参矩阵:最终反映的是以物理尺寸为单位的焦距 f 转换成像素为单位的焦距值
内参矩阵描述的是:相机坐标系到像素坐标系的变化
外参矩阵描述的是:世界坐标系到相机坐标系之间的转换关系
相机的内参矩阵以及外参矩阵都是相机的关键参数
投影矩阵:世界坐标系到影像坐标系(u,v)之间的转换关系表达的是透视投影中空间点到像点的投影关系——对应的矩阵称之为投影矩阵

基础矩阵 & 本质矩阵 & 单应矩阵

可以建立两个视图公共点之间的坐标联系,或者完成公共点之间的坐标转换。
===基础矩阵:对规范化(摄像机的内参矩阵K是单位矩阵的形式)摄像机拍摄的两个视点间的图像的几何关系进行代数描述=
关键矩阵
本质矩阵的属性:
在这里插入图片描述

在这里插入图片描述
e为极点:
极点肯定在左图像点p对应的在右图像的极线上,所以也就有lqT e = 0 也就得出Ee = 0
在这里插入图片描述

在这里插入图片描述
基础矩阵:是对一般的透视摄像机(非规范化摄像机)的两个视点的图像间的极几何关系进行描述
思想:对内参矩阵求逆,得到规范化摄像机下的坐标[I,0]
在这里插入图片描述
在这里插入图片描述
基础矩阵的性质:
在这里插入图片描述
基础矩阵和本质矩阵的区别:刻画了更加一般的透视摄像机之间的在不同图像之间的对应点的极几何约束关系
只需要基础矩阵F,无需场景信息以及相机的内外参数,即可简历左右图像对之间的对应关系
F包含了内参信息,以及R和t的信息
在这里插入图片描述
在这里插入图片描述

本质矩阵描述了:两个像素坐标系x1,x2之间的关系,即空间点在两个相机的成像点通过外参矩阵R,t建立了一个等式关系,或者称为一种约束,这个约束就叫做对极约束
对极约束
本质矩阵与基础矩阵的区别:本质矩阵是和 x建立的关系,而 x是由内参矩阵 K和像素坐标p 计算出来的,所以本质矩阵使用的前提是内参矩阵 K已知;而基础矩阵直接和像素坐标 p 建立联系,所以不需要已知内参矩阵。
本质矩阵的性质:一个3×3的矩阵是本质矩阵的充要条件是它的奇异值中有两个相等而第三个是0

从已经估得的本质矩阵E,恢复出相机的运动R,t

通过SVD分解:
在这里插入图片描述
在这里插入图片描述

SVD 分解

SVD分解链接
定义:SVD是将一个任意矩阵分解为三个矩阵。所以如果我们有一个矩阵A,那么它的SVD可以表示为:
意义:奇异值分解则是特征分解在任意矩阵上的推广
应用:
PCA主成分分析:把数据集映射到低维空间中去。 数据集的特征值(在SVD中用奇异值表征)按照重要性排列,降维的过程就是舍弃不重要的特征向量的过程,而剩下的特征向量组成的空间即为降维后的重要特征空间
图片压缩:在图像处理中,SVD分解常被用于图像压缩。通过对图像矩阵进行SVD分解,可以得到较低秩的近似矩阵,从而减少存储空间和传输带宽

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在SVD中,U和 V 对于任何矩阵都是可逆的,并且它们是正交归一的,奇异值比特征值在数值上更稳定(奇异值是正特征值的平方根)
理解SVD实现数据降维:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/83336.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/83336.shtml
英文地址,请注明出处:http://en.pswp.cn/pingmian/83336.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

工业手持PDA终端,有哪些作用?

工业手持PDA终端&#xff08;便携式数据采集终端&#xff09;&#xff0c;是专为工业场景设计的智能化工具&#xff0c;拥有强大的数据采集和处理能力。通过内置的条码扫描功能&#xff0c;PDA能够快速准确地获取信息&#xff0c;避免了人工录入可能出现的错误&#xff0c;大大…

Spark-TTS: AI语音合成的“变声大师“

嘿&#xff0c;各位AI爱好者&#xff01;还记得那些机器人般毫无感情的合成语音吗&#xff1f;或者那些只能完全模仿但无法创造的语音克隆&#xff1f;今天我要介绍的Spark-TTS模型&#xff0c;可能会让这些问题成为历史。想象一下&#xff0c;你可以让AI不仅说出任何文字&…

C++链式调用与Builder模式

在C++中实现链式调用(如 a.b().c().d())的关键是让每个成员函数返回对象的引用(通常是 *this),从而允许连续调用其他成员函数。这种模式常见于方法链(Method Chaining)或流式接口(Fluent Interface)。下面是实现链式调用的具体方法和示例: 实现原理 返回对象引用:每…

SQL的查询优化

1. 查询优化器 1.1. SQL语句执行需要经历的环节 解析阶段&#xff1a;语法分析和语义检查&#xff0c;确保语句正确&#xff1b;优化阶段&#xff1a;通过优化器生成查询计划&#xff1b;执行阶段&#xff1a;由执行器根据查询计划实际执行操作。 1.2. 查询优化器 查询优化器…

结构型设计模式之桥接模式

文章目录 1. 桥接模式概述2. 模式结构3. 桥接模式的优缺点优点缺点 4. 桥接模式的应用场景5. C#代码示例5.1 简单示例 - 形状与颜色5.2 更复杂的示例 - 跨平台消息发送系统 6. 桥接模式与其他模式的比较7. 真实世界中的桥接模式应用7.1 数据库驱动7.2 UI框架中的渲染机制 8. 桥…

SolidWorks建模(U盘)- 多实体建模拆图案例

这个U盘模型并不是一个多装配体&#xff0c;它是一个多实体零件&#xff0c;它是在零件模式下创建的这些多实体的零部件。按右键解除爆炸就可以装配到一起&#xff0c;再按右键爆炸&#xff0c;就能按照之前移动的位置进行炸开 爆炸视图直接展示 模型案例和素材或取&#xff08…

计算机组成原理核心剖析:CPU、存储、I/O 与总线系统全解

引言 在当今数字化时代&#xff0c;计算机已经渗透到我们生活的方方面面&#xff0c;从智能手机到超级计算机&#xff0c;从智能家居到自动驾驶汽车。然而&#xff0c;你是否曾好奇过&#xff0c;这些功能强大的设备内部究竟是如何工作的&#xff1f;是什么让计算机能够执行各种…

SystemVerilog—Interface语法(二)

在SystemVerilog中&#xff0c;接口&#xff08;interface&#xff09;是一种封装信号集合、协议逻辑和通信行为的复合结构。其核心定义内容可分为以下十类&#xff1a; 1. 信号声明 基础信号&#xff1a;可定义逻辑&#xff08;logic&#xff09;、线网&#xff08;wire&…

DAY43打卡

浙大疏锦行 kaggle找到一个图像数据集&#xff0c;用cnn网络进行训练并且用grad-cam做可视化 进阶&#xff1a;并拆分成多个文件 fruit_cnn_project/ ├─ data/ # 存放数据集&#xff08;需手动创建&#xff0c;后续放入图片&#xff09; │ ├─ train/ …

[蓝桥杯C++ 2024 国 B ] 立定跳远(二分)

题目描述 在运动会上&#xff0c;小明从数轴的原点开始向正方向立定跳远。项目设置了 n n n 个检查点 a 1 , a 2 , ⋯ , a n a_1, a_2, \cdots , a_n a1​,a2​,⋯,an​ 且 a i ≥ a i − 1 > 0 a_i \ge a_{i−1} > 0 ai​≥ai−1​>0。小明必须先后跳跃到每个检查…

LINUX530 rsync定时同步 环境配置

rsync定时代码同步 环境配置 关闭防火墙 selinux systemctl stop firewalld systemctl disable firewalld setenforce 0 vim /etc/selinux/config SELINUXdisable设置主机名 hostnamectl set-hostname code hostnamectl set-hostname backup设置静态地址 cd /etc/sysconfi…

鸿蒙OSUniApp结合机器学习打造智能图像分类应用:HarmonyOS实践指南#三方框架 #Uniapp

UniApp结合机器学习打造智能图像分类应用&#xff1a;HarmonyOS实践指南 引言 在移动应用开发领域&#xff0c;图像分类是一个既经典又充满挑战的任务。随着机器学习技术的发展&#xff0c;我们现在可以在移动端实现高效的图像分类功能。本文将详细介绍如何使用UniApp结合Ten…

【Redis】大key问题详解

目录 1、什么是大key2、大key的危害【1】阻塞风险【2】网络阻塞【3】内存不均【4】持久化问题 3、如何发现大key【1】使用内置命令【2】使用memory命令&#xff08;Redis 4.0&#xff09;【3】使用scan命令【4】监控工具 4、解决方案【1】拆分大key【2】使用合适的数据结构【3】…

redis核心知识点

Redis是一种基于内存的数据库&#xff0c;对数据的读写操作都是在内存中完成&#xff0c;因此读写速度非常快&#xff0c;常用于缓存&#xff0c;消息队列、分布式锁等场景。 Redis 提供了多种数据类型来支持不同的业务场景&#xff0c;比如 String(字符串)、Hash(哈希)、 Lis…

vscode不满足先决条件问题的解决——vscode的老版本安装与禁止更新(附安装包)

目录 起因 vscode更新设置的关闭 安装包 结语 起因 由于主包用的系统是centos的&#xff0c;且版本有点老了&#xff0c;再加上vscode现在不支持老版本的&#xff0c;这对主包来说更是雪上加霜啊 但是主包看了网上很多教程&#xff0c;眼花缭乱&#xff0c;好多配置要改&…

如何成为一名优秀的产品经理(自动驾驶)

一、 夯实核心基础 深入理解智能驾驶技术栈&#xff1a; 感知&#xff1a; 摄像头、雷达&#xff08;毫米波、激光雷达&#xff09;、超声波传感器的工作原理、优缺点、融合策略。了解目标检测、跟踪、SLAM等基础算法概念。 定位&#xff1a; GNSS、IMU、高精地图、轮速计等定…

【ISAQB大纲解读】信息隐藏指的是什么

在软件架构中&#xff0c;信息隐藏&#xff08;Information Hiding&#xff09; 是核心设计原则之一&#xff0c;由 David Parnas 在 1972 年提出。它强调通过限制对模块内部实现细节的访问&#xff0c;来降低系统复杂度、提高可维护性和可扩展性。在 ISAQB 的学习目标&#xf…

网页前端开发(基础进阶2--JS)

前面学习了html与css&#xff0c;接下来学习JS&#xff08;JavaScript与Java无关&#xff09;。 web标准&#xff08;网页标准&#xff09;分为3个部分&#xff1a; 1.html主要负责网页的结构&#xff08;页面的元素和内容&#xff09; 2.css主要负责网页的表现&#xff08;…

完全移除内联脚本

说明 日期&#xff1a;2025年5月9日。 内联脚本给跨站脚本攻击&#xff08;XSS&#xff09;留了条路。 示例 日期&#xff1a;2025年5月9日。 如下网页文件a.html&#xff1a; <!-- 内联脚本块 --> <script> function handleClick{ alert("Hello")…

[蓝桥杯]约瑟夫环

约瑟夫环 题目描述 nn 个人的编号是 1 ~ nn&#xff0c;如果他们依编号按顺时针排成一个圆圈&#xff0c;从编号是 1 的人开始顺时针报数。 &#xff08;报数是从 1 报起&#xff09;当报到 kk 的时候&#xff0c;这个人就退出游戏圈。下一个人重新从 1 开始报数。 求最后剩…