点云PCD文件格式解读及手动生成

引言

起因是在python下处理点云数据比较麻烦,对于一些深度学习模型输出的点云处理结果,想在C++下使用pcl库进行后处理,所以考虑到如何将任意的xyz数据输出为.pcd文件,然后使用pcl库读取.pcd文件来处理点云。下面的内容分析了pcd文件的前缀格式和含义。

脚本地址:GitHub

1. PCD版本

在点云库PCL 1.0发布之前,PCD文件格式就已经发展更新了许多版本。这些新旧不同的版本用PCD_Vx来编号(例如PCD_V5、PCD_V6和PCD_V7等),分别代表PCD文件的0.5版、0.6版和0.7版。在PCL中,用到的PCD文件格式的正式发布是0.7版,即PCD_V7。

2. 文件格式

PCD文由 “头文件 + 点云数据” 构成,头文件声明了该点云数据集的基本特性。下面以PCD_V7版本的PCD文件为例,对头文件进行介绍。头文件及部分点云数据如下所示:

# .PCD v0.7 - Point Cloud Data file format
VERSION 0.7
FIELDS x y z
SIZE 4 4 4
TYPE F F F
COUNT 1 1 1
WIDTH 35947
HEIGHT 1
VIEWPOINT 0 0 0 1 0 0 0
POINTS 35947
DATA ascii
-1.10698 3.272394 -0.447241
-1.80195 3.367094 -0.704211
-4.12496 5.602794 2.824819

下面我们来一句一句进行解读:

3. VERSION

指定PCD文件的版本,由0.7可知该点云数据集是0.7版本的。

VERSION 0.7 //PCD版本号为0.7版
4. FIELDS

指定本点云数据集中任意一个点可以有的维度信息和其他附加信息。如:FIELDS x y z 指每个点都有xyz三个维度信息,FIELDS x y z rgb 指每个点除了xyz维度信息外还有颜色信息等。

FIELDS x y z  //该数据集中包含每一个点的xyz纬度信息
5. SIZE

储存每个维度信息占用的字节数(byte)。1指用char型数据存储维度信息,2指用short型数据存储维度信息,4指用int或float型数据存储维度信息,8指用double型数据存储维度信息。

SIZE 4 4 4  //x y z每个维度均占用4个字节
6. TYPE

用字符指定每一个维度的数据类型。I表示有符号类型:int8(char),int16(short),int32(int);U表示无符号类型:uint8(unsigned char),uint 16(unsigned short),uint32(unsigned int);F表示浮点型float和double。

TYPE F F F  //x y z每个维度的均为4字节的浮点型,即为float
7. COUNT

每个维度包含的元素个数。

COUNT 1 1 1  //x y z每个维度均包含1个元素
8. WIDTH

点云数据集可分为有序数据集和无序数据集两种。有序数据集类似矩阵,有行列之分,无序数据集则无行列之分。根据数据集是否有序,WIDTH由不同的含义。

对有序数据集而言:表示数据集的宽度(每行点的数目);

对于无序数据集而言:表示数据集中点的总数(和下面的POINTS一样)。

9. HEIGHT

对有序数据集而言:表示数据集的高度(行数);

对于无序数据集而言:被设置为1,用于声明一个数据集是否有序。

//该数据集为无序数据集,共有35947个点
WIDTH 35947
HEIGHT 1
10. VIEWPOINTS

数据集中点云的获取视点。视点信息被指定为“平移(txtytz) + 四元数(qwqxqyqz)”,默认值是:VIEWPOINT 0 0 0 1 0 0 0

VIEWPOINT 0 0 0 1 0 0 0  //数据集的获取视点
11. POINTS

点云中点的总数,从0.7版本就开始显得有点多余,可能会在后续版本中舍去这个参数。

POINTS 35947  //该数据集中共有35947个点
12. DATA

指定存储点云数据的数据存储格式:ASCLL码或二进制数据。

DATA ascii //该数据集用ASCLL码存储数据
13. 点云数据

以ASCLL码存储的点云数据,每一个点占据一行,“nan”表示不存在或非法的数据。

-1.10698 3.272394 -0.447241
-1.80195 3.367094 -0.704211
-4.12496 5.602794 2.824819
......
激光点云(PointCloud)PCD文件是一种常见的点云数据存储格式,通常用于激光扫描设备生成的三维点云数据。如果您想下载激光点云PCD文件,可以按照以下步骤进行。 首先,确定您要下载的激光点云PCD文件的来源。激光点云PCD文件可以从各种资源获取,例如网上开放的点云数据集、学术论文附带的数据集或特定软件生成的数据。确保您获得可信来源的PCD文件。 其次,确定您计算机上是否已安装点云数据处理软件,例如PCL(Point Cloud Library)、Matlab、ROS(Robot Operating System)等。这些软件提供了对PCD文件的读取和处理功能。 然后,打开您选择的点云数据处理软件,并导航到文件下载所在的目录或指定路径。如果您从网上下载PCD文件,可以选择将其保存到计算机的特定目录中。 接下来,在点云数据处理软件中,打开文件菜单或使用相应的命令将PCD文件导入到软件中。根据软件的不同,导入PCD文件的方式可能会有所不同。 最后,等待软件完成PCD文件的导入过程。一旦文件成功导入,您就可以在点云数据处理软件中对其执行各种操作,例如可视化、滤波、分割、配准等。 需要注意的是,PCD文件下载和处理可能需要较长的时间,具体取决于您计算机的性能和文件的大小。此外,确保您已获得合法的PCD文件并遵守任何涉及数据使用的相关法律和条例。 总结起来,下载激光点云PCD文件需要从可靠的来源获取文件,并使用相应的点云数据处理软件将其导入到计算机中进行进一步的处理和分析。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值