本文档描述PCD(点云数据)文件格式,以及它在点云库(PCL)中的使用方式。
PCD文件格式图标
PCD文件格式图标
#为什么新的文件格式?
PCD文件格式并不意味着重新发明轮子,而是补充现有文件格式,由于某种原因,这些格式不支持/不支持PCL为nD点云处理带来的一些扩展。
PCD不是支持3D点云数据的第一种文件类型。特别是计算机图形和计算几何社区已经创建了多种格式来描述使用激光扫描仪获取的任意多边形和点云。其中一些格式包括:
PLY - 由Turk等人在斯坦福大学开发的多边形文件格式
STL - 由3D Systems创建的立体光刻CAD软件原生的文件格式
OBJ - 由Wavefront Technologies首先开发的几何定义文件格式
X3D - 用于表示3D计算机图形数据的ISO标准的基于XML的文件格式
和其他
所有上述文件格式都有一些缺点,正如下一节所解释的那样 - 这是很自然的,因为它们是在不同的时间,不同的时间创建的,在今天的传感技术和算法发明之前。
#PCD版本
在发布点云库(PCL)版本1.0之前,PCD文件格式可能具有不同的修订版本号。它们被编号为PCD_Vx(例如,PCD_V5,PCD_V6,PCD_V7等)并且代表PCD文件的版本号0.x。
PCL中PCD文件格式的正式版本应该是0.7版(PCD_V7)。
#文件格式标题
每个PCD文件都包含一个标题,用于标识和声明存储在文件中的点云数据的某些属性。PCD的标题必须用ASCII编码。
注意
每个标题条目以及在PCD文件中指定的ASCII点数据(见下文)都使用新行(\ n)分隔。
从版本0.7开始,PCD头部包含以下条目:
VERSION
- 指定PCD文件版本
FIELDS
- 指定点可以具有的每个维度/字段的名称。例子:
FIELDS x y z # XYZ data
FIELDS x y z rgb # XYZ + colors
FIELDS x y z normal_x normal_y normal_z # XYZ + surface normals
FIELDS j1 j2 j3 # moment invariants
...
SIZE
- 以字节为单位指定每个尺寸的大小。例子:
unsigned char/char
has 1 byte
unsigned short/short
has 2 bytes
unsigned int/int/float
has 4 bytes
double
has 8 bytes
TYPE
- 将每个维度的类型指定为char
。目前接受的类型是:
I
- 表示有符号类型int8 (char)
,int16 (short)
和int32 (int)
U
- 表示无符号类型uint8 (unsigned char)
,uint16 (unsigned short)
,uint32 (unsigned int)
F
- 代表float
类型
COUNT
- 指定每个维度有多少个元素。例如,x数据通常具有1个元素,但是像VFH的特征描述符 具有308个。基本上这是一种在每个点处引入nD直方图描述符的方法,并将它们视为单个连续的存储器块。默认情况下,如果COUNT
不存在,则所有维度的计数设置为1。
WIDTH
- 指定点云数据