pcl有序点云分析

在工作和学习中,只要是与点云打交道,那基本离不开pcl(point cloud library),点云pcd文件是我们最常接触到的文件,它的数据组织形式,可以分为有序(HEIGHT字段不为1)和无序两种(HEIGHT字段为1),对于有序点云,我们可以通过按照行列 cloud.at(column, row) 的方式来访问(注意对于pcd中的有序点云at方式的访问,列也就是宽度在前面,和常用的image访问相反),下面用代码进行验证。

pcd文件的数据头示例如下所示:

pcd 数据头

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

数据头含义如下:

pcd文件头 示例值 含义
VERSION 0.7 指定 PCD 文件版本为 0.7
FIELDS x y z intensity 指定点具有的每个字段的名称(x, y, z, intensity)
SIZE 4 4 4 4 以字节为单位指定每个维度的大小(unsigned char/char 1字节;unsigned short/short 2字节;unsigned int/int/float 4字节;double 8字节)
TYPE F F F F 指定每个字段类型(目前支持的类型有:I 表示int8(char), int16(short), int32(int) 的有符号类型;U 表示uint8(unsigned char), uint16(unsigned short), uint32(unsigned int) 无符号类型;F 表示浮点型
COUNT 1 1 1 1 指定每个维度有多少个元素。例如,x 数据通常有 1 个元素,但像 VFH 这样的特征描述符有 308 个。基本上这是一种在每个点引入 n 维度直方图描述符,并将它们视为单个连续内存块的方法。默认情况下,如果 COUNT 不存在,则所有维度的计数都设置为 1。
WIDTH 69088 以点数指定点云数据集的宽度。有序点云数据集是对类似于有序的图像(或矩阵)结构的点云的名称,其中数据被分成行和列。此类点云的示例包括来自立体相机或飞行时间相机的数据。有组织的数据集的优点在于,通过了解相邻点(例如像素)之间的关系,最近邻操作的效率要高得多,从而加快了计算速度并降低了 PCL 中某些算法的成本。宽度有两个含义:1)它可以为无序数据集指定点云中的总点数(等于 POINTS,见下文);2)它可以指定有组织的点云数据集的宽度(一行中的总点数)
HEIGHT 1 以点数指定点云数据集的高度。高度有两个含义:1)它可以指定一个有序的点云数据集的高度(总行数);2)对于无组织的数据集,它设置为 1(因此用于检查数据集是否有组织)。
VIEWPOINT 0 0 0 1 0 0 0 指定数据集中点的采集视点。这可能会在以后用于构建不同坐标系之间的变换,或用于辅助需要一致方向的表面法线等特征。
POINTS 69088 指定点云中点的总数。从 0.7 版本开始,它的目的有点多余,所以我们希望在未来的版本中删除它。
DATA binary 指定存储点云数据的数据类型。从 0.7 版本开始,支持两种数据类型:ascii 和 binary。

示例分析

这里我随便新建一个 “test.pcd” 文件,将如下内容粘贴进去,创建一个高度为4,宽度为10的 4 x 10 的有序点云序列,坐标为:

w i d t h ( 1 , 1 , 0 ) ( 1 , 2 , 0 ) ( 1 , 3 , 0 ) ⋯ ( 1 , 10 , 0 ) h e i g h t ( 2 , 1 , 0 ) ( 2 , 2 , 0 ) ( 2 , 3 , 0 ) ⋯ ( 2 , 10 , 0 )

  • 5
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值