PCD(点云数据)文件格式
为什么用一种新的文件格式?
PCD文件格式并非白费力气地做重复工作,现有的文件结构因本身组成的原因不支持由PCL库引进n维点类型机制处理过程中的某些扩展,而PCD文件格式能够很好地补足这一点。PCD不是第一个支持3D点云数据的文件类型,尤其是计算机图形学和计算几何学领域,已经创建了很多格式来描述任意多边形和激光扫描仪获取的点云。包括下面几种格式:

  • PLY是一种多边形文件格式,由Stanford大学的Turk等人设计开发;

  • STL是3D Systems公司创建的模型文件格式,主要应用于CAD、CAM领域;

  • OBJ是从几何学上定义的文件格式,首先由Wavefront Technologies开发;

  • X3D是符合ISO标准的基于XML的文件格式,表示3D计算机图形数据;

  • 其他许多种格式。

以上所有的文件格式都有缺点,在下一节会讲到。这是很自然的,因为它们是在不同时间为了不同的使用目的所创建的,那时今天的新的传感器技术和算法都还没有发明出来。

PCD版本
在点云库(PCL)1.0版本发布之前,PCD文件格式有不同的修订号。这些修订号用PCD_Vx来编号(例如,PCD_V5、PCD_V6、PCD_V7等等),代表PCD文件的0.x版本号。然而PCL中PCD文件格式的正式发布是0.7版本(PCD_V7)。

文件头格式

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

  • VERSION –指定PCD文件版本

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

FIELDS x y z # XYZ data

FIELDS x y z rgb # XYZ + colors

FIELDS x y z normal_xnormal_y normal_z # XYZ + surface normals

FIELDS j1 j2 j3 # moment invariants

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

unsigned char/char has 1 byte

unsigned short/short has 2 bytes

unsignedint/int/float has 4 bytes

double has 8 bytes

  • TYPE –用一个字符指定每一个维度的类型。现在被接受的类型有:

I –表示有符号类型int8(char)、int16(short)和int32(int);

U – 表示无符号类型uint8(unsigned char)、uint16(unsigned short)和uint32(unsigned int);

F –表示浮点类型。

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

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

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

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

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

例如:

WIDTH 640 # 每行有640个点

·HEIGHT –用点的数目表示点云数据集的高度。类似于WIDTH ,HEIGHT也有两层解释:

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

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

有序点云例子:

WIDTH 640 # 像图像一样的有序结构,有640行和480列,

HEIGHT 480 # 这样该数据集中共有640*480=307200个点

无序点云例子:

WIDTH 307200

HEIGHT 1 # 有307200个点的无序点云数据集

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

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

VIEWPOINT 0 0 0 1 0 0 0

  • POINTS–指定点云中点的总数。从0.7版本开始,该字段就有点多余了,因此有可能在将来的版本中将它移除。

例子:

POINTS 307200 #点云中点的总数为307200

·DATA –指定存储点云数据的数据类型。从0.7版本开始,支持两种数据类型:ascii和二进制。查看下一节可以获得更多细节。

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

警告:PCD文件的文件头部分必须以上面的顺序精确指定,也就是如下顺序:

VERSION、FIELDS、SIZE、TYPE、COUNT、WIDTH、HEIGHT、VIEWPOINT、POINTS、DATA

之间用换行隔开。

数据存储类型
在0.7版本中,.PCD文件格式用两种模式存储数据:

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

p_1

p_2

p_n

注意:从PCL 1.0.1版本开始,用字符串“nan”表示NaN,此字符表示该点的值不存在或非法等。

如果以二进制形式,这里数据是数组(向量)pcl::PointCloud.points的一份完整拷贝,在Linux系统上,我们用mmap/munmap操作来尽可能快的读写数据,存储点云数据可以用简单的ascii形式,每点占据一行,用空格键或Tab键分开,没有其他任何字符。也可以用二进制存储格式,它既简单又快速,当然这依赖于用户应用。ascii格式允许用户打开点云文件,使用例如gunplot这样的标准软件工具更改点云文件数据,或者用sed、awk等工具来对它们进行操作。

相对其他文件格式的优势
用PCD作为(另一种)文件格式可能被看成是没有必要的一项工作。但实际中,情况不是这样的,因为上面提到的文件格式无一能提高PCD文件的适用性和速度。PCD文件格式包括以下几个明显的优势:

l 存储和处理有序点云数据集的能力——这一点对于实时应用,例如增强现实、机器人学等领域十分重要;

l 二进制mmap/munmap数据类型是把数据下载和存储到磁盘上最快的方法;

l 存储不同的数据类型(支持所有的基本类型:char,short,int,float,double)——使得点云数据在存储和处理过程中适应性强并且高效,其中无效的点的通常存储为NAN类型;

l 特征描述子的n维直方图——对于3D识别和计算机视觉应用十分重要。

另一个优势是通过控制文件格式,我们能够使其最大程度上适应PCL,这样能获得PCL应用程序的最好性能,而不用把一种不同的文件格式改变成PCL的内部格式,这样的话通过转换函数会引起额外的延时。

注意:尽管PCD(点云数据)是PCL中的内部文件格式,pcl_io库也提供在前面提到的所有其他文件格式中保存和加载数据。

例子
下面贴出了PCD文件的一个片段。把它留给读者以解析这些数据,看看它的组成,玩的愉快!

