点云库(PCL)学习——overview

2024-01-01 00:32
文章标签 学习 pcl overview 点云库

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

overview

PCL是由几个模块库构成的:
Filters, Features, Keypoints, Registration, KdTree, Octree, Segmentation, Sample Consensus, Surface, Range Image, I/O, Visualization, Common, Search.

  1. Filters
    背景:下图给出了噪声消除的示例。由于测量误差,某些数据集会出现大量的阴影点。这使得局部点云三维特征的估计变得复杂。通过对每个点的邻域进行统计分析,并对不符合特定标准的点进行修剪,可以过滤出其中一些异常值。通过计算输入数据集中点到邻域距离分布,可以去除PCL中稀疏离群点。对于每个点,计算其到所有相邻点的平均距离。假设得到的分布是具有平均值和标准偏差的高斯分布,所有平均距离在由全局距离平均值和标准偏差定义的区间之外的点都可以被视为离群值,并从数据集中进行修剪。
    点云过滤
  2. Features
    背景:features库包含数据结构以及点云数据的三维特征估计的机制。三维特征是空间中某些三维点或位置上的表示,基于该点周围可用的信息来描述几何图形。围绕查询点选择的数据空间通常称为k邻域。
    选择一个查询点并选择周围的k个邻居
    一个例子:有两个广泛使用的几何点特征,即,在查询点p处的表面的估计曲率和法向量。它们都被称为局部特征,因为是通过p处最近的k个邻点提供的信息所赋予的。为了高效地确定这些邻点,通常利用空间分解技术例如octrees或KD-trees将输入的点集划分成几个小块(small chunks),然后在这个空间中搜寻最近的点。根据应用的不同,我们既可以选择p点附近固定数量的k个点,也可以选择p点为中心,r为半径的球里的所有点。毫无疑问,估计p点的曲面法线和曲率变化的最简单方法之一是对k邻域点曲面片进行特征分解(即计算特征向量和特征值)。因此,对应于最小特征值的特征向量就接近点p处曲面的法向量n,而曲面的曲率变化将通过特征值估计:在这里插入图片描述其中在这里插入图片描述
  3. Keypoints
    背景:keypoints库包含两个点云关键点检测算法的实现。关键点(也称为兴趣点,interest points)是图像或点云中的点,它们是稳定的、独特的,并且可以使用定义良好的检测标准来识别。通常,点云中的兴趣点的数量将远小于点云中的点的总数,并且当与每个关键点的局部特征描述符结合使用时,关键点和描述符可用于形成原始数据的紧凑的表示即便是描述性的。下图显示了从距离图像中提取NARF关键点的输出:
    keypoints 提取
  4. Registration
    背景:将几个数据集合合并成一个全局一致性的模型通常要用到一种叫**registration(配准)**的技术。其关键思想是识别数据集之间的对应点,并找到一种使对应点之间的距离(对齐误差)最小化的变换。这个过程是重复的,因为对应搜索受数据集的相对位置和方向的影响。一旦对准误差低于给定的阈值,则称为完成配准。registration库为有组织的和无组织的(通用)数据集合实现了大量的点云配准算法。例如,PCL包含了一组强大的算法,允许多组对应点进行估计,也提供了拒绝效果很差的对应(bad correspondences),以一种稳健的方式进行变换。
    点云配准
  5. Kd-tree
    背景:Kd-tree库提供了kd-tree数据结构,使用FLANN可以允许最近邻搜索。Kd-tree(k-dimensional tree)是一种空间分区数据结构,它将一组k维点存储在树结构中,从而实现有效的范围搜索和最近邻搜索。最近邻搜索是处理点云数据时的核心操作,可用于查找点组(points group)之间或特征描述符之间的对应关系,或定义点周围的局部邻域。
    在这里插入图片描述
    在这里插入图片描述
  6. Octree
    背景:Octree(八叉树)库提供了从点云数据创建层次树数据结构的有效方法。这样就可以对点数据集进行空间分区、降采样和搜索操作。每个八叉树节点要么有八个子节点,要么没有子节点。根节点描述一个封装所有点的立方体边界框。在每个树级别,这个空间被2的因子细分,从而提高体素分辨率。八叉树的实现提供了高效的近邻搜索例程,例如“体素内邻居搜索”、“K近邻搜索”和“半径内邻居搜索”。它会根据点数据集自动调整其尺寸。一组叶节点类提供了额外的功能,例如空间“占用率”和“每体素点密度”检查。用于序列化和反序列化的函数可以有效地将八叉树结构编码为二进制格式。此外,在需要高速创建八叉树的情况下,内存池实现减少了昂贵的内存分配和释放操作。下图演示了最低树级别的八叉树节点的体素边界框。八叉树体素围绕着斯坦福兔子表面的每个3D点。红点代表点数据。此图像是使用八叉树查看器创建的。
    在这里插入图片描述
  7. Segmentation
    背景:Segmentation库包含将点云分割为不同簇(clusters)的算法。这些算法最适合处理由多个空间隔离区域组成的点云。在这种情况下,通常使用聚类技术将点云分解为几个组成部分,然后可以独立处理。这两幅图展示了平面模型分割(左)和圆柱体模型分割(右)的结果。
    在这里插入图片描述
  8. Sample Consensus
    背景:Sampe Consensus库包含样本一致性(SAmple Consensus,SAC)方法(如RANSAC)和模型(如平面和圆柱体)。这些可以自由组合,以便检测点云中的特定模型及其参数。此库中实现的一些模型包括:直线、平面、圆柱体和球体。平面拟合通常用于检测常见的室内表面,如墙壁、地板和桌面。其他模型可用于检测和分割具有常见几何结构的对象(例如,将圆柱体模型拟合到马克杯)。
    样本一致性
  9. Surface
    背景:Surface库处理从三维扫描重建原始曲面。根据手头的任务,这可以是外壳、网格表示或具有法线的平滑/重采样曲面。如果点云云是有噪声的,或者由多个没有完全对齐的扫描组成,平滑和重采样就很重要了。可以调整曲面估计的复杂度,如果需要,可以在同一步中估计法线。
    在这里插入图片描述
    网格划分是一种利用点创建曲面的通用方法,目前提供了两种算法:一种是对原始点进行快速三角剖分,另一种是进行平滑和填充孔的较慢的网格划分。在这里插入图片描述
    例如,当需要简化曲面表示或需要提取边界时,创建凸面或凹面外壳非常有用。
    在这里插入图片描述
  10. Range Image
    背景:Range Image库包含两个用于表示和处理范围图像的类。范围图像(range image,或深度图,depth map)是一种图像,其像素值表示距离传感器原点的距离或深度。距离图像是一种常见的三维表示,通常由立体相机或者time-of-flight相机生成。通过了解摄像机的固有标定参数,可以将距离图像转换为点云。
  11. I/O
    背景:io库包含读取和写入点云数据(PCD)文件的类和功能,以及从各种传感设备捕获点云。
  12. Visualization
    背景:建立可视化库的目的是能够快速原型化和可视化算法在三维点云数据上的运行结果。与OpenCV用于显示2D图像和在屏幕上绘制基本2D形状的highgui例程类似,该库提供:
    以在pcl::PointCloud format呈现和设置任意n-D点云数据集的视觉特性(颜色、点大小、不透明度等)的方法;
    在这里插入图片描述
    从点集或参数方程绘制屏幕上基本三维形状的方法(例如圆柱体、球体、直线、多边形等);
    在这里插入图片描述
    二维图形直方图可视化模块(PCLHistogramVisualizer);
    在这里插入图片描述
    pcl::PointCloud数据集的大量几何图形和颜色处理程序;
    在这里插入图片描述
    在这里插入图片描述
    pcl::RangeImage 可视化模块
    在这里插入图片描述
    该软件包利用VTK库进行范围图像和二维操作的三维渲染。
    要实现您自己的可视化工具,请查看库附带的测试和示例。
  13. Common
    背景:Common库包含大多数PCL库使用的公共数据结构和方法。核心数据结构包括PointCloud类和用于表示点、曲面法线、RGB颜色值、特征描述符等的多种点类型。它还包含许多用于计算距离/规范、均值和协方差、角度转换、几何变换等的函数。
  14. Search
    Search库提供了利用不同的数据结构来搜多最近邻的方法,包括:KdTree, Octree, brute force, specialized search for organized datasets
  15. Binaries
    本节提供了PCL中一些常用工具的快速参考。

