【PCL自学:目录】PCL简介及主要功能模块介绍 (持续更新)

这篇具有很好参考价值的文章主要介绍了【PCL自学:目录】PCL简介及主要功能模块介绍 (持续更新)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

当你知道一切都不重要时,世界就是你的了。——《瑞克和莫蒂》S3E8

pcl学习,PCL,计算机视觉

一、PCL简要介绍

  对于从事计算机视觉、机器视觉领域的从业者来说,OpenCV库并不陌生,甚至是我们入门这个领域时的学习的第一个开源库,如果说OpenCV是二维信息处理方面的工兵铲,那PCL(Point Cloud Library)就是在三维信息处理层面的瑞士军刀。
  顾名思义, PCL(Point Cloud Library)是专注于点云操作处理的开源算法库,对于从事三维点云数据处理的道友来说是工作学习中必不可少的工具。
  PCL是跨平台的,已成功编译部署在Linux、MacOS、Windows和Android上。具体安装过程在前辈们的博客中能跟容易找到,本系列中不再赘述其在不同系统中的安装过程。为了简化开发,PCL被分成一系列更小的代码库,这些代码库可以单独编译。这种模块化对于将PCL分布在具有较少计算或大小限制的平台上非常重要,这些模块就像是一把瑞士军刀上的各个小工具。
ps:更有趣的PCL发展历程可见《点云库PCL学习教程》,文末附有链接。
当一把瑞士军刀拿在手上,我们肯定好奇这把瑞士军刀到底能做些什么呢?今天就来扒一扒。
pcl学习,PCL,计算机视觉

从算法角度和库中的主要模块进行分类:
  共可分为12大模块,本系列文章将会在后期对这12大模块进行更为详尽的拆解。若时间允许还会对这十二大模块所涉及的数学方法单独开辟一个系列专题,用于梳理三维视觉领域需要学习的数学方法。[PS:由于工作中我也有 没有渠道系统性学习三维点云处理相关数学知识 的苦恼,既然等不来别人做,那就只能自己做了,还希望到时候看官们能支持三连一波。]
pcl学习,PCL,计算机视觉

二、PCL中的重要模块介绍

1、点云滤波模块:去噪声和离群值(一般用于预处理)

  pcl_filters模块包含了用于3D点云数据过滤应用的离群值和噪声去除机制。一般用于前期预处理,类似于OpenCV中的各种滤波算子组成的库,只不过操作数据不再是像素而是空间点。
pcl学习,PCL,计算机视觉

滤波模块依赖库:common(公共库:公共数据结构和方法模块)
    sample_consensus(样本一致性库:RANSAC等方法)
    search(搜索库:数据搜索结构和最邻近方法)
    kdtree(KD树结构)
    octree(八叉树结构)

官网关于点云滤波模块的详细介绍点击这里

2、点云特征模块:计算几何图形特征

  pcl_features库包含了从点云数据中估算3D特征的数据结构和机制。三维特征是空间中某一三维点或位置的表示形式,它根据该点周围的可用信息来描述几何图形。围绕该点选择的数据空间通常称为k-邻域。
pcl学习,PCL,计算机视觉

特征模块依赖库:common
        search
        kdtree
        octree
        range_image(由pcl/PointCloud派生而来,提供了从特定视角捕捉3D场景的功能。)

官网关于点云特征模块的详细介绍点击这里

3、点云关键点模块:提取角点或其他独特的点(一般用于预处理)

  pcl_keypoints库目前(1.12.0)包含两个点云关键点检测算法的实现。关键点(也称为兴趣点)是图像或点云中稳定、独特的点,可以使用定义良好的检测标准进行识别。通常,兴趣点的数量将远小于点云中点的总数,当关键点与特征描述子结合在一起使用时能够对原始数据形成一个紧凑而具有描述性的表示。
pcl学习,PCL,计算机视觉

关键点模块依赖库:common
         search
         kdtree
         octree
         range_image
         features
         filters

官网关于点云关键点模块的详细介绍点击这里

4、点云配准模块:将几片点云组合成全局一致的点云集合

  pcl_registration库为有序和无序(普遍)数据集实现了大量的点云配准算法。其关键思想是确定数据集之间的对应点,并找到一个使对应点之间的距离(对齐误差)最小的变换。这个过程是迭代的,受到数据集的相对位置和方向的影响。一旦对准误差低于给定的阈值,就称配准完成。
pcl学习,PCL,计算机视觉

配准模块依赖库:common
        kdtree
        sample_consensus
        features

官网关于点云配准模块的详细介绍点击这里

5、kdTree KD树模块:一种树状数据结构可提高点云搜索速度

  pcl_kdtree库使用FLANN提供了kd-tree数据结构,允许快速的最近邻搜索。Kd-tree (k维树)是一种空间分区数据结构,它在树结构中存储一组k维点,可以进行有效的范围搜索和最近邻搜索。最近邻搜索是处理点云数据时的核心操作,可用于查找一组点或特征描述符之间的对应关系,或定义一个或多个点周围的局部邻域。但需要注意的是,kd-Tree能够减少点云的搜索时间,但初始化时需要消耗一定时间将点云排列存储成kd-tree结构。
