点云库(PCL)学习——基本结构

2024-01-01 00:32

本文主要是介绍点云库(PCL)学习——基本结构,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

PCL1.x版本中的数据类型为: pcl:PointCloud<pcl::PointCloud>
PointCloud 是C++ 的一个类(class),包含了以下数据字段:

  • pcl:width<pcl::PointCloud::width>(int)
    以点数为单位指定点云数据集的宽度。宽度有两种含义:
    • 可以为无组织数据集指定云中的点的总数(等于点中元素的数量–见下文);
    • 可以指定有组织点云数据集(organized point cloud)的宽度(行中的点总数)。

NOTE:有组织的点云数据集(organized point cloud)是为类似于有组织的图像(或矩阵)结构的点云指定的名称,其中数据被拆分为行和列。这种点云的例子包括来自立体相机或Time-of-flight相机的数据。有组织的数据集的优点是,通过了解相邻点(如像素)之间的关系,最近邻操作更加有效,从而加快了计算速度,降低了PCL中某些算法的成本。

NOTE:可投影点云数据集(projectable point cloud)是指根据针孔摄影机模型在有组织点云中的点(u,v)索引与实际三维值之间具有相关性的点云的名称。这种相关性可以用最简单的形式表示:u=fx/z和v=fy/z
例如:

cloud.width = 640;//there are 640 points per line
  • pcl:height<pcl::PointCloud::height>(int)
    以点数为单位指定点云数据集的高度。高度有两种含义:
    • 可以指定有组织点云数据集(organized point cloud)的高度(行的总数)。
    • 对于无组织的数据集,它设置为1(因此用于检查数据集是否为有组织的)
      例如:
cloud.width = 640;//Image-like organized structure, with 480 rows and 640 colums
cloud.height = 480;//thus 640*480=307200 points total in the datasetcloud.width = 307200;
cloud.heigth = 1;//unorganized point cloud dataset with 307200 points
  • pcl:points<pcl::PointCloud::points>(std::vector< PointT >)
    包含存储PointT类型的所有点的数据数组。例如,对于包含XYZ数据的点云,点包含pcl::PointXYZ元素的向量:
pcl::PointCloud<pcl::PointXYZ> cloud;
std::vector<pcl::PointXYZ> data = cloud.points;
  • pcl:is_dense<pcl::PointCloud::is_dense>(bool)
    指定点中的所有数据是有限的(true),或者指定某些点的XYZ值可能包含Inf/NaN值(false)。
  • pcl:sensor_origin<pcl::PointCloud::sensor_origin>(Eigen::vector4f)
    指定传感器采集姿势(原点/平移)。这个成员通常是可选的,PCL中的大多数算法都不使用它。
  • pcl:sensor_orientation<pcl::PointCloud::sensor_orientation>(Quaternionf)
    指定传感器采集姿势(方向)。这个成员通常是可选的,PCL中的大多数算法都不使用它。

为了简化开发,pcl:PointCloud<pcl::PointCloud>类钟包含许多辅助成员函数。例如,用户不必检查代码中的height是否等于1,以查看数据集是否为有组织,而是使用:pcl:PointCloud<pcl::PointCloud::isorgaid>

if (!cloud.isOrganized ())...

Reference

Getting Started / Basic Structures

这篇关于点云库(PCL)学习——基本结构的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

C++中使用vector存储并遍历数据的基本步骤

《C++中使用vector存储并遍历数据的基本步骤》C++标准模板库(STL)提供了多种容器类型,包括顺序容器、关联容器、无序关联容器和容器适配器,每种容器都有其特定的用途和特性,:本文主要介绍C... 目录(1)容器及简要描述‌php顺序容器‌‌关联容器‌‌无序关联容器‌(基于哈希表):‌容器适配器‌:(

使用Python进行文件读写操作的基本方法

《使用Python进行文件读写操作的基本方法》今天的内容来介绍Python中进行文件读写操作的方法,这在学习Python时是必不可少的技术点,希望可以帮助到正在学习python的小伙伴,以下是Pyth... 目录一、文件读取:二、文件写入:三、文件追加:四、文件读写的二进制模式:五、使用 json 模块读写

Java中switch-case结构的使用方法举例详解

《Java中switch-case结构的使用方法举例详解》:本文主要介绍Java中switch-case结构使用的相关资料,switch-case结构是Java中处理多个分支条件的一种有效方式,它... 目录前言一、switch-case结构的基本语法二、使用示例三、注意事项四、总结前言对于Java初学者

结构体和联合体的区别及说明

《结构体和联合体的区别及说明》文章主要介绍了C语言中的结构体和联合体,结构体是一种自定义的复合数据类型,可以包含多个成员,每个成员可以是不同的数据类型,联合体是一种特殊的数据结构,可以在内存中共享同一... 目录结构体和联合体的区别1. 结构体(Struct)2. 联合体(Union)3. 联合体与结构体的

PostgreSQL如何查询表结构和索引信息

《PostgreSQL如何查询表结构和索引信息》文章介绍了在PostgreSQL中查询表结构和索引信息的几种方法,包括使用`d`元命令、系统数据字典查询以及使用可视化工具DBeaver... 目录前言使用\d元命令查看表字段信息和索引信息通过系统数据字典查询表结构通过系统数据字典查询索引信息查询所有的表名可

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

学习hash总结

2014/1/29/   最近刚开始学hash,名字很陌生,但是hash的思想却很熟悉,以前早就做过此类的题,但是不知道这就是hash思想而已,说白了hash就是一个映射,往往灵活利用数组的下标来实现算法,hash的作用:1、判重;2、统计次数;

基本知识点

1、c++的输入加上ios::sync_with_stdio(false);  等价于 c的输入,读取速度会加快(但是在字符串的题里面和容易出现问题) 2、lower_bound()和upper_bound() iterator lower_bound( const key_type &key ): 返回一个迭代器,指向键值>= key的第一个元素。 iterator upper_bou