PCD格式点云文件结构及在线查看工具

2023-11-21 04:40

本文主要是介绍PCD格式点云文件结构及在线查看工具,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

本文档描述了 PCD(点云数据)文件格式及其在点云库(PCL)中的使用方式。可以使用NSDT 3DConvert 在线预览查看PCD格式的点云数据文件。

在这里插入图片描述

推荐:用 NSDT编辑器 快速搭建可编程3D场景

1、为何定义新的点云数据文件格式?

PCD 文件格式并不是要重新发明轮子,而是为了补充现有的文件格式,这些文件格式由于某种原因不支持 PCL 为 n 维点云处理带来的某些扩展。

PCD 不是第一个支持 3D 点云数据的文件类型。 特别是计算机图形学和计算几何社区已经创建了多种格式来描述使用激光扫描仪获取的任意多边形和点云。 其中一些格式包括:

  • PLY - 一种多边形文件格式,由 Turk 等人在斯坦福大学开发
  • STL - 3D Systems 创建的立体光刻 CAD 软件原生的文件格式
  • OBJ - 一种几何定义文件格式,最初由 Wavefront Technologies 开发
  • X3D - 用于表示 3D 计算机图形数据的基于 XML 的 ISO 标准文件格式
  • 和许多其他格式…

所有上述文件格式都存在一些缺点,如下一节所述 - 这是很自然的,因为它们是在当今的传感技术和算法发明之前、在不同的时间、为不同的目的而创建的。

考虑到后向兼容性,如果需要将PCD转换为PLY、XYZ等其他格式,可以使用NSDT 3DConvert这个在线3D格式转换工具,无需在本地安装任何软件:

在这里插入图片描述

https://3dconvert.nsdt.cloud

2、PCD 版本

在点云库 (PCL) 版本 1.0 发布之前,PCD 文件格式可能具有不同的修订号。 它们以 PCD_Vx 编号(例如 PCD_V5、PCD_V6、PCD_V7 等),代表 PCD 文件的版本号 0.x。

然而,PCL 中 PCD 文件格式的官方入口点应该是版本 0.7 (PCD_V7)。

3、文件格式标头

每个 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_x normal_y normal_z     # XYZ + surface normals
FIELDS j1 j2 j3                             # moment invariants
...

SIZE - 指定每个维度的大小(以字节为单位)。 示例:

  • unsigned char/char 有 1 个字节
  • unsigned short/short有 2 个字节
  • unsigned int/int/float 有 4 个字节
  • double 有 8 个字节

TYPE - 将每个维度的类型指定为字符。 目前接受的类型有:

  • I - 表示有符号类型 int8 (char)、int16 (short) 和 int32 (int)
  • U - 表示无符号类型 uint8 (unsigned char)、uint16 (unsigned Short)、uint32 (unsigned int)
  • F - 代表浮点类型

COUNT - 指定每个维度有多少个元素。 例如,x 数据通常有 1 个元素,但像 VFH 这样的特征描述符有 308 个。基本上,这是一种在每个点引入 n 维直方图描述符的方法,并将它们视为单个连续的内存块。 默认情况下,如果 COUNT 不存在,则所有维度的计数设置为 1。

WIDTH - 指定点云数据集的宽度(以点数表示)。 宽度有两个含义:

  • 它可以指定未组织数据集的云中点的总数(等于下面的 POINTS);
  • 它可以指定组织的点云数据集的宽度(一行中的总点数)。

另请参阅HEIGHT。

组织点云数据集是类似于组织图像(或矩阵)结构的点云的名称,其中数据被分为行和列。 此类点云的示例包括来自立体相机或飞行时间相机的数据。 有组织的数据集的优点是,通过了解相邻点(例如像素)之间的关系,最近邻操作更加高效,从而加快计算速度并降低 PCL 中某些算法的成本。

例如:

WIDTH 640 # 每行有 640 个点

