社区计算机视觉课程文档
引言
并获得增强的文档体验
开始使用
简介
什么是点云?
点云是单个点的集合,每个点代表三维空间中曲面的一个样本,由 [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,我们就可以读取它!(引自其自述文件)
文件类型从其文件扩展名推断。支持的一些扩展名是:
PLY(多边形文件格式)
- 一个简单的 PLY 对象包含用于表示对象的元素集合。它由一个顶点 (x,y,z) 三元组列表和一个实际指向顶点列表的面列表组成。
- 顶点和面是元素的两个示例,PLY 文件的大部分由这两个元素组成。
- 新属性也可以创建并附加到对象的元素,但这些属性应以旧程序在遇到这些新属性时不会崩溃的方式添加。
STL(标准曲面细分语言)
- 此格式用三角形近似实体模型的表面。
- 这些三角形也称为面,其中每个面由垂直方向和代表三角形顶点的三个点描述。
- 然而,这些文件没有颜色和纹理的描述。
OFF(对象文件格式)
- 对象文件格式(.OFF)文件用于通过指定模型表面的多边形来表示模型的几何形状。多边形可以有任意数量的顶点。
- 它支持 ASCII 文本版本的对象用于交换目的,以及二进制版本用于读写效率。
- 它也被称为 .obj 格式。
3DS(3D Studio)
- 带有 .3ds 扩展名的文件表示 Autodesk 3D Studio 使用的 3D Studio 网格文件格式。
- 3DS 格式采用二进制文件结构,与基于文本的格式相比,可以实现更快、更小的文件大小,数据在文件中组织成块。
- 这些块存储形状、光照和视图信息,共同表示三维场景。
X3D(可扩展三维图形)
- X3D 是一个基于 XML 的 3D 图形文件格式,用于呈现 3D 信息。它是一个模块化标准,通过多个 ISO 规范定义。
- 该格式支持矢量和栅格图形、透明度、光照效果和动画设置,包括旋转、褪色和摆动。
- X3D 的优点在于能够编码颜色信息(与 STL 不同),这些信息在彩色 3D 打印模型时会用到。
DAE(数字资产交换)
- 这是一种 XML 模式,它是一个开放标准的 XML 模式,DAE 文件由此构建。
- 此文件格式基于 COLLADA(COLLAborative Design Activity)XML 模式,该模式是用于在图形软件应用程序之间交换数字资产的开放标准 XML 模式。
- 该格式最大的卖点是其跨多个平台的兼容性。
- COLLADA 文件不限于一个程序或制造商。相反,它们提供了一种存储 3D 资产的标准方式。