先看一段PCD示例数据
# .PCD v.7 - Point Cloud Data file format
VERSION .7
FIELDS x y z rgb
SIZE 4 4 4 4
TYPE F F F F
COUNT 1 1 1 1
WIDTH 213
HEIGHT 1
VIEWPOINT 0 0 0 1 0 0 0
POINTS 213
DATA ascii
0.93773 0.33763 0 4.2108e+06
0.90805 0.35641 0 4.2108e+06
0.81915 0.32 0 4.2108e+06
0.97192 0.278 0 4.2108e+06
0.944 0.29474 0 4.2108e+06
0.98111 0.24247 0 4.2108e+06
0.93655 0.26143 0 4.2108e+06
0.91631 0.27442 0 4.2108e+06
0.81921 0.29315 0 4.2108e+06
0.90701 0.24109 0 4.2108e+06
0.83239 0.23398 0 4.2108e+06
0.99185 0.2116 0 4.2108e+06
0.89264 0.21174 0 4.2108e+06
0.85082 0.21212 0 4.2108e+06
0.81044 0.32222 0 4.2108e+06
1.文件头
每个PCD文件包含一个文件头用于确定和声明文件中存储的点云数据的某些特性,文件头必须使用ASCII编码,文件头的字段之间必须使用新行隔开。
(1)VERSION:指定PCD文件版本(#为注释语句)
(2)FILEDS:指定点云数据每个点的字段(描述性特征)
(3)SIZE:每个字段数据的存储空间大小
(4)TYPE:每个字段数据类型:
I -- 有符号类型,int8(char),int16(short),int32(int)
U -- 无符号类型,uint8(unsigned char), uint16(unsigned short),uint32(unsigned int)
F -- 浮点型,float
(5)COUNT:每个字段数据包含的元素个数,例如表示位置信息的XYZ字段COUNT都是1,但是像VFH特征描述子有308个,即COUNT值为308(不进行设置的话默认为1)
(6)WIDTH:根据点云是有序还是无序代表两种含义
在有序点云中表示一行数据中点的数目,在无序点云中表示所有点的个数(示例中为无序点云数据,且为了节约篇幅省去了剩下的数据)。有序点云指类似于像素或矩阵,点之间的邻接关系表示明确的点云。
(7)HEIGHT:根据点云是否有序分别代表两种汉含义
对于有序点云代表数据集的行数,无序点云设置为1
(8)VIEWPORT:点云数据集的获取视点,在获取其他特征时会用到(比如确定发现方向),由3个偏移量+四元数组成
(9)POINTS:点的总个数
(10)DATA:数据的存储类型,有ASCII和二进制两种
DATA的下一字节数据就是点云数据了,文件头的信息必须按照以上顺序展开且使用换行分隔