常见点云文件解析
1. 为什么会有这么多的点云文件
我们在做2D视觉时,处理的就是类似一系列类似的二维数组,数组以图片的形式进行保存,处理的图片也有甚多的格式,比如png,jpg,bmp等。那我们在做3D视觉的时候,处理的主要是点云,点云就是由一些点的集合。点云在组成特点上分为两种,一种是有序点云,一种是无序点云。
有序点云: 一般由深度图还原的点云,有序点云按照图方阵一行一行的,从左上角到右下角排列,当然其中有一些无效点。因为有序点云按顺序排列,可以很容易的找到它的相邻点信息。有序点云在某些处理的时候还是很便利的,但是很多情况下是无法获取有序点云的。
无序点云: 无序点云就是其中的点的集合,点排列之间没有任何顺序,点的顺序交换后没有任何影响,是比较普遍的点云形式。有序点云也可看做无序点云来处理。

在对点云这个格式有了初步的了解之后,我们来看看该怎么保存这些点云呢。
目前就文件格式而言 有ASCII码和二进制 两种编码形式,ASCII码可以直接阅读里面存储的内容,二进制的保存形式则不可读,但体积会更小。这两种保存都是没有进行过压缩的。
文件的内容的组成就有很多种形式了,也是本篇文章主要介绍的内容,我们来看看常见的格式:
*.pcd
*.off
*.xyz
*.ply
*.obj
*.stl
*.vtk
*.3ds
2. 常见的点云文件格式解析
2.1 pcd格式
# .PCD v0.7 - Point Cloud Data file format //注释
VERSION 0.7 //PCD文件版本
FIELDS x y z r g b intensity timestamp //每个点包含哪些维度,xyz表示XYZ三维坐标,rgb表示颜色(可以分开表示,也可以一个浮点数表示),intensity表示激光反射强度,timestamp表示时间戳,normal_x、normal_y、normal_z表示平面法线三维坐标,j1、j2、j3表示不变矩。
SIZE 4 4 4 1 1 1 1 8 //每个维度的数据占用字节大小
TYPE F F F U U U U F //每个维度的数据类型,I表示有符号类型int8(char)、int16(short)、int32(int),U表示无符号类型uint8(unsigned char)、uint16(unsigned short)、uint32(unsigned int),F表示浮点型
COUNT 1 1 1 1 1 1 1 1 //每个维度含有多少个元素(如果未提供COUNT属性,默认值为1)
WIDTH 32 //用点的数量表示点云数据集的宽度。有两种含义:1.无序数据集的点云中点的数量 2.有序点云数据集的宽度(一行中点的数量),有序点云数据集中,点云类似图片或矩阵的结构,分为行和列,这种数据通常来自于立体摄像机(stereo camera)、时间飞行摄像机(Time Of Flight camera,使用红外线或者光脉冲来估计光线从发射到检测到的时间延迟来测量距离),知道点的相邻关系,使算法计算更高效。
HEIGHT 2172 //用点云数据集中点的数量表示点云数据集的高度。高度有如下两种含义:1.有序的点云数据集中,行的数量 2.无序点云数据集中,高度为1(可以用来判断一个数据集是有序的还是无序的)
VIEWPOINT 0 0 0 1 0 0 0 //指定数据集合中点的采集视点。可以用来后续可能的坐标转换,或者求平面法线坐标。格式是平移(tx ty tz) + 四元数(qw qx qy qz),默认是0 0 0 1 0 0 0。
POINTS 69504 //点云中点的总数(冗余字段)
DATA binary_compressed //点云数据的存储类型,0.7版本支持两种存储方式:ascii和binary。
文件格式头中的顺序不能改变,即一定是如下顺序:
VERSION、FIELDS、SIZE、TYPE、COUNT、WIDTH、HEIGHT、VIEWPOINT、POINTS、DATA
pcd作为PCL库官方指定格式,典型的为点云量身定制的格式。优点是支持n维点类型扩展机制,能够更好的发挥PCL库的点云处理性能。文件格式有文本和二进制两种格式。仅能支持点云数据,不能支持线面数据。
2.2 off格式
OFF格式文件头有两行:第一行以off关键字开头,第二行表示顶点数、面数、边数。主体分为顶点坐标(顶点列表)和面的顶点索引(面列表)两个部分,其中每个面的顶点数可以指定,用第一个数表示。
OFF
顶点数 面数 边数
x y z
x y z
…
n个顶点 顶点1的索引 顶点2的索引 … 顶点n的索引
…
举个例子
OFF
8 6 0
-0.500000 -0.500000 0.500000
0.500000 -0.500000 0.500000
-0.500000 0.500000 0.500000
0.500000 0.500000 0.500000
-0.500000 0.500000 -0.500000
0.500000 0.500000 -0.500000
-0.500000 -0.500000 -0.500000
0.500000 -0.500000 -0.500000
4 0 1 3 2
4 2 3 5 4
4 4 5 7 6
4 6 7 1 0
4 1 7 5 3
4 6 0 2 4
OFF相对其他格式,更加的简单,可以存储点和面,仅有文本格式。
2.3 xyz格式
前面3个数字是坐标,后面3个数字是法向量(也有代表颜色信息),有多少行就代表有多少个点。
17.371559 -6.531680 -8.080792 0.242422 0.419118 0.874970 //一般前三个数带标xyz,后面三个数代表法向量,也有代表颜色信息的。
15.640106 -16.101347 -9.550241 -0.543610 -0.382877 0.746922
17.750742 -6.395478 -8.307115

本文介绍了3D视觉中处理的点云,包括有序点云和无序点云。点云文件有ASCII码和二进制两种编码形式。重点解析了常见的点云文件格式,如pcd、off、xyz、ply、obj、stl等,阐述了各格式的特点、文件头及内容组成等。

1万+

被折叠的 条评论
为什么被折叠?



