PCL中不同格式的点云文件介绍
前言
PCL中的IO库提供了点云文件输入输出相关的操作类,IO模块利用50多个类与30多个函数来实现点云的获取、读入、存储等。3D点云数据的文件格式包括多种,如PCD、PLY、TXT、STL,OBJ、CSV,LAS等。
一、PCD数据格式
PCD是Point Cloud Data的缩写,是一种由PCL内部支持的点云数据格式。每一个PCD文件都包含一个文件头来确定和声明文件中存储的点云数据的某种特性。PCL正式发布的PCD文件格式是0.7版本,以一个实际的PCD文件举例说明PCD文件头包含的这些字段。
VERSION 0.7 //指定PCD文件版本
FIELDS x y z normal_x normal_y normal_z //指定一个点的维度和字段的名字,此处表示点云维度是XYZNormal
SIZE 4 4 4 4 4 4 //用字节数指定每一个维度的大小
TYPE F F F F F F //用一个字符指定每一个维度的类型,此处F表示浮点类型(另外还有I表示有符号类型,U表示无符号类型)
COUNT 1 1 1 1 1 1 //每一个维度包含的元素数目,默认情况下为1
WIDTH 88653 //用点的数量表示点云数据集的宽度
HEIGHT 1 //用点的数量表示点云数据集的高度
VIEWPOINT 0 0 0 1 0 0 0 //指定数据集中点云的获取视点,在不同坐标系之间转换会用到,或者在辅助获取其他特征,比如获取曲面法线,判断方向一致性时会用到视点。
POINTS 88653 //点云中点的总数
DATA binary //指定存储点云的数据类型
二、PLY数据格式
PLY文件格式是Stanford大学开发的一套三维mesh模型数据格式,图形学领域内很多著名的模型数据,比如Stanford的三维扫描数据库(其中包括很多文章中会见到的Happy Buddha, Dragon, Bunny兔子),Geogia Tech的大型几何模型库,北卡(UNC)的电厂模型等,最初的模型都是基于这个格式的。
PLY多边形文件格式的开发目标是建立一套针对多边形模型的,结构简单但是能够满足大多数图形应用需要的模型格式,而且它允许以ASCII码格式或二进制形式存储文件。PLY的开发者希望,这样一套既简单又灵活的文件格式,能够帮助开发人员避免重复开发文件格式的问题。然而由于各种各样的原因,在工业领域内,新的文件格式仍然在不断的出现,但是在图形学的研究领域中,PLY还是种常用且重要的文件格式。
PLY作为一种多边形模型数据格式,不同于三维引擎中常用的场景图文件格式和脚本文件,每个PLY文件只用于描述一个多边形模型对象(Object),该模型对象可以通过诸如顶点、面等数据进行描述,每一类这样的数据被称作一种元素(Element)。相比于现代的三维引擎中所用到的各种复杂格式,PLY实在是种简单的不能再简单的文件格式,但是如果仔细研究就会发现,就像设计者所说的,这对于绝大多数的图形应用来说已经是足够用了。
PLY的文件结构简单:文件头加上元素数据列表。其中文件头中以行为单位描述文件类型、格式与版本、元素类型、元素的属性等,然后就根据在文件头中所列出元素类型的顺序及其属性,依次记录各个元素的属性数据。
典型的PLY文件结构:
标头
顶点列表
面列表
其他元素的列表
标头是一系列以回车符结尾的文本行,描述文件的其余部分。 标头包含每个的描述
元素类型,包括元素的名称(例如 edge,vertex,face),有多少个这样的元素位于对象中,以及关联的各种属性的列表与元素。 标头还表明该文件是二进制文件还是 ASCII 文件。标头后面是每种元素类型的元素列表,按照表头中描述的顺序出现。
三、TXT 格式
TXT格式的点云文件是一种简单的存储格式,每个点是一行记录,点的信息存储格式为x y z或者x y z r g b。这种格式的点云数据可以使用多种编程软件进行读取和处理,例如matlab、c++、vs+pcl、python等。
四、LAS格式
LAS数据格式是一种二进制文件格式,主要用于存储机载激光雷达数据。它由美国摄影测量与遥感协会(ASPRS)在2003年发布,并经过多次改进,目前已经有1.0、1.1、1.2、1.3、1.4,5种版本。
LAS文件的结构主要包括三部分:公共文件头区,变长记录区和点集记录区。公共文件头区记录LAS文件的普通信息,如文件采集日期,生成软件和点记录的个数等。接下来的变长记录区包含一些元数据,如坐标系信息。最后是LAS文件的核心,记录点的X,Y,Z和点属性的点集记录区。
此外,LAS数据格式还被广泛应用于自动驾驶、高精地图制作等领域。