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

相关文章

MySQL 中的 LIMIT 语句及基本用法

《MySQL中的LIMIT语句及基本用法》LIMIT语句用于限制查询返回的行数,常用于分页查询或取部分数据,提高查询效率,:本文主要介绍MySQL中的LIMIT语句,需要的朋友可以参考下... 目录mysql 中的 LIMIT 语句1. LIMIT 语法2. LIMIT 基本用法(1) 获取前 N 行数据(

Python Faker库基本用法详解

《PythonFaker库基本用法详解》Faker是一个非常强大的库,适用于生成各种类型的伪随机数据,可以帮助开发者在测试、数据生成、或其他需要随机数据的场景中提高效率,本文给大家介绍PythonF... 目录安装基本用法主要功能示例代码语言和地区生成多条假数据自定义字段小结Faker 是一个 python

用js控制视频播放进度基本示例代码

《用js控制视频播放进度基本示例代码》写前端的时候,很多的时候是需要支持要网页视频播放的功能,下面这篇文章主要给大家介绍了关于用js控制视频播放进度的相关资料,文中通过代码介绍的非常详细,需要的朋友可... 目录前言html部分:JavaScript部分:注意:总结前言在javascript中控制视频播放

使用Java实现通用树形结构构建工具类

《使用Java实现通用树形结构构建工具类》这篇文章主要为大家详细介绍了如何使用Java实现通用树形结构构建工具类,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录完整代码一、设计思想与核心功能二、核心实现原理1. 数据结构准备阶段2. 循环依赖检测算法3. 树形结构构建4. 搜索子

利用Python开发Markdown表格结构转换为Excel工具

《利用Python开发Markdown表格结构转换为Excel工具》在数据管理和文档编写过程中,我们经常使用Markdown来记录表格数据,但它没有Excel使用方便,所以本文将使用Python编写一... 目录1.完整代码2. 项目概述3. 代码解析3.1 依赖库3.2 GUI 设计3.3 解析 Mark

SpringBoot整合MybatisPlus的基本应用指南

《SpringBoot整合MybatisPlus的基本应用指南》MyBatis-Plus,简称MP,是一个MyBatis的增强工具,在MyBatis的基础上只做增强不做改变,下面小编就来和大家介绍一下... 目录一、MyBATisPlus简介二、SpringBoot整合MybatisPlus1、创建数据库和

Java进阶学习之如何开启远程调式

《Java进阶学习之如何开启远程调式》Java开发中的远程调试是一项至关重要的技能,特别是在处理生产环境的问题或者协作开发时,:本文主要介绍Java进阶学习之如何开启远程调式的相关资料,需要的朋友... 目录概述Java远程调试的开启与底层原理开启Java远程调试底层原理JVM参数总结&nbsMbKKXJx

mysql通过frm和ibd文件恢复表_mysql5.7根据.frm和.ibd文件恢复表结构和数据

《mysql通过frm和ibd文件恢复表_mysql5.7根据.frm和.ibd文件恢复表结构和数据》文章主要介绍了如何从.frm和.ibd文件恢复MySQLInnoDB表结构和数据,需要的朋友可以参... 目录一、恢复表结构二、恢复表数据补充方法一、恢复表结构(从 .frm 文件)方法 1:使用 mysq

Python中多线程和多进程的基本用法详解

《Python中多线程和多进程的基本用法详解》这篇文章介绍了Python中多线程和多进程的相关知识,包括并发编程的优势,多线程和多进程的概念、适用场景、示例代码,线程池和进程池的使用,以及如何选择合适... 目录引言一、并发编程的主要优势二、python的多线程(Threading)1. 什么是多线程?2.

Python中顺序结构和循环结构示例代码

《Python中顺序结构和循环结构示例代码》:本文主要介绍Python中的条件语句和循环语句,条件语句用于根据条件执行不同的代码块,循环语句用于重复执行一段代码,文章还详细说明了range函数的使... 目录一、条件语句(1)条件语句的定义(2)条件语句的语法(a)单分支 if(b)双分支 if-else(