社区计算机视觉课程文档
简介
并获取增强的文档体验
开始使用
简介
什么是点云?
点云是单个点的集合,每个点代表三维空间内表面的一个样本,由 [x, y, z] 坐标表示。除了空间坐标外,这些点通常还带有额外的属性,如法线、RGB 颜色、反照率和双向反射分布函数 (BRDF)。
在此,反照率是衡量表面反射多少光线的指标。它本质上是反射光与照射到表面的入射光之比。简单来说,它描述了有多少入射光被反弹回去。高反照率表示表面反射大量光线,例如雪,而低反照率表示表面吸收更多光线,例如沥青。
BRDF 是一个函数,描述了光线如何在不透明表面上散射或反射。它详细描述了光线在表面上的交点处如何反射,考虑了入射光方向和出射方向。它提供了表面反射特性的数学描述,包括光泽度、粗糙度以及反射光在不同角度的分布等因素。这些属性在建模、渲染和场景理解等各种应用中起着至关重要的作用。
虽然点云数据的概念并不新鲜,并且多年来一直是图形和物理模拟等领域不可或缺的一部分,但由于两个关键趋势,它的重要性显着增加。首先,经济高效且用户友好的点云采集设备的广泛普及显着提高了可访问性。
增强现实和自动驾驶汽车进一步强调了它们在当今技术领域的相关性。
现在我们知道了什么是点云,我们可以用它们做什么呢?
3D 点数据主要用于自动驾驶功能,但现在其他使用计算机视觉的 AI 模型(如无人机和机器人)也开始使用 LiDAR 以获得更好的视觉感知。LiDAR 是一种遥感过程,它收集用于创建物体和环境的 3D 模型和地图的测量数据。LiDAR 使用紫外线、可见光或近红外光,通过测量信号从物体反弹并返回扫描仪所需的时间来测量空间关系和形状。
生成和数据表示
我们将使用 python 库 point-cloud-utils 和 open-3d,可以通过以下方式安装
pip install point-cloud-utils
我们还将使用 python 库 open-3d,可以通过以下方式安装
pip install open3d
或者更小的仅 CPU 版本
pip install open3d-cpu
现在,首先我们需要了解存储这些点云的格式,为此,我们需要查看网格云。
为什么?
point-cloud-utils
支持读取常见的网格格式(PLY、STL、OFF、OBJ、3DS、VRML 2.0、X3D、COLLADA)。- 如果它可以导入到 MeshLab 中,我们就可以读取它!(来自他们的 readme)
文件类型是从其文件扩展名推断出来的。支持的一些扩展名包括
PLY (多边形文件格式)
- 一个简单的 PLY 对象由用于表示对象的元素集合组成。它由顶点 (x,y,z) 三元组列表和面列表组成,面列表实际上是顶点列表的索引。
- 顶点和面是元素的两个示例,PLY 文件的大部分由这两个元素组成。
- 也可以创建新的属性并将其附加到对象的元素,但应以这种方式添加这些属性,以便旧程序在遇到这些新属性时不会崩溃。
STL (标准镶嵌语言)
- 此格式使用三角形逼近实体模型的表面。
- 这些三角形也称为面片,其中每个面片由垂直方向和表示三角形顶点的三个点描述。
- 但是,这些文件没有颜色和纹理的描述。
OFF (对象文件格式)
- 对象文件格式 (.OFF) 文件用于通过指定模型表面的多边形来表示模型的几何形状。多边形可以有任意数量的顶点。
- 它支持用于交换目的的对象的 ASCII 文本版本,以及用于提高读取和写入效率的二进制版本
- 它也称为 .obj 格式。
3DS (3D Studio)
- 扩展名为 .3ds 的文件表示 Autodesk 3D Studio 使用的 3D Studio 网格文件格式。
- 3DS 格式使用二进制文件结构,与基于文本的格式相比,可以实现更快、更小的文件大小,数据在文件中组织成块。
- 这些块存储形状、光照和查看信息,这些信息共同表示三维场景。
X3D (可扩展 3D 图形)
- X3D 是一种基于 XML 的 3D 图形文件格式,用于呈现 3D 信息。它是一个模块化标准,并通过多个 ISO 规范定义。
- 该格式支持矢量和栅格图形、透明度、光照效果和动画设置,包括旋转、淡入淡出和摆动。
- X3D 的优点是编码颜色信息(与 STL 不同),该信息在彩色 3D 打印机上打印模型时使用。
DAE (数字资产交换)
- 这是一个 XML 模式,它是一个开放标准 XML 模式,DAE 文件由此构建。
- 此文件格式基于 COLLADA (协同设计活动) XML 模式,该模式是一个开放标准 XML 模式,用于在图形软件应用程序之间交换数字资产。
- 该格式最大的卖点是其跨多个平台的兼容性。
- COLLADA 文件不限于一个程序或制造商。相反,它们提供了一种存储 3D 资产的标准方法。