pcl学习,PCL,计算机视觉

kdtree模块依赖库:common

官网关于kd-tree结构的详细介绍点击这里

6、octree 八叉树模块:一种树状数据结构,支持点云数据空间划分、下采样和搜索操作

  pcl_octree库提供了从点云数据创建层次树数据结构的有效方法。这支持对点数据集进行空间划分、下采样和搜索操作。每个八叉树节点要么有8个子节点,要么没有子节点。根节点描述了封装所有点的立方体包围盒。在每个树级别上,这个空间被2的因子细分,从而增加体素分辨率。
pcl学习,PCL,计算机视觉

octree模块依赖库:common

官网关于octree结构的详细介绍点击这里

7、点云分割模块:多种不同分割算法的组合,在物体分离问题中常用

  pcl_segmentation库包含了将点云分割成不同簇的算法。这些算法最适合处理由许多空间隔离区域组成的点云。在这种情况下,通常使用集群将云分解为其组成部分,然后可以独立处理这些部分。
分割模块依赖库:common
        search
        sample_consensus
        kdtree
        octree
pcl学习,PCL,计算机视觉

官网关于点云分割模块详细介绍点击这里

8、样本一致性模块:多用于圆柱、平面等规则几何体的拟合或分割检测。

  pcl_sample_consensus库保存了像RANSAC这样的样本一致性(SAC)方法以及像平面和圆柱体这样的模型。这些可以自由组合,以检测点云中的特定模型及其参数。这个库中实现的一些模型包括:直线、平面、圆柱体和球体。平面拟合通常用于检测室内常见表面,如墙壁、地板和桌面。其他模型可以用来检测和分割具有共同几何结构的对象(例如,拟合一个圆柱体模型到一个杯子)。
目前(1.12.0版本)支持的模型包括:
平面、线、平行线、平面上二维圆、空间上三维圆、垂直于指定轴向的平面、法向约束的平面、
球面、圆柱面、圆锥面、表面法相约束的球面、条(杆)状物。
pcl学习,PCL,计算机视觉

样本一致性模块所依赖的库:common

官网关于样本一致性模块详细介绍点击这里

9、点云重建表面模块:

  pcl_surface库用于从3D扫描中重建原始表面。例如网格表示或光滑/重采样表面与法线表示的物体。如果点云存在噪声,或者是由多片没有完全对齐的扫描点云组成的,在重建表面前对当前点云集进行平滑和重采样是必不可少的。该算法可以调整曲面估计的复杂度,甚至可以同步估计出法线。网格划分是一种通用的方法来创建一个表面的点,目前PCL有两种算法提供:一个非常快速的原始点三角划分,和一个较慢的利用平滑和孔填充的网格划分方法。
pcl学习,PCL,计算机视觉

点云重建表面模块依赖的库:common
             search
             kdtree
             octree

官网关于点云重建表面模块详细介绍点击这里

10、点云识别模块:类似于模板匹配

  PCL识别模块包含用于物体识别应用的算法。类似于2D的模板匹配应用在3D点云上。但又有很多细节上有所不同,具体在后面的文章中再做具体展开。

点云识别模块依赖的库:common
           search
           features

官网关于点云识别模块的详细介绍点击这里

11、点云输入输出IO模块:最为常用,PCL库的基础模块

  pcl_io库包含用于读取和写入点云数据(PCD)文件的类和函数,以及从各种传感设备捕获点云。能直接使用PCL的IO库读取点云数据的设备种类有很多,例如使用OpenNI的设备:Primesense PSDK, Microsoft Kinect, Asus Xtion Pro/Live等。对于无法直接通信的设备也可以手动写一个点云格式转换函数完成衔接。

IO模块依赖的库:common
      octree
      OpenNi for kinect handling
      uEye and Ensenso SDK for Ensenso handling

官网关于点云IO模块的详细介绍点击这里

12、点云可视化模块:较为常用,用于输出可视化点云,可以调整可视化颜色等参数

  构建pcl_visualization库的目的是能够快速原型化并可视化在三维点云数据上操作的算法的结果。类似于OpenCV用于在屏幕上显示2D图像和绘制基本2D形状的高端gui。
该库提供如下功能:
1.为点云数据集渲染和设置视觉属性(颜色、点大小、不透明度等)的方法
2.基于点集或者参数方程在屏幕上绘制基本的3D形状(例如,柱面,球体,直线,多边形等)的方法
3.用于2D绘图的直方图可视化模块(PCLHistogramVisualizer)
4.多个几何和颜色处理程序的数据集
该模块包使用VTK库进行距离图像的3D渲染和2D操作。
pcl学习,PCL,计算机视觉

可视化模块依赖的库:common
          VTK
          io
          kdtree
          RangeImage

官网关于点云可视化模块的详细介绍点击这里

  下一篇文章将详细介绍PCL的Feature模块库,并以示例程序演示如何使用Feature模块库,
点击进入下一篇文章。