.PCD v.7 - Point Cloud Data file format

VERSION .7
FIELDS x y z rgb
SIZE 4 4 4 4
TYPE F FFF
COUNT 1 1 1 1
WIDTH 213
HEIGHT 1
VIEWPOINT 0 0 0 1 0 0 0
POINTS 213
DATA ascii
0.93773 0.33763 0 4.2108e+06
0.90805 0.35641 0 4.2108e+06

点云数据格式PCD(Point Cloud Data) 数据格式解析相关推荐

  1. 云数据迁移(Cloud Data Migration,CDM)

    云数据迁移(Cloud Data Migration,CDM) 云数据迁移(Cloud Data Migration,CDM)提供同构/异构数据源之间批量数据迁移服务,帮助客户实现数据自由流动.支持客 ...

  2. PCD文件格式(The PCD (Point Cloud Data) file format)

    本文档描述PCD(点云数据)文件格式,以及它在点云库(PCL)中的使用方式. PCD文件格式图标 PCD文件格式图标 #为什么新的文件格式? PCD文件格式并不意味着重新发明轮子,而是补充现有文件格式 ...

  3. 用matlab处理数字高程模型(DEM)之点云数据(point cloud data)

    数字高程模型(Digital Elevation Model,简称DEM)是通过有限的地形高程数据实现对地面地形的数字化模拟,它是用一组有序数值阵列形式表示地面高程的一种实体地面模型,是数字地形模型( ...

  4. PCL中PCD(Point Cloud Data)文件格式解析

    PCD文件格式 虽然已有很多3D点云数据的文件类型,但现有的文件结构因本身组成的原因不支持PCL库引进的n维点类型机制处理过程中的某些扩展.所以PCL官方选择了PCD文件格式. 其他点云格式: PLY ...

  5. Firebolt whitepaper - 2. Firebolt cloud data warehouse

    官方文档的技术白皮书 官方文档 https://www.firebolt.io/resources/firebolt-cloud-data-warehouse-whitepaper 目录 Firebo ...

  6. IBM中国开发中心吉燕勇: 通过Cloud Data Services打造新型认知计算数据分析云平台...

    在今年初IBM首席执行官Ginni Rometty公开表示将向认知计算与云计算平台方向转型之后,尽管外界一致认为这一过程并不会轻松,但经过近半年时间的努力,IBM确实已取得了一些进展,尤其是在中国国内 ...

  7. ajax请求的data数据格式

    ajax提交data类型 一.问题来源 今天使用ajax时,发现get传data时,传递json字符串时传不过去参数,所以做了一些实验测试ajax的get和post的传递data时的不同. 二.概念 ...

  8. 点云数据pcd文件简介

    SLAM学习交流可加群:248085206 三维点云数据简介 1 什么是点云数据 点云数据是指在一个三维坐标系中的一组向量的集合.这些向量通常以X,Y,Z三维坐标的形式表示,一般主要代表一个物体的外表 ...

  9. Spring Cloud Data Flow 中的 ETL

    来源:SpringForAll社区 1 概述 Spring Cloud Data Flow是一个用于构建实时数据管道和批处理过程的云原生工具包. Spring Cloud Data Flow已准备好用 ...

最新文章

  1. 【推荐系统】推荐系统冷启动问题
  2. 厉害了,我的清华大学,各系横幅让网友看花眼,尤其是第3条
  3. 我被跨系统的换行符折磨疯了~~~
  4. Spring Boot 2.0 开源项目--云收藏。收藏你所喜欢的一切。
  5. 杂项:SVN 常用方法
  6. 3.5 訪问者模式(5.11)
  7. PostgreSQL与MySQL的日期类型DATE/date的格式区别
  8. python进阶14文件路径(找不到文件)
  9. MyBatis-Plus速览【学习笔记】
  10. 自学python-python自学难吗
  11. linux翻转字符串
  12. 保存画面为图片 当前MFC保存该程序为图片 c++ vc
  13. SPC 之 I-MR 控制图
  14. FIT2CLOUD飞致云正式推出X-Lab孵化器,首期发布两款开源软件
  15. 英国高中A-Level和IB课程介绍
  16. 西游记中的第一神器是什么?
  17. 谁说NTFS不支持UEFI启动的?启动U盘放不了超过4G的文件怎么办?Server2016 Win10 U盘UEFI启动制作方法...
  18. Logistic回归与建模
  19. 【算法基础四】C语言小项目实战---通讯录管理系统(单链表)
  20. 【我的书】Unity Shader的书 — 文件夹(2015.12.21更新)

热门文章

  1. 怎样在豆瓣上为公众号引流?如何利用豆瓣推广微信公众号?
  2. Maven本地仓库复制
  3. Java网络商城项目 SpringBoot+SpringCloud+Vue 网络商城(SSM前后端分离项目)十(商品的规格类型以及参数管理)
  4. oracle install manually(手动建库)
  5. 自定义view(二) Path绘画详解 圆形进度条
  6. CentOS 安装 SS5 配置启动
  7. 2022考研笔记-政治(当代时政及规划)
  8. 【C#笔札】Tryparse的用法
  9. 虚拟机服务器桥接网络配置,虚拟机Vmware下CentOS6.5配置Bridged桥接方式上网及远程登录...
  10. 户外运动时常用的口语