pcd文件介绍

pcd文件介绍

    • 一、PCD文件格式
    • 二、为什么要使用新的文件格式?
    • 三、PCD 版本
    • 四、文件格式头
    • 五、数据存储类型
    • 六、优于其他文件格式
    • 七、结果展示
    • 八、相关链接

一、PCD文件格式

本文档描述PCD(点云数据)文件格式,以及它在点云库(PCL)中的使用方式。

二、为什么要使用新的文件格式?

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

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

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

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

三、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 编码。

note:

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 - 以字节为单位指定每个维度的大小。例子:

    • 无符号字符/字符有 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 个。基本上这是一种在每个点引入 nD 直方图描述符并将它们视为单个连续内存块的方法。默认情况下,如果COUNT不存在,则所有维度的计数都设置为 1。

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

    • 它可以为无组织的数据集指定云中的总点数(等于**POINTS,**见下文);
    • 它可以指定有组织的点云数据集的宽度(一行中的总点数)。

    另见HEIGHT

    note:

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

    例子:

    WIDTH 640     # there are 640 points per line
    
  • HEIGHT - 以点数指定点云数据集的高度。高度有两个含义:

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

    例子:

    WIDTH 640       # Image-like organized structure, with 480 rows and 640 columns,
    HEIGHT 480      # thus 640*480=307200 points total in the dataset
    

    例子:

    WIDTH 307200
    HEIGHT 1        # unorganized point cloud dataset with 307200 points
    
  • VIEWPOINT - 指定数据集中点的采集视点。这可能会在以后用于构建不同坐标系之间的变换,或用于帮助需要一致方向的表面法线等特征。

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

    VIEWPOINT 0 0 0 1 0 0 0
    
  • POINTS - 指定云中的总点数。从 0.7 版本开始,它的用途有点多余,因此我们希望在未来的版本中将其删除。

    例子:

    POINTS 307200   # the total number of points in the cloud
    
  • DATA - 指定存储点云数据的数据类型。从 0.7 版本开始,支持两种数据类型:asciibinary。有关更多详细信息,请参阅下一节。

note:

标题最后一行 ( DATA )之后的下一个字节被视为点云数据的一部分,并将被解释为这样。

警告:

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

VERSION
FIELDS
SIZE
TYPE
COUNT
WIDTH
HEIGHT
VIEWPOINT
POINTS
DATA

五、数据存储类型

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

  • ASCII格式,每个点都在一个新行上:

    p_1
    p_2
    p_3
    p_4
    ...p_n
    

注意:从 PCL 1.0.1 版开始,NaN 的字符串表示为“nan”。

  • 二进制形式,其中数据是pcl::PointCloud.points数组/向量的完整内存副本 。在 Linux 系统上,我们使用mmap / munmap 操作来实现对数据的最快读/写访问。

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

六、优于其他文件格式

将 PCD 作为(另一种)文件格式可以看作是 PCL 遭受了未发明在这里综合症。实际上,情况并非如此,因为上述文件格式都没有提供 PCD 文件的灵活性和速度。一些明确说明的优势包括:

  • 存储和处理有组织的点云数据集的能力——这对于实时应用和研究领域(如增强现实、机器人技术等)极为重要;
  • 二进制mmap / munmap数据类型是将数据加载和保存到磁盘的最快方法。
  • 存储不同的数据类型(支持的所有原始类型:char、short、int、float、double)允许点云数据在存储和处理方面灵活高效。无效的点维度通常存储为 NAN 类型。
  • 特征描述符的 nD 直方图——对于 3D 感知/计算机视觉应用非常重要

另一个优点是,通过控制文件格式,我们可以最好地将其适应 PCL,从而获得相对于 PCL 应用程序的最高性能,而不是将不同的文件格式适应 PCL 作为本机类型并通过转换引入额外的延迟职能。

注意:

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

七、结果展示

在这里插入图片描述

八、相关链接

pcd介绍
测试数据下载链接:https://pan.baidu.com/s/1a6QM3TnzDXV_LrmESHsHEw
提取码:2ngf

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/2799518.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

