浅谈3D隐式表示(SDF,Occupancy field,NeRF)

这篇具有很好参考价值的文章主要介绍了浅谈3D隐式表示(SDF,Occupancy field,NeRF)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

本篇文章介绍了符号距离函数Signed Distance Funciton(SDF),占用场Occupancy Field,神经辐射场Neural Radiance Field(NeRF)的概念、联系与区别。

显式表示与隐式表示

三维空间的表示形式可以分为显式和隐式。

比较常用的显式表示比如体素Voxel点云Point Cloud三角面片Mesh等。

浅谈3D隐式表示(SDF,Occupancy field,NeRF),计算机视觉,三维重建,深度学习,三维视觉,计算机图形学

比较常用的隐式表示有 符号距离函数Signed Distance Funciton(SDF)占用场Occupancy Field神经辐射场Neural Radiance Field(NeRF) 等。

本文将对几种隐式表示进行介绍,并以我本人的理解讲一讲它们的联系和区别。

概述

首先,对这三种隐式表示进行概述,帮助大家对三种表示有一个大致的认识,这里看不懂没关系,后面有更加详细的介绍。

函数function与场field

先回顾一下函数和场的概念,我认为函数和场实际上都是代表了一种映射关系。

函数 f(x)=y 是自变量 x 的集合到因变量 y 集合的映射,也就是每个x对应一个y

场的定义是向量到向量或数的映射,空间中的场可以认为是 “空间中点”到“点的属性”的映射,也就是每个点对应这个点的属性。以磁场为例,磁场就是空间中每个点都具有一个磁感应矢量B,也就是点到向量的映射,即空间中每个点都对应到一个特定的向量 B B B。在其他情况下,点不一定对应到向量,也可以对应到标量或者其他属性,只要是空间中点到属性的映射都是空间场。( 一般用坐标 ( x , y , z ) (x,y,z) (x,y,z)表示空间中的点,所以点到属性的映射实际上是 ( x , y , z ) (x,y,z) (x,y,z)对应属性 s s s,如场 F : ( x , y , z ) → s F: (x,y,z)→s F:(x,y,z)s,这里的 s s s可以是向量也可以是标量)

本文讲的三种隐式表示都可以看做是一种映射关系,而且我们都可以用神经网络去拟合这种映射关系,达到用神经网络去表示三维空间的目的。

Signed Distance Funciton(SDF)

Signed Distance Funciton对应的中文是“符号距离函数”,我们更常见到的是它的缩写SDF。

SDF表示一个点到一个曲面的最小距离,同时用正负来区分点在曲面内外。点在曲面内部则规定距离为负值,点在曲面外部则规定距离为正值,点在曲面上则距离为0.

SDF的映射关系如下:
浅谈3D隐式表示(SDF,Occupancy field,NeRF),计算机视觉,三维重建,深度学习,三维视觉,计算机图形学
这里 x x x是个三维向量,代表三维空间中的点, s s s是一个值。也就是说 S D F SDF SDF实际上是空间中的点到对应的值的映射,也就是每个x都对应一个值s,这里s表示一个点到一个曲面的最小距离。

相应的, s < 0 s<0 s<0 则表示 x x x 在曲面内, s > 0 s>0 s>0表示 x x x 在曲面外, s = 0 s=0 s=0表示 x x x 在曲面上。我们就可以 S D F ( x ) = 0 SDF(x)=0 SDF(x)=0 来表示一个曲面

Occupancy Field (占用场)

占用场表示一个点被曲面占用的概率(占用就是在曲面内部),用神经网络表示的占用场又叫做Neural Surface Field。

占用场 p p p s s s的对应关系如下:

浅谈3D隐式表示(SDF,Occupancy field,NeRF),计算机视觉,三维重建,深度学习,三维视觉,计算机图形学

这里的 p p p是空间中的点, s s s表示 p p p被曲面占用的概率。可以看到占用场的映射关系的维度和SDF是一致的,它和SDF的区别在于,SDF中 s s s没有取值范围限制,而占用场的 s s s的取值是 [ 0 , 1 ] [0,1] [0,1],即必须在0,1之间,所以占用场是将一个三维空间映射到 [ 0 , 1 ] [0,1] [0,1],即:

浅谈3D隐式表示(SDF,Occupancy field,NeRF),计算机视觉,三维重建,深度学习,三维视觉,计算机图形学

占用概率 s s s通常以0.5为标准,即 s s s大于0.5我们倾向于认为点被曲面占用, s s s小于0.5我们倾向于认为点没有被曲面占用, s s s等于0.5我们认为点在曲面上。所以我们可以用 s s s等于0.5,即 F ( p ) = 0.5 F (p)=0.5 F(p)=0.5 ,在连续的三维占用场中表示一个曲面

Neural Radiance Field (神经辐射场)

Neural Radiance Field 神经辐射场是这几年很火的概念,主要是由于NeRF以及后续系列工作的优异表现。

辐射场 Radiance Field 就是将“空间中的点+点发出的一条射线”映射到“点的密度值+射线的方向对应的颜色值”,映射关系如下:
浅谈3D隐式表示(SDF,Occupancy field,NeRF),计算机视觉,三维重建,深度学习,三维视觉,计算机图形学
x , y , z x,y,z x,y,z表示点坐标, d d d表示从这个点发出的一条射线的方向, R , G , B R,G,B R,G,B表示从这个射线的方向去看这个点的颜色值, σ \sigma σ表示这个点的密度值(比如烟雾的密度比较低,固体点的密度就很高)。

而神经辐射场,就是用神经网络去拟合辐射场的映射关系


下面将详细介绍每个隐式表示:

Signed Distance Funciton(SDF)

SDF在2D和3D中都有应用,我们可以先看一下SDF在2D中的形式,了解其在2D上的应用会对理解其在3D中的表示有帮助。

Signed Distance Funciton表示带符号的距离函数,其实还有不带符号的距离函数,也就是Unsigned Distance Funciton,2D中的Unsigned Distance Funciton可以直观表示如下:
浅谈3D隐式表示(SDF,Occupancy field,NeRF),计算机视觉,三维重建,深度学习,三维视觉,计算机图形学

这里黑色的就是表示的形状,在Unsigned Distance Funciton下,形状内部的点的距离会被定义为0,而形状外部的点的值代表了这个点到形状的最短距离。

相对于Unsigned Distance Funciton,Signed Distance Funciton增加了正和负的概念,内部和外部的点的绝对值都代表了点到形状的距离,这时内部的点不再都是0,而是用负值表示,外部的点的值用正值表示。下图就是它的直观表示:

浅谈3D隐式表示(SDF,Occupancy field,NeRF),计算机视觉,三维重建,深度学习,三维视觉,计算机图形学

这张图红色的表示在形状外部的点,绿色代表在形状内部的点,黑色代表边界,可以看到黑色两侧的点的值的正负发生了变化,也就是说 S D F = 0 SDF=0 SDF=0表示的曲线可以代表形状的边界

理解了二维的SDF,就可以类推到三维的SDF,可以想象一个空间,空间中有正值和负值的点,而正负点的交界处就可以认为是空间曲面

这里展示一张《DeepSDF: Learning Continuous Signed Distance Functions for Shape Representation》 (CVPR2019) 中直观表示SDF的图像,是那个大家熟悉的兔子:

浅谈3D隐式表示(SDF,Occupancy field,NeRF),计算机视觉,三维重建,深度学习,三维视觉,计算机图形学

可以看到有一部分点(蓝色)的SDF值小于0,另一部分点(红色)的SDF值大于0,而大于0和小于0的点之间的边界,也就是我们需要表示的曲面,也就是说,曲面可以用函数 S D F = 0 SDF=0 SDF=0表示。

对于一些我们熟悉的曲面,也可以用SDF的形式来表示,比如球体和“甜甜圈”:

浅谈3D隐式表示(SDF,Occupancy field,NeRF),计算机视觉,三维重建,深度学习,三维视觉,计算机图形学

这两个物体的隐式表示函数是相对简单的。而通常需要我们用隐式函数表示的物体的隐式函数会复杂的多,但都是一个三维空间到SDF值的映射,即每一个三维空间点 x x x对应一个SDF值 s s s,这里 s s s表示点到曲面的最小距离。可以写成:
浅谈3D隐式表示(SDF,Occupancy field,NeRF),计算机视觉,三维重建,深度学习,三维视觉,计算机图形学
在使用深度学习表示隐式函数的方法中,我们用神经网络拟合SDF函数,就可以利用神经网络表示一个三维模型。

