点云库(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

相关文章

Oracle查询表结构建表语句索引等方式

《Oracle查询表结构建表语句索引等方式》使用USER_TAB_COLUMNS查询表结构可避免系统隐藏字段(如LISTUSER的CLOB与VARCHAR2同名字段),这些字段可能为dbms_lob.... 目录oracle查询表结构建表语句索引1.用“USER_TAB_COLUMNS”查询表结构2.用“a

MySql基本查询之表的增删查改+聚合函数案例详解

《MySql基本查询之表的增删查改+聚合函数案例详解》本文详解SQL的CURD操作INSERT用于数据插入(单行/多行及冲突处理),SELECT实现数据检索(列选择、条件过滤、排序分页),UPDATE... 目录一、Create1.1 单行数据 + 全列插入1.2 多行数据 + 指定列插入1.3 插入否则更

C#连接SQL server数据库命令的基本步骤

《C#连接SQLserver数据库命令的基本步骤》文章讲解了连接SQLServer数据库的步骤,包括引入命名空间、构建连接字符串、使用SqlConnection和SqlCommand执行SQL操作,... 目录建议配合使用:如何下载和安装SQL server数据库-CSDN博客1. 引入必要的命名空间2.

Java中的数组与集合基本用法详解

《Java中的数组与集合基本用法详解》本文介绍了Java数组和集合框架的基础知识,数组部分涵盖了一维、二维及多维数组的声明、初始化、访问与遍历方法,以及Arrays类的常用操作,对Java数组与集合相... 目录一、Java数组基础1.1 数组结构概述1.2 一维数组1.2.1 声明与初始化1.2.2 访问

Go语言数据库编程GORM 的基本使用详解

《Go语言数据库编程GORM的基本使用详解》GORM是Go语言流行的ORM框架,封装database/sql,支持自动迁移、关联、事务等,提供CRUD、条件查询、钩子函数、日志等功能,简化数据库操作... 目录一、安装与初始化1. 安装 GORM 及数据库驱动2. 建立数据库连接二、定义模型结构体三、自动迁

ModelMapper基本使用和常见场景示例详解

《ModelMapper基本使用和常见场景示例详解》ModelMapper是Java对象映射库,支持自动映射、自定义规则、集合转换及高级配置(如匹配策略、转换器),可集成SpringBoot,减少样板... 目录1. 添加依赖2. 基本用法示例:简单对象映射3. 自定义映射规则4. 集合映射5. 高级配置匹

MySQL中的索引结构和分类实战案例详解

《MySQL中的索引结构和分类实战案例详解》本文详解MySQL索引结构与分类,涵盖B树、B+树、哈希及全文索引,分析其原理与优劣势,并结合实战案例探讨创建、管理及优化技巧,助力提升查询性能,感兴趣的朋... 目录一、索引概述1.1 索引的定义与作用1.2 索引的基本原理二、索引结构详解2.1 B树索引2.2

如何使用Maven创建web目录结构

《如何使用Maven创建web目录结构》:本文主要介绍如何使用Maven创建web目录结构的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录创建web工程第一步第二步第三步第四步第五步第六步第七步总结创建web工程第一步js通过Maven骨架创pytho

Python循环结构全面解析

《Python循环结构全面解析》循环中的代码会执行特定的次数,或者是执行到特定条件成立时结束循环,或者是针对某一集合中的所有项目都执行一次,这篇文章给大家介绍Python循环结构解析,感兴趣的朋友跟随... 目录for-in循环while循环循环控制语句break语句continue语句else子句嵌套的循

SQL BETWEEN 语句的基本用法详解

《SQLBETWEEN语句的基本用法详解》SQLBETWEEN语句是一个用于在SQL查询中指定查询条件的重要工具,它允许用户指定一个范围,用于筛选符合特定条件的记录,本文将详细介绍BETWEEN语... 目录概述BETWEEN 语句的基本用法BETWEEN 语句的示例示例 1:查询年龄在 20 到 30 岁