计算机视觉NeRF

发布于:2025-06-03 ⋅ 阅读:(27) ⋅ 点赞:(0)

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实现数据降维:
在这里插入图片描述


网站公告

今日签到

点亮在社区的每一天
去签到