Occupancy field (占用场)

之前讲到,场实际上就是“空间中的点”到“点的属性”的映射,而占用场就是 “空间中的点”到“点是否被曲面占用的概率”的映射, 占用场给空间中每个点都赋一个是否被曲面占用的概率,相当于表示了一个点在曲面内部的概率,即:
浅谈3D隐式表示(SDF,Occupancy field,NeRF),计算机视觉,三维重建,深度学习,三维视觉,计算机图形学
这里 p p p表示空间中的点, s s s表示占用概率。 F F F在这里我们叫做占用概率函数,它表示了占用场中 p p p s s s的关系。

对于占用场所表示的映射关系,也就很容易理解了。对于三维空间中的点 p p p,有:
浅谈3D隐式表示(SDF,Occupancy field,NeRF),计算机视觉,三维重建,深度学习,三维视觉,计算机图形学
s s s表示 p p p被曲面占用的概率,它的取值范围是 [ 0 , 1 ] [0,1] [0,1],所以占用场就可以看做是三维空间到 [ 0 , 1 ] [0,1] [0,1]的映射:

浅谈3D隐式表示(SDF,Occupancy field,NeRF),计算机视觉,三维重建,深度学习,三维视觉,计算机图形学
这里 s = 0 s=0 s=0表示点非常不可能被曲面占用, s = 1 s=1 s=1表示点极大可能被曲面占用,那么 s = 0.5 s=0.5 s=0.5也就是很难判断这个点是否被曲面占用。我们说过被曲面占用就是在曲面内部,那么什么时候我们很难判断一个点是在曲面内部还是外部呢?你肯定已经想到了,那就是当这个点很接近曲面表面的时候,我们就很难判断它在曲面内部或者外部了。所以 F ( p ) = 0.5 F(p)=0.5 F(p)=0.5 代表了这个点在曲面的表面。

于是 F ( p ) = 0.5 F(p)=0.5 F(p)=0.5 也就可以表示连续的3D占用场中的一个曲面。与 S D F SDF SDF类似,占用概率函数 F F F 可以用神经网络拟合,这样我们就可以用神经网络表示曲面。

现在 F ( p ) = 0.5 F(p)=0.5 F(p)=0.5只能表示某个特定的曲面,而在实际的重建任务中,我们希望自己的网络根据不同的文字/图像或者其他条件信息来构建该条件对应的曲面,于是我们需要引入 “条件变量 c c c 作为占用场的输入,即:

浅谈3D隐式表示(SDF,Occupancy field,NeRF),计算机视觉,三维重建,深度学习,三维视觉,计算机图形学
这样占用场所表示的映射也就变形成了:

浅谈3D隐式表示(SDF,Occupancy field,NeRF),计算机视觉,三维重建,深度学习,三维视觉,计算机图形学
这里的 c c c表示了一个条件变量,比如图像特征, c c c相当于编码了一个特定曲面的形状,我们可以训练占用场神经网络 F F F 还原出 c c c编码的形状

占用场除了可以表示曲面,还可以表示点的颜色值。在单目三维人体重建《PIFu: Pixel-Aligned Implicit Function for High-Resolution Clothed Human Digitization》(ICCV 2019) 文章中,除了利用占用场表示曲面外,还利用占用场来表示点的颜色值。也就是将 F ( p , c ) = s F(p,c)=s F(p,c)=s中的占用概率 s s s,替换为颜色值 ( R , G , B ) (R,G,B) (R,G,B),即:

浅谈3D隐式表示(SDF,Occupancy field,NeRF),计算机视觉,三维重建,深度学习,三维视觉,计算机图形学
这样通过预测每个点的颜色值,也就得到了曲面的纹理。于是可以通过占用场即得到模型的几何信息,又得到模型的纹理信息。

我们可以将它进一步进行变换,因为在实际使用中,我们会用空间中的点 p p p 的坐标 x , y , z x,y,z x,y,z 来表示 p p p ,于是我们将 p p p替换为 x , y , z x,y,z x,y,z,同时将其写为映射关系,即:

浅谈3D隐式表示(SDF,Occupancy field,NeRF),计算机视觉,三维重建,深度学习,三维视觉,计算机图形学
不知道看到这里,你有没有觉得有点眼熟呢,它和下面这个映射关系是不是有些相似?

浅谈3D隐式表示(SDF,Occupancy field,NeRF),计算机视觉,三维重建,深度学习,三维视觉,计算机图形学
上面两个映射关系是不是还有点像?至少左右两边有很多相同的量。你这时肯定已经注意到,第二个式子实际上就是辐射场 Radiance Field 的映射关系

Neural Radiance Field (神经辐射场)

我们之前说过,神经辐射场,其实就是用神经网络去拟合辐射场的映射关系。所以理解神经辐射场主要需要理解辐射场这个概念。(当然NeRF还涉及到体渲染的概念,我这里只提及辐射场相关的)

现在我们知道场实际上就是一种映射关系,辐射场也是如此的,它是将“空间中的点+点发出的一条射线”映射到“点的密度值+射线的方向对应的颜色值”

我们可以从辐射场的用途理解它建立这种映射关系的意义。我们需要表示一个三维空间,使得从任何角度去观察,我们都可以得到该视角的观察结果(对于每个视角来说,观察结果其实就是一幅RGB图像)。

于是对于一个点来说,这个点只需要保证,在每个角度,都能呈现出一定的颜色,就可以让任何观察视角对这个点都有观察结果了。

也就是说,从这个点发出的每一个角度的射线,都应该能呈现出一种特定的颜色(你可以想象一个长满五颜六色的刺的海胆)。

现在将这个特定的点推广到空间中的每一个点,于是空间中每一个点的每一个角度,都需要一个对应的颜色值,也就是:
浅谈3D隐式表示(SDF,Occupancy field,NeRF),计算机视觉,三维重建,深度学习,三维视觉,计算机图形学
这里 ( x , y , z ) (x,y,z) (x,y,z)用三维空间中的位置表示点, d d d表示射线的角度, ( R , G , B ) (R,G,B) (R,G,B)表示颜色值。

在实际中,不同的点的颜色透明度会不同,比如烟雾或者彩色的玻璃,虽然它们有颜色,但是我们也可以透过它们看到之后的物体,于是我们还需要给点增加一个新的属性,透明度 σ \sigma σ,最后得到完整的辐射场的映射关系:

浅谈3D隐式表示(SDF,Occupancy field,NeRF),计算机视觉,三维重建,深度学习,三维视觉,计算机图形学
也就是空间中每一个点的每一个角度,都对应的一个颜色值和一个透明度,这其实也就是辐射场的表示内容。而神经辐射场,就是用神经网络去拟合辐射场的映射关系

总结

我们可以看出来,三种3D隐式表示虽然表示的内容不同,但具有其相似性与关联。比如SDF和占用场都是三维映射到一维,甚至SDF值可以直接线性映射到占用概率。再比如文章中特地比较的“用来表示颜色值的占用场”和“辐射场”二者的映射关系,可以直观的看出辐射场相对于占用场多了一个视角射线 d d d作为输入,也就是由于增加了一个视角射线 d d d,使得辐射场在渲染层面获得了独特的优势。而在渲染方面的广泛应用,使得NeRF成为了近几年炽手可热的明星技术。文章来源地址https://www.toymoban.com/news/detail-615407.html