Reference

PCL Walkthrough

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



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

相关文章

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

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

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

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

Spring Security--Architecture Overview

1 核心组件 这一节主要介绍一些在Spring Security中常见且核心的Java类,它们之间的依赖,构建起了整个框架。想要理解整个架构,最起码得对这些类眼熟。 1.1 SecurityContextHolder SecurityContextHolder用于存储安全上下文(security context)的信息。当前操作的用户是谁,该用户是否已经被认证,他拥有哪些角色权限…这些都被保

【前端学习】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、统计次数;

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

【机器学习】高斯过程的基本概念和应用领域以及在python中的实例

引言 高斯过程(Gaussian Process,简称GP)是一种概率模型,用于描述一组随机变量的联合概率分布,其中任何一个有限维度的子集都具有高斯分布 文章目录 引言一、高斯过程1.1 基本定义1.1.1 随机过程1.1.2 高斯分布 1.2 高斯过程的特性1.2.1 联合高斯性1.2.2 均值函数1.2.3 协方差函数(或核函数) 1.3 核函数1.4 高斯过程回归(Gauss

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识

线性代数|机器学习-P36在图中找聚类

文章目录 1. 常见图结构2. 谱聚类 感觉后面几节课的内容跨越太大,需要补充太多的知识点,教授讲得内容跨越较大,一般一节课的内容是书本上的一章节内容,所以看视频比较吃力,需要先预习课本内容后才能够很好的理解教授讲解的知识点。 1. 常见图结构 假设我们有如下图结构: Adjacency Matrix:行和列表示的是节点的位置,A[i,j]表示的第 i 个节点和第 j 个