PCD
PCD全称Point Cloud Data,是一种存储点云数据的文件格式。
PCD文件格式头
PCD文件必须用ASCII字符编码。文件格式头(file format header)说明文件中存储的点云数据的格式。每个格式声明及点云数据之间用\n字符隔开。PCD_V7版本的格式头包含如下信息:
# .PCD v0.7 - Point Cloud Data file format
VERSION 0.7
FIELDS x y z rgb
SIZE 4 4 4 4
TYPE F F F U
COUNT 1 1 1 1
WIDTH 1235856
HEIGHT 1
VIEWPOINT 0 0 0 1 0 0 0
POINTS 1235856
DATA ascii
其中
# .PCD v0.7 - Point Cloud Data file format //注释
- VERSION —指定PCD文件版本
VERSION 0.7
- FIELDS —指定一个点可以有的每一个维度和字段的名字
FIELDS x y z rgb
可以是:
FIELDS x y z // XYZ data
FIELDS x y z rgb //XYZ + colors
FIELDS x y z normal_xnormal_y normal_z // XYZ + surface normals
FIELDS j1 j2 j3 // moment invariants
inttensity 反射强度
ring 第几圈信息
- SIZE –用字节数指定每一个维度的大小
SIZE 4 4 4 4
大小示意:
unsigned char/char has 1 byte
unsigned short/short has 2 bytes
unsignedint/int/float has 4 bytes
double has 8 bytes
- TYPE –用一个字符指定每一个维度的类型
TYPE F F F U
现在被接受的类型有:
I –表示有符号类型int8(char)、int16(short)和int32(int);
U – 表示无符号类型uint8(unsigned char)、uint16(unsigned short)和uint32(unsigned int);
F –表示浮点类型。
COUNT –指定每一个维度包含的元素数目
COUNT 1 1 1 1
例如,x这个数据通常有一个元素,但是像VFH这样的特征描述子就有308个。实际上这是在给每一点引入n维直方图描述符的方法,把它们当做单个的连续存储块。默认情况下,如果没有COUNT,所有维度的数目被设置成1。
- WIDTH –用点的数量表示点云数据集的宽度。根据是有序点云还是无序点云
WIDTH 1235856
WIDTH有两层解释:
1)它能确定无序数据集的点云中点的个数(和下面的POINTS一样);
2)它能确定有序点云数据集的宽度(一行中点的数目)。
注意:有序点云数据集,意味着点云是类似于图像(或者矩阵)的结构,数据分为行和列。这种点云的实例包括立体摄像机和时间飞行摄像机生成的数据。有序数据集的优势在于,预先了解相邻点(和像素点类似)的关系,邻域操作更加高效,这样就加速了计算并降低了PCL中某些算法的成本。
- HEIGHT –用点的数目表示点云数据集的高度
HEIGHT 1
HEIGHT也有两层解释:
1)它表示有序点云数据集的高度(行的总数);
2)对于无序数据集它被设置成1(被用来检查一个数据集是有序还是无序)。
//有序点云例子:
WIDTH 640 // 像图像一样的有序结构,有640行和480列,
HEIGHT 480 // 这样该数据集中共有640*480=307200个点
//无序点云例子:
WIDTH 307200
HEIGHT 1 // 有307200个点的无序点云数据集
- VIEWPOINT–指定数据集中点云的获取视点
VIEWPOINT 0 0 0 1 0 0 0
VIEWPOINT有可能在不同坐标系之间转换的时候应用,在辅助获取其他特征时也比较有用,例如曲面法线,在判断方向一致性时,需要知道视点的方位,视点信息被指定为平移(tx,ty,tz)+四元数(qw,qx,qy,qz)。默认值是:0 0 0 1 0 0 0。
- POINTS–指定点云中点的总数。
POINTS 1235856
从0.7版本开始,该字段就有点多余了,因此有可能在将来的版本中将它移除。
- DATA –指定存储点云数据的数据类型
DATA ascii
从0.7版本开始,支持两种数据类型:ascii和二进制。
DATA ascii //ascii
DATA binary_compressed //binary
注意:文件头最后一行(DATA)的下一个字节就被看成是点云的数据部分了,它会被解释为点云数据。
文件格式头中的顺序不能改变,即一定是如下顺序:
VERSION、FIELDS、SIZE、TYPE、COUNT、WIDTH、HEIGHT、VIEWPOINT、POINTS、DATA
- 数据存储类型
ASCII格式:每行一个点的数据,如下是x y z rgb格式的数据:
F F F U