HEIGHT - 指定点云数据集的高度(以点数表示)。 高度有两个含义:

它可以指定组织好的点云数据集的高度(总行数);
对于无组织的数据集,它设置为 1(因此用于检查数据集是否有组织)。

例如:

WIDTH 640 # 类似图像的组织结构,有480行和640列,
HEIGHT 480 # 因此数据集中共有 640*480=307200 点

或者:

WIDTH 307200
HEIGHT 1 # 具有 307200 个点的无组织点云数据集

VIEWPOINT - 指定数据集中点的采集视点。 这可能稍后用于在不同坐标系之间构建转换,或者用于帮助需要一致方向的特征,例如表面法线。

视点信息被指定为平移(tx ty tz)+四元数(qw qx qy qz)。 默认值为:

VIEWPOINT 0 0 0 1 0 0 0

POINTS - 指定云中点的总数。 从 0.7 版本开始,它的用途有点多余,所以我们希望在未来的版本中删除它。

例如:

POINTS 307200 # 云中的点总数

DATA - 指定存储点云数据的数据类型。从0.7版本开始,支持三种数据类型:ascii、binary和binary_compressed。 有关更多详细信息,请参阅下一节。

紧接着标题最后一行 (DATA) 的下一个字节被视为点云数据的一部分,并将如此解释。

警告:标头条目必须按照上述顺序精确指定,即:

VERSION
FIELDS
SIZE
TYPE
COUNT
WIDTH
HEIGHT
VIEWPOINT
POINTS
DATA

4、数据存储类型

从版本 0.7 开始,.PCD 文件格式使用三种不同的模式来存储数据:

4.1 ASCII形式

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

p_1
p_2
p_3
p_4
...
p_n

从 PCL 版本 1.0.1 开始,NaN 的字符串表示形式为“nan”。

4.2 二进制形式

以二进制形式,其中数据是 pcl::PointCloud.points 数组/向量的完整内存副本。 在 Linux 系统上,我们使用 mmap/munmap 操作来尽可能最快地读取/写入数据。

4.3 二进制压缩形式

以二进制压缩形式。 主体(标头之后的所有内容)以 32 位无符号二进制数开头,它指定压缩形式数据的大小(以字节为单位)。

接下来是另一个 32 位无符号二进制数,它指定未压缩形式的数据的大小(以字节为单位)。

然后是压缩数据。 压缩和解压缩是使用 Marc Lehmann 的 LZF 算法完成的。 它在尺寸减小方面表现平庸,但速度非常快。

对于典型的点云,压缩后的数据大小为原始大小的 30% 到 60%。 在压缩之前,数据会被重新排序以改进压缩,从标准结构数组布局到数组结构布局。 例如,具有三个点和字段 x、y、z 的云将从 xyzxyzxyz 重新排序为 xxxyyyzzz。

以简单的 ascii 形式存储点云数据,每个点以行、空格或制表符分隔,上面没有任何其他字符,以及以二进制转储格式存储,使我们能够两全其美:简单和 速度,取决于底层应用程序。 ascii 格式允许用户打开点云文件并使用 gnuplot 等标准软件工具绘制它们,或使用 sed、awk 等工具操作它们。

5、PCD相对于其他格式的优势

将 PCD 作为(另一种)文件格式可以视为 PCL 患有“此处未发明综合症”。 事实上,情况并非如此,因为上述文件格式都没有提供 PCD 文件的灵活性和速度。 一些明确指出的优点包括:

存储和处理有组织的点云数据集的能力——这对于实时应用以及增强现实、机器人等研究领域极其重要;
二进制 mmap/munmap 数据类型是将数据加载和保存到磁盘的最快方式。
存储不同的数据类型(支持所有原语:char、short、int、float、double)允许点云数据在存储和处理方面灵活高效。 无效的点维度通常存储为 NAN 类型。
特征描述符的 n 维直方图 – 对于 3D 感知/计算机视觉应用非常重要
另一个额外的优点是,通过控制文件格式,我们可以最好地使其适应 PCL,从而获得 PCL 应用程序的最高性能,而不是使不同的文件格式适应 PCL 作为本机类型并通过转换引入额外的延迟 功能。

