pcd点云格式介绍

PCD是Point Cloud Data的缩写,用于存储点云数据的文件格式。文章详细介绍了PCD文件的头部信息,包括版本、字段、大小、类型、数量等,并对比其他格式阐述其优势。此外,还讨论了ASCII和二进制数据存储方式,以及在处理RGB数据时版本变化带来的影响,并提及如何将二进制PCD数据转换为numpy数组以及反之。
摘要由CSDN通过智能技术生成

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值