• *.pcd文件格式


    (1)文件头是文本,以\n换行;

    (2)数据部分可以是ASCII也可以是二进制:

    (a)从DATA关键字所在的最后一行文件头结束的\n开始,都是点数据;

    (b)ASCII形式的点数据:每一点(x y z)占据一个新行(\n结尾),维度数据之间用空格或者TAB键隔开,从PCL1.0.1版本开始,字符串nan表示非法值NAN;

    (c)二进制形式的点数据:这里数据是数组(向量)pcl::PointCloud.points的一份完整拷贝,在Linux系统上,我们用mmap/munmap操作来尽可能快地读写数据。

    (3)有序点云数据集

    有序点云数据集,意味着点云是类似于图像(或者矩阵)的结构,数据分为行和列。这种点云的实例包括立体摄像机和时间飞行摄像机生成的数据。有序数据集的优势在于,预先了解相邻点(和像素点类似)的关系,邻域操作更加高效,这样就加速了计算并降低了PCL中某些算法的成本。

    (4)文件头每行由关键字开头,并且关键字有固定顺序,有以下一些关键字:

    VERSION:指定PCD文件版本(例如:0.7)

    FIELDS:指定一个点可以有的每一个维度的字段名字(例如:x y z 、x y z rgb)

    SIZE:每一个维度的值类型的字节数(例如:4 4 4)

    TYPE:每一个维度的值类型(例如:I I F、U U F、F F F、I I I)

    COUNT:指定每一个维度包含的元素数目(每个元素还包含1个或者多个值)。例如,x这个维度的通常有一个元素,但是像VFH这样的特征描述子就有308个。实际上这是在给每一点引入n维直方图描述符的方法,把它们当做单个的连续存储块。默认情况下,如果没有COUNT,所有维度的数目被设置为1。

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

    (a)它能确定无序数据集的点云中点的个数(和下面的POINTS一样);

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

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

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

    (b)对于有序数据集,它表示有序数据集的高度(行的总数)。

    VIEWPOINT:指定数据集中点云的获取视点。VIEWPOINT可能在不同坐标系之间转换的时候应用,在辅助获取其它特征时也比较有用,例如曲面法线,在判断方向一致性时,需要知道视点的方位。

    视点信息被指定为平移(txtytz)+四元数(qwqxqyqz),默认值为:VIEWPOINT 0 0 0 1 0 0 0。

    POINTS:点云数据集中点的总数,从0.7版本开始,该字段有点多余了,因为根据WIDTH字段和HEIGHT字段可以计算出点的总数,将来的pcd文件版本中可能移除该关键字。

    DATA:指定存储点云数据的数据类型。从0.7版本开始,支持两种数据类型:ASCII和二进制。

    (5)一个PCD文件的例子:

    #Description

    FIELDS x y z

    SIZE 4 4 4

    TYPE F F F

    WIDTH 2

    HEIGHT 1

    POINTS 2

    DATA ascii

    0.35222 -0.15188 -0.1064

    -0.7319 -0.47311 -0.2927

  • 相关阅读:
    公务员备考(二十四) 申论强化
    HyperLynx(六)参数扫描仿真
    python中sklearn库在数据预处理中的详细用法,及5个常用的Scikit-learn(通常简称为 sklearn)程序代码示例
    学生体育铅球网页设计作品静态HTML网页模板源码 大学生体育铅球网站制作 简单校园体育网页设计成品
    课题学习(六)----安装误差校准、实验方法
    C++ day2
    九月 Web3 游戏报告:数量增长,巨头入场,用户获取和留存仍存挑战
    JAVA微信小程序实验室教室预约小程序系统毕业设计 开题报告
    三个目前主流的计算机视觉软件
    生命科学领域下的“全球突破性十大技术”干货与分享
  • 原文地址:https://blog.csdn.net/liuyangwuhan1980/article/details/126698494