尽管 PCD(点云数据)是 PCL 中的本机文件格式,但 pcl_io 库也应该提供以所有其他上述文件格式保存和加载数据的可能性。

6、PCD文件示例

下面附有 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 0.24109 0 4.2108e+06
0.83239 0.23398 0 4.2108e+06
0.99185 0.2116 0 4.2108e+06
0.89264 0.21174 0 4.2108e+06
0.85082 0.21212 0 4.2108e+06
0.81044 0.32222 0 4.2108e+06
0.74459 0.32192 0 4.2108e+06
0.69927 0.32278 0 4.2108e+06
0.8102 0.29315 0 4.2108e+06
0.75504 0.29765 0 4.2108e+06
0.8102 0.24399 0 4.2108e+06
0.74995 0.24723 0 4.2108e+06
0.68049 0.29768 0 4.2108e+06
0.66509 0.29002 0 4.2108e+06
0.69441 0.2526 0 4.2108e+06
0.62807 0.22187 0 4.2108e+06
0.58706 0.32199 0 4.2108e+06
0.52125 0.31955 0 4.2108e+06
0.49351 0.32282 0 4.2108e+06
0.44313 0.32169 0 4.2108e+06
0.58678 0.2929 0 4.2108e+06
0.53436 0.29164 0 4.2108e+06
0.59308 0.24134 0 4.2108e+06
0.5357 0.2444 0 4.2108e+06
0.50043 0.31235 0 4.2108e+06
0.44107 0.29711 0 4.2108e+06
0.50727 0.22193 0 4.2108e+06
0.43957 0.23976 0 4.2108e+06
0.8105 0.21112 0 4.2108e+06
0.73555 0.2114 0 4.2108e+06
0.69907 0.21082 0 4.2108e+06
0.63327 0.21154 0 4.2108e+06
0.59165 0.21201 0 4.2108e+06
0.52477 0.21491 0 4.2108e+06
0.49375 0.21006 0 4.2108e+06
0.4384 0.19632 0 4.2108e+06
0.43425 0.16052 0 4.2108e+06
0.3787 0.32173 0 4.2108e+06
0.33444 0.3216 0 4.2108e+06
0.23815 0.32199 0 4.808e+06
0.3788 0.29315 0 4.2108e+06
0.33058 0.31073 0 4.2108e+06
0.3788 0.24399 0 4.2108e+06
0.30249 0.29189 0 4.2108e+06
0.23492 0.29446 0 4.808e+06
0.29465 0.24399 0 4.2108e+06
0.23514 0.24172 0 4.808e+06
0.18836 0.32277 0 4.808e+06
0.15992 0.32176 0 4.808e+06
0.08642 0.32181 0 4.808e+06
0.039994 0.32283 0 4.808e+06
0.20039 0.31211 0 4.808e+06
0.1417 0.29506 0 4.808e+06
0.20921 0.22332 0 4.808e+06
0.13884 0.24227 0 4.808e+06
0.085123 0.29441 0 4.808e+06
0.048446 0.31279 0 4.808e+06
0.086957 0.24399 0 4.808e+06
0.3788 0.21189 0 4.2108e+06
0.29465 0.19323 0 4.2108e+06
0.23755 0.19348 0 4.808e+06
0.29463 0.16054 0 4.2108e+06
0.23776 0.16054 0 4.808e+06
0.19016 0.21038 0 4.808e+06
0.15704 0.21245 0 4.808e+06
0.08678 0.21169 0 4.808e+06
0.012746 0.32168 0 4.808e+06
-0.075715 0.32095 0 4.808e+06
-0.10622 0.32304 0 4.808e+06
-0.16391 0.32118 0 4.808e+06
0.00088411 0.29487 0 4.808e+06
-0.057568 0.29457 0 4.808e+06
-0.0034333 0.24399 0 4.808e+06
-0.055185 0.24185 0 4.808e+06
-0.10983 0.31352 0 4.808e+06
-0.15082 0.29453 0 4.808e+06
-0.11534 0.22049 0 4.808e+06
-0.15155 0.24381 0 4.808e+06
-0.1912 0.32173 0 4.808e+06
-0.281 0.3185 0 4.808e+06
-0.30791 0.32307 0 4.808e+06
-0.33854 0.32148 0 4.808e+06
-0.21248 0.29805 0 4.808e+06
-0.26372 0.29905 0 4.808e+06
-0.22562 0.24399 0 4.808e+06
-0.25035 0.2371 0 4.808e+06
-0.29941 0.31191 0 4.808e+06
-0.35845 0.2954 0 4.808e+06
-0.29231 0.22236 0 4.808e+06
-0.36101 0.24172 0 4.808e+06
-0.0034393 0.21129 0 4.808e+06
-0.07306 0.21304 0 4.808e+06
-0.10579 0.2099 0 4.808e+06
-0.13642 0.21411 0 4.808e+06
-0.22562 0.19323 0 4.808e+06
-0.24439 0.19799 0 4.808e+06
-0.22591 0.16041 0 4.808e+06
-0.23466 0.16082 0 4.808e+06
-0.3077 0.20998 0 4.808e+06
-0.3413 0.21239 0 4.808e+06
-0.40551 0.32178 0 4.2108e+06
-0.50568 0.3218 0 4.2108e+06
-0.41732 0.30844 0 4.2108e+06
-0.44237 0.28859 0 4.2108e+06
-0.41591 0.22004 0 4.2108e+06
-0.44803 0.24236 0 4.2108e+06
-0.50623 0.29315 0 4.2108e+06
-0.50916 0.24296 0 4.2108e+06
-0.57019 0.22334 0 4.2108e+06
-0.59611 0.32199 0 4.2108e+06
-0.65104 0.32199 0 4.2108e+06
-0.72566 0.32129 0 4.2108e+06
-0.75538 0.32301 0 4.2108e+06
-0.59653 0.29315 0 4.2108e+06
-0.65063 0.29315 0 4.2108e+06
-0.59478 0.24245 0 4.2108e+06
-0.65063 0.24399 0 4.2108e+06
-0.70618 0.29525 0 4.2108e+06
-0.76203 0.31284 0 4.2108e+06
-0.70302 0.24183 0 4.2108e+06
-0.77062 0.22133 0 4.2108e+06
-0.41545 0.21099 0 4.2108e+06
-0.45004 0.19812 0 4.2108e+06
-0.4475 0.1673 0 4.2108e+06
-0.52031 0.21236 0 4.2108e+06
-0.55182 0.21045 0 4.2108e+06
-0.5965 0.21131 0 4.2108e+06
-0.65064 0.2113 0 4.2108e+06
-0.72216 0.21286 0 4.2108e+06
-0.7556 0.20987 0 4.2108e+06
-0.78343 0.31973 0 4.2108e+06
-0.87572 0.32111 0 4.2108e+06
-0.90519 0.32263 0 4.2108e+06
-0.95526 0.34127 0 4.2108e+06
-0.79774 0.29271 0 4.2108e+06
-0.85618 0.29497 0 4.2108e+06
-0.79975 0.24326 0 4.2108e+06
-0.8521 0.24246 0 4.2108e+06
-0.91157 0.31224 0 4.2108e+06
-0.95031 0.29572 0 4.2108e+06
-0.92223 0.2213 0 4.2108e+06
-0.94979 0.24354 0 4.2108e+06
-0.78641 0.21505 0 4.2108e+06
-0.87094 0.21237 0 4.2108e+06
-0.90637 0.20934 0 4.2108e+06
-0.93777 0.21481 0 4.2108e+06
0.22244 -0.0296 0 4.808e+06
0.2704 -0.078167 0 4.808e+06
0.24416 -0.056883 0 4.808e+06
0.27311 -0.10653 0 4.808e+06
0.26172 -0.10653 0 4.808e+06
0.2704 -0.1349 0 4.808e+06
0.24428 -0.15599 0 4.808e+06
0.19017 -0.025297 0 4.808e+06
0.14248 -0.02428 0 4.808e+06
0.19815 -0.037432 0 4.808e+06
0.14248 -0.03515 0 4.808e+06
0.093313 -0.02428 0 4.808e+06
0.044144 -0.02428 0 4.808e+06
0.093313 -0.03515 0 4.808e+06
0.044144 -0.03515 0 4.808e+06
0.21156 -0.17357 0 4.808e+06
0.029114 -0.12594 0 4.2108e+06
0.036583 -0.15619 0 4.2108e+06
0.22446 -0.20514 0 4.808e+06
0.2208 -0.2369 0 4.808e+06
0.2129 -0.208 0 4.808e+06
0.19316 -0.25672 0 4.808e+06
0.14497 -0.27484 0 4.808e+06
0.030167 -0.18748 0 4.2108e+06
0.1021 -0.27453 0 4.808e+06
0.1689 -0.2831 0 4.808e+06
0.13875 -0.28647 0 4.808e+06
0.086993 -0.29568 0 4.808e+06
0.044924 -0.3154 0 4.808e+06
-0.0066125 -0.02428 0 4.808e+06
-0.057362 -0.02428 0 4.808e+06
-0.0066125 -0.03515 0 4.808e+06
-0.057362 -0.03515 0 4.808e+06
-0.10653 -0.02428 0 4.808e+06
-0.15266 -0.025282 0 4.808e+06
-0.10653 -0.03515 0 4.808e+06
-0.16036 -0.037257 0 4.808e+06
0.0083286 -0.1259 0 4.2108e+06
0.0007442 -0.15603 0 4.2108e+06
-0.1741 -0.17381 0 4.808e+06
-0.18502 -0.02954 0 4.808e+06
-0.20707 -0.056403 0 4.808e+06
-0.23348 -0.07764 0 4.808e+06
-0.2244 -0.10653 0 4.808e+06
-0.23604 -0.10652 0 4.808e+06
-0.20734 -0.15641 0 4.808e+06
-0.23348 -0.13542 0 4.808e+06
0.0061083 -0.18729 0 4.2108e+06
-0.066235 -0.27472 0 4.808e+06
-0.17577 -0.20789 0 4.808e+06
-0.10861 -0.27494 0 4.808e+06
-0.15584 -0.25716 0 4.808e+06
-0.0075775 -0.31546 0 4.808e+06
-0.050817 -0.29595 0 4.808e+06
-0.10306 -0.28653 0 4.808e+06
-0.1319 -0.2831 0 4.808e+06
-0.18716 -0.20571 0 4.808e+06
-0.18369 -0.23729 0 4.808e+06