【相关资料分享】
1.《PCL学习教程》
链接:https://pan.baidu.com/s/1z6q_dhTpd3328r9GSJxfoQ
提取码:TJUM
分享不易,还请看官三连支持一下。


【博主简介】
  斯坦福的兔子,男,95,天津大学机械工程工学硕士。21年毕业至今从事光学三维成像及点云处理相关工作。因工作中使用的三维处理库为公司内部库,不具有普遍适用性,遂自学开源PCL库及其相关数学知识以备使用。谨此将自学过程与君共享。
博主才疏学浅,尚不具有指导能力,如有问题还请各位在评论处留言供大家共同讨论。

若前辈们有工作机会介绍欢迎私信。文章来源地址https://www.toymoban.com/news/detail-735019.html

到了这里,关于【PCL自学:目录】PCL简介及主要功能模块介绍 (持续更新)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • ERP系统有哪些功能模块?

    现在市面上的管理软件有很多,不少企业都会去选择一些操作简单便捷的软件,优化工作流程,提高工作效率,其中ERP系统就是常见的一种,ERP是企业资源计划(Enterprise Resource Planning)的简称,是可以为企业员工及决策层提供决策手段的管理平台。ERP是一个庞大的数据库管理系

    2024年02月04日
    浏览(50)
  • 网易云音乐开发--search模块基本功能实现(除历史记录模块)

    老样子搭建一个search搜索页面  还有一块没有实现,那就是让输入框默认的文本变换颜色  微信小程序: input输入框placeholder样式的修改_微信小程序placeholder样式_酷伊奥的博客-CSDN博客  百度搜索了一下,找到了这个大佬的解决方案。很nice 查看文档 网易云音乐 NodeJS 版 API (b

    2024年02月06日
    浏览(79)
  • msf常用模块功能整理

    更新中 shell中直接输入msfconsole开始运行 use +模块路径 使用模块 search+模块 用来搜索模块 back 返回主界面 模块中: info 查看模块信息 show options 查看模块设置项 show targets 显示可选择的target(targert更像是给你选项,你去细化攻击细节,但是明明目标机器是64位系统,我选

    2024年02月04日
    浏览(55)
  • springboot中各个模块的功能

    Entity:实体层,数据库在项目中对应的类。放置一个个实体,及其相应的set、get方法。 Entity层中的类大多数是数据方面的,例如数据库中有负责登陆的User表(ID、UserName,Password),在Entity层就需要用private定义与数据库中一样的字段(ID、UserName,Password)以及这些字段

    2024年02月13日
    浏览(53)
  • 前端013_标签模块_新增功能

    点击 新增 按钮后,对话框形式弹出新增窗口 输入类别信息后,点击 确定 提交表单数据; 新增和修改功能共用一个组件,我们将它作为子组件引入到列表查询父组件中,下面先将组件定义出来。 弹出功能参考:https://element.eleme.cn/#/zh-CN/component/dialog#zi-ding-yi-nei-rong el-dialog标

    2024年02月04日
    浏览(41)
  • 前端020_广告模块_列表功能

    广告模块主要针对博客门户广告处统一的进行管理。 首先开发模块中的列表功能,包含数据列表、分页。 请求URL: /article/advert/search 请求方式: post 描述: 广告分页列表 mock.js 配置: 带分页功能,每页显示20条

    2024年02月05日
    浏览(93)
  • 前端022_广告模块_修改功能

    需求分析 当点击 编辑 按钮后,弹出编辑窗口,并查询出分类相关信息进行渲染。修改后点击 确定 提交修改后的数据。 请求URL: /article/advert/{id} 请求方式: get 描述:通过广告 ID 查询数据接口 mock.js 配置:

    2024年02月05日
    浏览(87)
  • 若依cloud(RuoYi-Cloud)新增业务模块和功能模块增删改查演示

    前言 看了几篇文章感觉都不太满意,索性自己来写一篇。 一、后端 后端新建业务模块流程大致如下: 看一下目录结构, business 就是我们自己的业务模块: 1.0 新建业务模块 就是在 ruoyi-module模块 下新建一个 springboot 工程模块,大家既然都学到cloud了,我相信这一步也不用多

    2024年02月17日
    浏览(56)
  • mesa库的模块功能和关系详述

    技术:mesa、OpenGL、meson 目录 前言:meson 构建系统 一、静态库列表(.a文件) 二、动态库列表(.so文件) 三、模块关系         在详述mesa模块功能和关系前,先来说下如何分析mesa的模块和关系。 很简单,熟悉mesa的构建系统:meson 。meson 是一个生成 ninja 文件的构

    2024年02月14日
    浏览(57)
  • KUKA机器人后台逻辑功能模块sps

    KUKA机器人的后台逻辑功能体现在其sps.sub文件中,其中功能和其他品牌的机器人一致(详细的说明解释可参考小编另一篇文章 FANUC机器人后台逻辑功能 ),这边对软plc,后台逻辑功能的具体解释不做过多的赘述,下面进入讲解的主题。 在workvisual软件中我们可以看到后台文件

    2024年04月13日
    浏览(58)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包