• *.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

  • 相关阅读:
    Spring中的事务
    nodejs+python+java校园资料在线分享网站Vue项目
    如何配置远程访问以在外部网络中使用公司内部的OA办公系统——“cpolar内网穿透”
    【Java】springboot 枚举参数
    Mac 从源码安装wxWidgets 报错 fatal error: ‘tiff.h‘ file not found
    1048 Find Coins
    YOLOV8 进行docker环境配置
    Python零基础入门-10 标准库简介
    μC/OS-II---计时器管理1(os_tmr.c)
    oracle的使用sqlplush
  • 原文地址:https://blog.csdn.net/liuyangwuhan1980/article/details/126698494