原文链接:PCD文件结构及在线查看 — BimAnt

这篇关于PCD格式点云文件结构及在线查看工具的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/399866

相关文章

水位雨量在线监测系统概述及应用介绍

在当今社会,随着科技的飞速发展,各种智能监测系统已成为保障公共安全、促进资源管理和环境保护的重要工具。其中,水位雨量在线监测系统作为自然灾害预警、水资源管理及水利工程运行的关键技术,其重要性不言而喻。 一、水位雨量在线监测系统的基本原理 水位雨量在线监测系统主要由数据采集单元、数据传输网络、数据处理中心及用户终端四大部分构成,形成了一个完整的闭环系统。 数据采集单元:这是系统的“眼睛”,

电力系统中的A类在线监测装置—APView400

随着电力系统的日益复杂和人们对电能质量要求的提高,电能质量在线监测装置在电力系统中得到广泛应用。目前,市场上的在线监测装置主要分为A类和B类两种类型,A类和B类在线监测装置主要区别在于应用场景、技术参数、通讯协议和扩展性。选择时应根据实际需求和应用场景综合考虑,并定期维护和校准。电能质量在线监测装置是用于实时监测电力系统中的电能质量参数的设备。 APView400电能质量A类在线监测装置以其多核

高效录音转文字:2024年四大工具精选!