备战蓝桥杯—— 双指针技巧巧答链表2

对于单链表相关的问题,双指针技巧是一种非常广泛且有效的解决方法。以下是一些常见问题以及使用双指针技巧解决: 合并两个有序链表: 使用两个指针分别指向两个链表的头部,逐一比较节点的值,将较小的节点链接到结果链表…

LLM 模型融合实践指南:低成本构建高性能语言模型

编者按:随着大语言模型技术的快速发展,模型融合成为一种低成本但高性能的模型构建新途径。本文作者 Maxime Labonne 利用 mergekit 库探索了四种模型融合方法:SLERP、TIES、DARE和passthrough。通过配置示例和案例分析,作者详细阐…

C++学习之list容器

C++ list基本概念 在C++中,std::list是一个双向链表(doubly linked list)容器,它包含在 <list> 头文件中。下面是一些关于C++ std::list的基本概念: 双向链表结构:std::list是由多个节点组成的双向链表结构,每个节点包含数据元素和指向前一个节点和后一个节点的指…

Java基础API(2) String、StringBuilder详解

文章目录 &#x1f378;1. String类&#x1f349;&#x1f349;1.1 String概述&#x1f349;&#x1f349;1.2 String类的构造方法&#x1f349;&#x1f349;1.3 创建字符串对象的区别对比&#x1f349;&#x1f349;1.4 字符串的比较1.4.1 字符串的比较 &#x1f349;&#x…

【办公类-16-07-01】“2023下学期 周计划-美术专用活动室写法”(python 排班表系列)

背景需求&#xff1a; 又到了开学季&#xff0c;新的活动室安排表出炉了。 为了贴在美术活动室的安排表&#xff0c;我需要转换成班级为单位的安排表&#xff0c;便于批量制作周计划。 主要用途——填写周计划中的特色美术活动室&#xff08;汉字大写&#xff09; 重点说明&am…

Maven私服搭建Nexus3

第一部分&#xff1a;仓库部署 下载地址&#xff1a;https://help.sonatype.com/en/download.html 备用下载链接&#xff0c;部分已经失效了 解压后会有两个文件夹&#xff1a; nexus-3.20.1-01 sonatype-work 访问地址配置路径 \nexus-3.20.1-01\bin\nexus.vmoptions -Xms1…

mac 安装H3C iNode + accessClient mac版

一、下载安装 官网下载地址 https://www.h3c.com/cn/Service/Document_Software/Software_Download/IP_Management/ 可以使用文末参考博文中的账号 yx800 密码 01230123登录下载 选择版本 下载 下载 H3C_iNode_PC_7.3_E0626.zip 文件后&#xff0c;解压下载到的PC端压缩包…

【设计模式】01-装饰器模式Decorator

作用&#xff1a;在不修改对象外观和功能的情况下添加或者删除对象功能&#xff0c;即给一个对象动态附加职能 装饰器模式主要包含以下角色。 抽象构件&#xff08;Component&#xff09;角色&#xff1a;定义一个抽象接口以规范准备接收附加责任的对象。具体构件&#xff08…

静态时序分析:保持时间分析

相关阅读 静态时序分析https://blog.csdn.net/weixin_45791458/category_12567571.html?spm1001.2014.3001.5482 在静态时序分析中&#xff0c;保持时间检查约束了触发器时钟引脚&#xff08;时钟路径&#xff09;和输入数据引脚&#xff08;数据路径&#xff09;之间的时序关…

ArcgisForJS如何访问Arcgis Server?

文章目录 0.引言1.准备ArcGIS相关工具2.创建含有ArcSDE地理数据库的MXD文件3.注册ArcSDE地理数据库4.发布数据到Arcgis Server5.ArcgisForJS访问ArcGIS Server数据 0.引言 ArcGIS API for JavaScript 是一个用于在Web和移动应用程序中创建交互式地图和地理空间分析应用的库。它…

量子加密机的工作原理是什么

