PCL库学习笔记(基础)

PCL库学习笔记(基础)

文件格式详解

1、PCD

PCD(Point Cloud Date,点云数据) 对应的文件格式为**(.pcd)** ,是PCL官方指定的存储格式,具有ASCII和Binary两种数据存储类型,pcd格式具有文件头,用于描述点云的整体信息。

2、文件格式说明

代码

# .PCD v0.7 - Point Cloud Data file format
VERSION 0.7
FIELDS x y z
SIZE 4 4 4
TYPE F F F
COUNT 1 1 1
WIDTH 278
HEIGHT 1
VIEWPOINT 0 0 0 1 0 0 0
POINTS 278
DATA acsii

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 // 1 byte
unsigned short/short // 2 bytes
unsigned int/int/float // 4 bytes
double // 8 bytes

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

I – 表示有符号类型 int8(char)、int16(short)和int32(int);
U – 表示无符号类型 uint8(unsigned char)、uint16(unsigned short)和uint32(unsigned int);
F – 表示浮点类型。

COUNT------指定每一个维度包含的元素数目

默认情况下,如果没有 COUNT, 所有维度的数目被设置成 1

WIDHT------用点的数量表示点云数据集的宽度

1)它能确定无序数据集的点云中点的个数;
2)它能确定有序点云数据集的宽度(一行中点的数目)。
例如:
WIDTH 640 // 每行有640个点

HIGHT------用点的数量表示点云数据集的高度

1)它表示有序点云数据集的高度(行的总数);
2)对于无序数据集它被设置成1(被用来检查一个数据集是有序还是无序)。
//有序点云例子:
WIDTH 640 //像图像一样的有序结构,有640行和480列,
HEIGHT 480 // 这样该数据集中共有640*480=307200个点
//无序点云:
WIDTH 307200
HEIGHT 1 //有307200个点的无序点云数据集

VIEWPOINT------指定数据集中点云的获取视点

VIEWPOINT有可能在不同坐标系之间转换的时候应用,在辅助获取其他特征时也比较有用,例如曲面法线,在判断方向一致性时,需要知道视点的方位,
视点信息被指定为平移(tx, ty, tz)+ 四元数(qw, qx, qy, qz)。
默认值是:VIEWPOINT 0 0 0 1 0 0 0

POINTS------指定点云中点的总数,例如:

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

DATA------指定存储点云数据的数据类型

0.7版本开始,支持两种数据类型::ASCII形式和binary形式

注意:
1、文件头DATA的下一字节就被看成是点云的数据部分,它会被解释成点云数据;
2、PCD文件的文件头部分必须以上面介绍的顺序精确指定。

示例

# .PCD v0.7 - Point Cloud Data file format
VERSION 0.7
FIELDS x y z
SIZE 4 4 4
TYPE F F F
COUNT 1 1 1
WIDTH 89
HEIGHT 1
VIEWPOINT 0 0 0 1 0 0 0
POINTS 89
DATA ascii
-21.368 -137.98199 -23
-21.301001 -137.745 -23
-21.257 -137.52699 -23
-21.219999 -137.34801 -23
-21.153 -137.12399 -23
-21.117001 -136.967 -23
-21.066999 -136.71001 -23
-20.999001 -136.47301 -23
-20.954 -136.23599 -23
-20.882 -135.97501 -23
	...

3、数据存储类型

在0.7版本中,.PCD文件格式用两种模式存储数据:
1>ASCII形式:每一点放在一个新行上

p_1
p_2
p_3
p_4
...
p_n

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

2>binary格式:数据是pcl::PointCloud::points数组或者vector的完整内存复制。Linux系统中,使用mmap/munmap操作使得数据读/写尽可能快

下面附上一个PCD文件的代码,读者可以保存并用于代码复现:

# .PCD v.7 - Point Cloud Data file format
VERSION .7
FIELDS x y z rgb
SIZE 4 4 4 4
TYPE F F F F
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
0.81915 0.32 0 4.2108e+06
0.97192 0.278 0 4.2108e+06
0.944 0.29474 0 4.2108e+06
0.98111 0.24247 0 4.2108e+06
0.93655 0.26143 0 4.2108e+06
0.91631 0.27442 0 4.2108e+06
0.81921 0.29315 0 4.2108e+06
0.90701 
  • 3
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

聪 ~smart

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值