在快节奏的工作生活中,能够快速将录音转换成文字是一项非常实用的能力。特别是在需要记录会议纪要、讲座内容或者是采访素材的时候,一款优秀的在线录音转文字工具能派上大用场。以下推荐几个好用的录音转文字工具! 365在线转文字 直达链接:https://www.pdf365.cn/ 365在线转文字是一款提供在线录音转文字服务的工具,它以其高效、便捷的特点受到用户的青睐。用户无需下载安装任何软件,只

usaco 1.3 Mixing Milk (结构体排序 qsort) and hdu 2020(sort)

到了这题学会了结构体排序 于是回去修改了 1.2 milking cows 的算法~ 结构体排序核心: 1.结构体定义 struct Milk{int price;int milks;}milk[5000]; 2.自定义的比较函数,若返回值为正,qsort 函数判定a>b ;为负,a<b;为0,a==b; int milkcmp(const void *va,c

2、PF-Net点云补全

2、PF-Net 点云补全 PF-Net论文链接:PF-Net PF-Net (Point Fractal Network for 3D Point Cloud Completion)是一种专门为三维点云补全设计的深度学习模型。点云补全实际上和图片补全是一个逻辑,都是采用GAN模型的思想来进行补全,在图片补全中,将部分像素点删除并且标记,然后卷积特征提取预测、判别器判别,来训练模型,生成的像

【Linux 从基础到进阶】Ansible自动化运维工具使用

Ansible自动化运维工具使用 Ansible 是一款开源的自动化运维工具,采用无代理架构(agentless),基于 SSH 连接进行管理,具有简单易用、灵活强大、可扩展性高等特点。它广泛用于服务器管理、应用部署、配置管理等任务。本文将介绍 Ansible 的安装、基本使用方法及一些实际运维场景中的应用,旨在帮助运维人员快速上手并熟练运用 Ansible。 1. Ansible的核心概念

自定义类型:结构体(续)

目录 一. 结构体的内存对齐 1.1 为什么存在内存对齐? 1.2 修改默认对齐数 二. 结构体传参 三. 结构体实现位段 一. 结构体的内存对齐 在前面的文章里我们已经讲过一部分的内存对齐的知识,并举出了两个例子,我们再举出两个例子继续说明: struct S3{double a;int b;char c;};int mian(){printf("%zd\n",s

JavaFX应用更新检测功能(在线自动更新方案)

JavaFX开发的桌面应用属于C端,一般来说需要版本检测和自动更新功能,这里记录一下一种版本检测和自动更新的方法。 1. 整体方案 JavaFX.应用版本检测、自动更新主要涉及一下步骤: 读取本地应用版本拉取远程版本并比较两个版本如果需要升级,那么拉取更新历史弹出升级控制窗口用户选择升级时,拉取升级包解压,重启应用用户选择忽略时,本地版本标志为忽略版本用户选择取消时,隐藏升级控制窗口 2.

flume系列之:查看flume系统日志、查看统计flume日志类型、查看flume日志

遍历指定目录下多个文件查找指定内容 服务器系统日志会记录flume相关日志 cat /var/log/messages |grep -i oom 查找系统日志中关于flume的指定日志 import osdef search_string_in_files(directory, search_string):count = 0

Go Playground 在线编程环境

For all examples in this and the next chapter, we will use Go Playground. Go Playground represents a web service that can run programs written in Go. It can be opened in a web browser using the follow