• 第四章输入/输出(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)

    文件头格式

    每一个PCD文件都包含一个文件头,它确定和声明文件中存储的点云数据的某种特性。PCD文件头必须用ASCII码来编码。PCD文件中指定的每一个文件头字段以及ASCII点数据都用一个新行( )分开了,PCD文件头包含下面的这些字段:

    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等工具来对他们进行操作。

  • 相关阅读:
    如何添加动画效果
    iQuery高版本不兼容旋转木马插件问题
    splice方法可以实现增删改功能
    swiper.js实现轮播图效果
    MySQL | 操作表数据
    MySQL | 高级查询
    MySQL | 基本查询
    MySQL | 表函数
    MySQL | 表约束
    MySQL | 操作表
  • 原文地址:https://www.cnblogs.com/gary-guo/p/6641640.html
Copyright © 2020-2023  润新知