社区计算机视觉课程文档
3D 数据表示
并获得增强的文档体验
开始使用
3D 数据表示
根据应用的不同,可以使用多种不同的 3D 数据表示方法。在这里,我们将概述一些更常见的方法。
点云
点云通过 3D 空间中的点列表及其坐标以及可能相关的其他特征来表示数据。这些点可以仅分布在物体的表面,也可以分布在其内部。点云通常通过 3D 扫描技术(如激光雷达)生成。它们缺乏关于连通性的信息,这使得难以确定物体的表面及其拓扑结构。
网格
网格通常用于计算机图形学中,将物体表面表示为(通常是)三角形面的集合,连接三维空间中的顶点。诸如法线、颜色或纹理坐标之类的附加信息可以与顶点或面相关联。特别是当使用纹理时,这些方法为存储实体对象提供了非常有效的方法,并且通常用于游戏和其他计算机图形应用程序中。
Python 的 trimesh
包包含许多用于处理网格数据的有用函数,特别是加载和保存常用数据格式。
体数据
体数据通常用于编码关于透明物体(如云和火焰)的信息。从根本上说,它采用函数的形式将空间中的位置映射到密度、颜色以及可能的其他属性。表示此类数据的一种简单方法是使用体素网格,其中每个点的数据通过从包含它的体素的八个角进行三线性插值来找到。
正如稍后在 NeRF 章节中将看到的那样,体表示也可以有效地用于表示实体对象。也可以使用更复杂的表示,例如小型 MLP,或复杂的哈希网格,例如 InstantNGP 中的哈希网格。
隐式曲面
有时,体表示的灵活性是理想的,但物体本身的表面才是感兴趣的。隐式曲面类似于体数据,但函数将空间中的每个点映射到一个数字,其中表面是此函数的零值。为了计算效率,要求此函数实际上是有符号距离函数 (SDF) 可能很有用,其中函数指示到表面的最短距离,正值在物体外部,负值在内部(此符号是一种约定,可能会有所不同)。保持此约束更困难,但它允许使用称为球体追踪的算法更快地计算直线和表面之间的交点。
< > 在 GitHub 上更新