第四章输入/输出(I/O)4.2PCL中I/O模块及类介绍

网友投稿 714 2022-11-29

第四章输入/输出(I/O)4.2PCL中I/O模块及类介绍

第四章输入/输出(I/O)4.2PCL中I/O模块及类介绍

PCL中I/O库提供了点云文件输入输出相关的操作类,并封装了OpenNI兼容的设备源数据获取接口,可直接从众多感知设备获取点云图像等数据。I/O模块利用21个类和28个函数实现了对点云的获取、读入、存储等相关操作,其依赖于pcl_common和pcl_octree模块以及OpenNI外部开发包。

1、PCD(点云数据)文件格式

PCL中正式发布的PCD文件格式是0.7版本(PCD_V7)

文件头格式

VERSION:指定PCD文件版本

FIELDS:指定一个点可以有的每一个维度和字段的名字。例如

FIELDS x y z   # XYZ data

FIELDS x y z rgb  #XYZ + colors

SIZE:用字节数指定每一个维度的大小。例如

unsigned char/char has 1 byte

unsigned short/short has 2 bytes

unsigned int /int hs 4 bytes

double has 8 bytes

TYPE:用一个字符指定每一个维度的类型。

I表示有符号类型,U表示无符号类型,F表示浮点类型

COUNT:指定每一个维度包含的元素数目。

WIDTH:用点的数量表示点云数据集的宽度。根据是有序点云还是无序点云,WIDTH有两层解释:

1)它能确定无序数据集的点云中点的个数.

2)它能确定有序点云数据集的宽度(一行中点的数目)。

注意:有序点云数据集,意味着点云类似于图像(或者矩阵)的结构,数据分为行和列。例如WIDTH 640,每行都有640个点。

HEIGHT:用点的数目表示点云数据集的高度。

1)它表示有序点云数据集的高度(行的总数)。

2)对于无序数据集,它被设置成1(被用来检查一个数据集是有序还是无序)

VIEWPOINT:指定数据集中点云的获取视点。VIEWPOINT可能在不同坐标系之间转换的时候应用;

POINTS:指定点云中点的总数。

DATA:指定存储点云数据的数据类型。支持两种数据类型:ASCII和二进制。

注意:文件头最后一行(DATA)的下一个字节就被看成是点云的数据部分了,它会被解释为点云数据。

警告:PCD文件的文件头部分必须以上面的顺序精确指定,且彼此之间用换行隔开。

数据存储类型:

如果以ASCII形式,每一点占据一个新行:

p_1

p_2

...

p_n

从版本1.0.1开始,用字符串"nan"表示NaN,此字符表示该点的值不存在或非法。

如果以二进制形式,这里数据是数组(向量)pcl::PointCloud.points的一份完整拷贝。存储点云数据可以用简单的ASCII形式,没点占据一行,用空格或Tab键分开,没有其他任何字符。ASCII格式允许用户打开点云文件,用sed,awk等工具来对他们进行操作。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:解决springboot 实体类String转Date类型的坑
下一篇:02---控制移动底座5
相关文章

 发表评论

暂时没有评论,来抢沙发吧~