量子加密机&#xff0c;作为现代加密技术的一大飞跃&#xff0c;正逐渐成为信息安全领域的研究热点。与传统的加密方法相比&#xff0c;量子加密技术以其独特的优势&#xff0c;为信息安全提供了更为坚实的保障。 量子加密的核心在于利用量子力学的特性&#xff0c;尤其是量子纠…

【电子书】计算机课程

资料 wx&#xff1a;1945423050 个人整理了一些互联网电子书 计算机课程 Netty权威指南&#xff08;第2版&#xff09;.epubSharePoint Server 2016 IT Pro 部署指南.epubTensorFlow自然语言处理.epubWebGIS之OpenLayers全面解析.epub从Paxos到Zookeeper分布式一致性原理与实践…

开篇:通过 state 阐述 React 渲染

前段时间开始着手React项目的开发&#xff0c;关于React的一些思想也有了一些体会&#xff08;尤其是同vue之间的差异&#xff09;&#xff0c;特梳理&总结相关内容&#xff0c;便于理解。 ✓ &#x1f1e8;&#x1f1f3; 开篇&#xff1a;通过 state 阐述 React 渲染 说在…

Java SE 入门到精通—基础语法【Java】

敲重点&#xff01; 本篇讲述了比较重要的基础&#xff0c;是必须要掌握的 1.程序入口 在Java中&#xff0c;main方法是程序的入口点&#xff0c;是JVM&#xff08;Java虚拟机&#xff09;执行Java应用程序的起始点。 main方法的方法签名必须遵循下面规范&#xff1a; publ…

游戏配置二级缓存一致性问题解决方案

游戏服务器进程在启动的时候&#xff0c;一般会把所有策划配置数据加载到内存里&#xff0c;将主键以及对应的记录存放在一个HashMap容器里&#xff0c;这称为一级缓存。部分功能可能还需要缓存其他数据&#xff0c;这些称为二级缓存。举个例子&#xff0c;对于如下的玩家升级表…

电脑wifi丢失修复

当你打开电脑突然发现wifi功能不见了&#xff0c;可以先查看一下网卡的状态 在控制面板中找到设备管理器&#xff0c;打开就能找到网络适配器&#xff0c; 我这里是修复过的&#xff0c;wifi丢失后这里可能会显示WALN是丢失的&#xff0c;其他项显示黄色感叹号。 如何修复呢…

跳表是一种什么样的数据结构

跳表是有序集合的底层数据结构&#xff0c;它其实是链表的一种进化体。正常链表是一个接着一个用指针连起来的&#xff0c;但这样查找效率低只有O(n)&#xff0c;为了解决这个问题&#xff0c;提出了跳表&#xff0c;实际上就是增加了高级索引。朴素的跳表指针是单向的并且元素…

第十八章 Redis的使用

文章目录 1. Redis安装2. Redis的使用命令3. python使用redis 1. Redis安装 链接&#xff1a;https://pan.baidu.com/s/1EIGLFjDRxWyy1bU9Hwr_dw?pwdoloh 提取码&#xff1a;oloh 添加环境变量 Redis 启动 在命令行输入&#xff1a;redis-server 命令 设置redis数据库的…

【Vuforia+Unity】AR04-地面、桌面平面识别功能

不论你是否曾有过相关经验&#xff0c;只要跟随本文的步骤&#xff0c;你就可以成功地创建你自己的AR应用。 官方教程Ground Plane in Unity | Vuforia Library 这个功能很棒&#xff0c;但是要求也很不友好&#xff0c;只能支持部分移动设备&#xff0c;具体清单如下&#xf…

【PX4SimulinkGazebo联合仿真】在Simulink中使用ROS2控制无人机进入Offboard模式起飞悬停并在Gazebo中可视化

在Simulink中使用ROS2控制无人机进入Offboard模式起飞悬停并在Gazebo中可视化 系统架构Matlab官方例程Control a Simulated UAV Using ROS 2 and PX4 Bridge运行所需的环境配置PX4&Simulink&Gazebo联合仿真实现方法建立Simulink模型并完成基本配置整体框架各子系统实现…