三维场景表示
三维重建算法基础
三维场景表示方法大体可分为显示表示和隐式表示两类,经历了从早期显式几何构造到现代数据驱动模型的发展。早期方法依赖多边形网格和构造实体几何(CSG)等显式几何描述,广泛应用于计算机辅助设计和计算机图形学。体素网格作为基于体积的离散表示被引入,尽管存在内存和分辨率限制,但在医学成像和体积数据处理中发挥重要作用。点云随着激光雷达和深度传感器的发展成为高效的空间数据捕获手段,但因缺乏连接信息对处理带来挑战。基于网格的方法通过顶点、边和面组成紧凑且多功能的结构,支持动态和可变形模型,并广泛应用于动画和渲染。以上为显示表示方法,而隐式表示技术如符号距离函数(SDF)提供连续隐式的表面描述,适用于碰撞检测和形状分析。近期神经网络驱动的隐式表示兴起,代表技术包括神经辐射场(NeRF),显著推动了三维重建和新视图合成。混合方法如DMTet、Tri-plane 和3D 高斯溅射等结合多种表示优势,有效处理复杂三维场景。
显示表示
显示表示是一种基于离散数据结构的三维场景表示方法,常见形式包括点云、体素和网格等。它通过直接存储场景中的几何、纹理或其他属性信息,使得渲染和可视化过程简单高效,易于与现有的图形渲染 pipeline 集成。显示表示的优点是存储和访问简单,支持标准图形 API 实时渲染,渲染速度快,且易于编辑与后处理。但其缺点是空间分辨率固定,内存开销随分辨率线性增长,难以表达复杂细节和连续变化的属性,且对大规模、高精度场景存在显存瓶颈。
点云
点云是三维空间中点的无序集合,可视为 3D 形状曲面的离散化样本,具有无序性和变换不变性。无序性即点与点之间没有严格的顺序,两个点交换之后仍然表示同一个点云;变换不变性即点云进行旋转平移的刚性变换后再进行输入,输出的分类或分割结果不变。点云包含了丰富的信息,包括三维坐标 X,Y,Z、RGB、分类值、强度值、时间戳等等;点云可以共同组成物体或者环境的轮廓,点之间不是孤立的,模型需要从点附近的点捕捉局部结构,相邻点形成一个有意义的子集。点云的不规则性使得它们很难用现有的用于规则网格数据的神经网络进行处理。
点云的表示方法包括稠密表示和稀疏表示,稠密表示以二维矩阵存储点的属性,精度较高但数据量大;稀疏表示以离散点集合形式存在,数据量小但可能损失细节。点云特征分为局部特征和全局特征,局部特征如法向量、曲率和表面粗糙度等,用于描述点的局部几何属性,常应用于配准、分割和分类;全局特征如形状描述符、点云密度和分布,用于整体识别和检索。
体素
体素是具有欧几里得结构的数据,体素表示的三维场景由若干个立方体规则地在三维空间中放置形成。体素中可以存储几何占有率、体积、密度和符号距离等信息,以描述物体的几何形状并方便后续渲染。体素本身并不显式存储位置信息,而是通过体素在三维网格中的相对排列关系,结合体素分辨率和网格原点位置,推导出每个体素在空间中的实际坐标。(欧几里得结构是指:数据本身在空间中有明确的、规则的、连续的、可测量的几何位置关系,并且这种位置关系可以用欧几里得空间中的坐标系、距离、角度等几何概念来描述。)
由于表示的规则性,体素适合三维卷积操作,因此与标准卷积神经网络配合良好,且广泛用于深度几何学习;但体素的内存开销随分辨率呈立方增长,导致高分辨率处理受限,通常只能在较低分辨率或小批量下训练。为了解决这一问题,有研究引入了八叉树等稀疏数据结构来提高内存效率,但实现复杂,且需要多次输入处理步骤。目前的自适应数据结构方法仍然主要局限于较低的分辨率。
网格
网格是一种非欧几里得数据结构,用于表示由顶点、边和面组成的形状曲面。与体素相比,网格仅对场景的表面进行建模,因此更加紧凑,占用内存更少,且能精确表达物体表面细节。与点云相比,网格提供了点之间的连通性信息,从而更好地模拟表面点之间的空间关系。通过将三维形状表面参数化为二维几何图像,并使用二维卷积神经网络(2D CNN)对其进行处理,可以避免直接处理复杂的三维拓扑结构。
得益于这些优势,多边形网格被广泛应用于传统计算机图形领域。然而,将深度神经网络应用于网格数据比应用于点云更具挑战性。原因一方面是除了需要处理顶点特征外,还必须考虑网格的边和面的结构关系;另一方面是,网格本身是不可微的。
三维高斯溅射
三维高斯溅射(3DGS)是一种使用高斯分布对三维场景进行建模和渲染的创新表示技术。3DGS 的核心思想是将场景表示为三维高斯集合,这些高斯分布可以有效地近似场景的几何形状和外观。在该表示中,每个高斯分布都封装了空间和颜色信息,允许对表面和纹理进行平滑和连续的近似。
与传统的三角网格或体素等显示表示不同,3DGS 采用点基(point-based)的渲染方式,每个高斯分布被视为一个可渲染的体素点,不需要明确的面片连接关系。每个高斯不仅包含空间位置,还包括空间协方差、颜色、透明度以及法线等属性,这些参数共同决定了该高斯对最终渲染结果的贡献。在渲染过程中,3DGS 使用一种可微分的、基于高斯投影的渲染模型,通过在屏幕空间对每个高斯进行投影、加权和颜色融合,形成最终图像。得益于其连续表示和软边界特性,3DGS 可以自然地模拟景深、模糊等效果,同时减少锯齿和表面伪影。
3DGS 具备较高的训练和渲染效率。与 NeRF 等体素化或采样密集的隐式表示相比,3DGS 所需采样点数更少,存储开销显著降低,同时渲染速度也更快,适合实时应用场景。此外,3DGS 原生支持稀疏分布,在处理大规模场景时更高效。另外,3DGS 具有良好的可编辑性。由于每个高斯点有独立的属性,故可以灵活修改场景的几何结构或外观特征,比如对颜色、透明度、法线方向进行直接调节。
隐式表示
隐式表示是一种将各种信号以连续函数形式进行参数化的三维场景表示方法,它不同于传统的离散显示表示,而是通过神经网络来近似从空间坐标到属性值(如密度、颜色、占据情况等)的映射关系。隐式表示具有与空间分辨率解耦的优势,内存开销只与信号复杂度而非分辨率有关,可以任意分辨率采样,有效突破显式表示中的显存瓶颈,实现超分辨率效果。同时,隐式表示在表征能力、泛化能力和可学习性方面表现优异,能够通过神经网络权重对函数空间上的先验进行学习,并灵活嵌入可微分的学习框架中。其缺点在于,需要后处理步骤将隐式函数转换为显式几何形式以便可视化,而且由于需要对整个空间函数进行密集采样和计算,实时性能较差,计算开销较大。
占用函数
占用函数(Occupancy Function)是一种隐式三维场景表示方法,用于描述空间中任意点是否被物体占据,通过建立空间坐标与占用状态之间的映射关系,将三维几何物体表示为一个二元分类问题。具体来说,输入一个空间点坐标,输出该点的占用概率,范围在 0 到 1 之间,表示该点被物体占据的可能性。
占用网络是一种新的基于学习的三维重建方法,它隐式地将三维曲面表示为深度神经网络分类器的连续决策边界(即基于神经网络的占用函数)。占用网络本质上是一个对空间点进行二分类的分类器,其决策边界对应物体表面,能够以连续、高分辨率的形式隐式表达三维结构。该方法具有效率高、内存开销低的优点,并且可以从不同输入类型(如点云、体素、网格)进行三维重建。训练完成后,通过多分辨率等值面提取等后处理技术,将隐式的占用函数转换为显式网格模型,通常使用行进立方体算法结合一阶和二阶梯度信息来提取、简化和细化最终的三维网格。
符号距离场
符号距离场(Signed Distance Field, SDF)定义了空间中任意一点到物体表面最近距离的大小,同时使用正负符号区分点的位置关系:点在物体内部时,距离为负;在外部时,距离为正;位于物体表面则为零。SDF 具备连续性,理论上可以为任意空间分辨率的点提供距离信息,适合复杂场景细节的表达。
在传统表面重建中,SDF 通常以体素网格的形式进行离散采样和存储,称为离散 SDF 或 SDF Grid,但这种表示方式受制于空间分辨率,存在较大的内存开销和有限的表达精度。DeepSDF 是一种通过神经网络学习连续符号距离函数的深度学习方法,旨在克服传统离散 SDF 存储受分辨率和内存限制的问题。它通过将空间点坐标与物体形状编码一同输入网络,输出对应点的带符号距离,实现对连续空间中任意位置的 SDF 预测。DeepSDF 能从部分、稀疏或有噪声的三维数据中进行形状插值、补全与高质量重建,广泛用于三维形状建模与隐式表面重建任务。
神经辐射场
神经辐射场(Neural Radiance Fields, NeRF)是一种基于隐式表示的三维场景建模与新视角合成方法,其核心思想是通过神经网络对空间点的颜色和体积密度进行连续建模。该方法将体积场景表示编码在神经网络中,网络能够从稀疏的输入图像集合中合成复杂场景的新视图。NeRF 将空间点的三维坐标和观察方向作为输入,网络输出对应点的 RGB 颜色值和体积密度。与传统的三维显式表示(如网格或点云)不同,NeRF 不直接生成完整的三维几何模型,而是通过对不同视角下二维图像的训练,实现对任意新视角图像的高质量渲染。其渲染过程基于体渲染原理,利用光线追踪的方法,从观察视点沿光线方向对空间中的多个采样点进行密度和颜色查询,并对采样结果进行积分累积,最终生成二维图像。NeRF 的占用表示与占用函数类似,但不使用二元分类,而是通过连续的密度值描述空间中点的透明度或占据程度,从而在减少计算开销的同时,更好地支持体积渲染过程。NeRF 广泛应用于新视角合成、虚拟现实、三维重建等场景,具有对细节和光照效果的高拟合能力,但存在渲染速度较慢、对多视角训练数据依赖较大、且仅适用于静态场景的问题。
混合方法
深度步进四面体
深度步进四面体(DMTet,Deep Marching Tetrahedra)是一种基于步进四面体算法(Marching Tetrahedra)的复杂三维表示技术(步进四面体算法本质上是一种从三维标量场中提取物体表面等值面并生成三角网格模型的经典方法)。
不同于传统在固定网格上操作的步进立方体(Marching Cubes)或步进四面体方法,DMTet 通过引入深度学习,大幅提升了三维表示的灵活性和表达能力。其核心思想是利用神经网络预测三维空间中各点的占据情况和外观属性。具体来说,DMTet 通常以潜在编码(latent code)或隐式函数作为输入,以此编码目标对象的几何形状与结构特征。为了实现空间离散化,DMTet 将三维空间划分为大量小的四面体单元,并对每个四面体顶点进行占据值预测,以判断该点是否位于物体表面内部。随后,DMTet 根据顶点的占据值通过插值操作确定等值面的位置,从而提取出物体表面网格。这一过程在操作逻辑上类似传统步进方法,但具备更强的自适应边界建模能力,能够有效捕捉复杂拓扑与细节特征。
DMTet 还具有显著的自适应分辨率特性,网络可以根据空间区域的几何复杂度,自动调整四面体分布,在需要细节的区域分配更多单元,在简单区域减少单元,从而实现计算资源的高效利用与高保真度建模。此外,DMTet 与可微渲染技术深度融合,使网络能够通过图像损失进行端到端优化,支持从二维图像监督信号中直接学习高精度三维形状。
三平面
三平面(Tri-plane)将三维空间划分为三个正交平面,允许高效地编码和渲染三维信息。每个平面捕获空间结构的不同方面并共同提供一个全面的表示。复杂三维结构通常可以分解为更简单的二维投影,这些投影重新组合可以形成完整的三维模型。基于这一原理,三平面将问题从三维降低到二维来简化三维数据的处理和操作。关于三维对象或场景的信息被编码在三个单独的二维网格或纹理中,每个网格对应于一个正交平面,这些网格可以存储各种属性,如颜色、深度或占据情况,并可以使用标准的二维图像处理技术进行处理。三平面表示的一个关键优势是其能够在计算效率和三维重建质量之间取得平衡。通过利用三维对象和场景的固有结构,该方法可以在无需复杂且资源密集的三维体积处理的情况下实现高细节水平和准确性。