到了这里,关于浅谈3D隐式表示(SDF,Occupancy field,NeRF)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【论文阅读】OccNeRF: Self-Supervised Multi-Camera Occupancy Prediction with Neural Radiance Fields

    原文链接:https://arxiv.org/abs/2312.09243 3D目标检测任务受到无限类别和长尾问题的影响。3D占用预测则不同,其关注场景的几何重建,但多数方法需要从激光雷达点云获取的3D监督信号。 本文提出OccNeRF,一种自监督多相机占用预测模型。首先使用图像主干提取2D特征。为节省空间

    2024年02月02日
    浏览(55)
  • 一文搞懂 神经辐射场(Neural Radiance Fields,NeRF)

    神经辐射场(Neural Radiance Fields,简称NeRF)是一种计算机视觉技术,用于生成高质量的三维重建模型。它利用深度学习技术从多个视角的图像中提取出对象的几何形状和纹理信息,然后使用这些信息生成一个连续的三维辐射场,从而可以在任意角度和距离下呈现出高度逼真的

    2024年02月06日
    浏览(39)
  • 神经辐射场(Neural Radiance Field,NeRF)的简单介绍

    参考文章:https://arxiv.org/abs/2210.00379    神经场 是一种神经网络,其输入为坐标,输出为坐标对应点的某个属性。    神经辐射场 (NeRF)模型是一种新视图合成方法,它使用体积网格渲染,通过MLP进行隐式神经场景表达,以学习3D场景的几何和照明。    应用 :照片编

    2024年02月07日
    浏览(48)
  • 概述:隐式神经表示(Implicit Neural Representations,INRs)

    传统用于形状表示的隐式表示有:代数表示、函数表示、水平集表示等。 1.1.1 代数表示 如下图利用对基础图形的交并补,可以得到复杂的图形。一般logo的设计或者三维零部件建模都是利用对基础图形的布尔运算来得到目标形状。 1.1.2 函数表示 除了代数以外,还可以用一些

    2024年02月09日
    浏览(47)
  • 概念解析 | 隐式神经表示:揭开神经网络黑盒的奥秘

    注1:本文系“概念解析”系列之一,致力于简洁清晰地解释、辨析复杂而专业的概念。本次辨析的概念是: 隐式神经表示(Implicit Neural Representations) 近年来,神经网络在各种任务上取得了惊人的进步,但其内部表示方式依然难以解读,被称为“黑盒”。 隐式神经表示(Implicit Neural Rep

    2024年02月13日
    浏览(47)
  • SFM(Structure from Motion)和NeRF(Neural Radiance Fields)

    SFM(Structure from Motion)和NeRF(Neural Radiance Fields)都是计算机视觉领域中的重要算法,用于不同的任务和应用。 SFM(Structure from Motion): SFM是一种从图像序列中重建三维场景的技术。它通过分析相机在不同视角下捕获的图像来推断场景的三维结构和摄像机的运动。SFM算法可以

    2024年02月13日
    浏览(37)
  • 【计算机图形学】【代码复现】A-SDF中的数据集制作与数据生成

    Follow A-SDF 的 Data Generation 部分: We follow (1) ANSCH to create URDF for shape2motion dataset (1-2) URDF2OBJ(本人认为是1-2之间需要进行的重要的过渡部分) (2) Manifold to create watertight meshes (3) and modified mesh_to_sdf for generating sampled points and sdf values. follow这个github: ANSCH 在 global_info.py 中,主要修改

    2024年02月08日
    浏览(56)
  • NeRF-SLAM: Real-Time Dense Monocular SLAM with Neural Radiance Fields 论文阅读

    题目 :NeRF-SLAM: Real-Time Dense Monocular SLAM with Neural Radiance Fields 作者 :Antoni Rosinol, John J. Leonard, Luca Carlone 代码 :https://github.com/ToniRV/NeRF-SLAM 来源 :arxiv 时间 :2022 我们提出了一种新颖的几何和光度 3D 映射流程,用于从单目图像进行准确、实时的场景重建。 为了实现这一目标

    2024年02月14日
    浏览(55)
  • PC-NeRF: Parent-Child Neural Radiance Fields Using Sparse LiDAR Frames in Autonomous

    第二个工作,大家有时间可以去github点个小星星啦,and 希望大家不要喷啦,感谢感谢 Large-scale 3D scene reconstruction and novel view synthesis are vital for autonomous vehicles, especially utilizing temporally sparse LiDAR frames. However, conventional explicit representations remain a significant bottleneck towards representin

    2024年04月11日
    浏览(32)
  • [论文笔记] SurroundOcc: Multi-Camera 3D Occupancy Prediction for Autonomous Driving

    Wei, Yi, et al. “Surroundocc: Multi-camera 3d occupancy prediction for autonomous driving.” Proceedings of the IEEE/CVF International Conference on Computer Vision. 2023. 将占用网格应用到多个相机构成的3D空间中; 使用BEVFormer中的方法获取3D特征, 然后使用交叉熵损失计算loss; 和BEVFormer区别是BEV中z轴高度为1, 这里

    2024年02月04日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包