PointCloudLibrary点云库介绍

PCL(Point Cloud Library)学习指南&资料推荐(2020版)

PCL开始上手其实有点容易迷惑,而且PCL文档最近(2020)改版了。里面很多文档和之前的都不一样了,我自己学习PCL时,看的是最新文档,也踩了很多坑,现在分享一下自己的学习方法和思路,希望对大家有所帮助。

顺便放下个人学习代码(有详细中文注解):https://github.com/HuangCongQing/pcl-learning
自己做了很多笔记,有时间可以整理出来,发出来!
【20201103】系列笔记整理出来了,先放在语雀文档上,后续发在知乎上!PCL(Point Cloud Library)学习记录(2020) · 语雀

本文初写於语雀文档,阅读体验更好:

PCL(Point Cloud Library)学习指南&资料推荐:

https://www.yuque.com/huangzhongqing/pcl/rdk5k8

1 PCL 介绍

首先肯定先介绍下PCL,虽然大家都大概知道了(✿◡‿◡)!如下:

官网和github连接先mark这了。

官网:https://pointclouds.org/

GitHub:https://github.com/PointCloudLibrary/pcl

介绍:

  • 点云数据的处理可以采用获得广泛应用的Point Cloud Library (点云库,PCL库)。
  • PCL库是一个最初发布于2013年的开源C++库。它实现了大量点云相关的通用算法和高效的数据管理。
  • 支持多种操作系统平台,可在Windows、Linux、Android、Mac OS X、部分嵌入式实时系统上运行。如果说OpenCV是2D信息获取与处理的技术结晶,那么PCL在3D信息获取与处理上,就与OpenCV具有同等地位
  • PCL是BSD授权方式,可以免费进行商业和学术应用。

下面是PCL架构图

如图PCL架构图所示,对于3D点云处理来说,PCL完全是一个的模块化的现代C++模板库。其基于以下第三方库:Boost、Eigen、FLANN、VTK、CUDA、OpenNI、Qhull,实现点云相关的获取、滤波、分割、配准、检索、特征提取、识别、追踪、曲面重建、可视化等。

我们主要学习的就是里面各种模块,总体来说16个模块(下图中有15个,少了recognition),如下:

官网各模块:https://pcl.readthedocs.io/projects/tutorials/en/latest/#

  • 01common
  • 02kdtree k维tree
  • 03octree 八叉树
  • 04search
  • 05sample consensus 抽样一致性模块
  • 06range-images深度图像
  • 07tracking (此模块,没有官方示例代码)
  • 08 io 输入输出
  • 09 filters 滤波
  • 10 features 特征
  • 11 surface表面
  • 12 segmentation分割
  • 13 recognition识别(下图中没有)
  • 14 registration配准
  • 15 visualization可视化
  • 16 keypoints关键点

每个模块都有依赖关系,依赖关系如下图(可以看出有四层),最基本的就是最底层的commom模块。

箭头对应的是依赖关系,比如第二层的kdtree依赖于common;第四层的registration有四个箭头,分别是sample_consensus, kdtree, common, features。

官方图

B站up主画的更详细的图

B站up主画的更详细的图

2 PCL学习指南

PCL最近(2020)改版了。里面很多文档和之前的都不一样了,我自己学习PCL时时,是看的最新文档,也踩了很多坑,现在分享一下自己的学习方法和思路,希望对大家有所帮助。

2.1 理解入门

先放下入门资料(后面会介绍):
1. 视频:bilibili-PCL点云库官网教程
2. 点云库PCL学习教程书籍每章总结:https://github.com/MNewBie/PCL-Notes

大家应该都明白,官方文档是最好的学习资料,但目前没有中文版,我看有些博主也翻译了一部分,现在特意整理了下!

第一步,首先,大家什么都不了解的话,强烈推荐大家看这个视频入门:bilibili-PCL点云库官网教程

bibili-PCL点云库官网教程

第二步,然后,有一本中文教程大家应该知道:

点云库PCL学习教程,朱德海,北京航空航天大学出版社

这本书好多人吐槽,因为就是英文的官方文档翻译过来的,还有一些错误信息。

不过作为入门还是挺好的,里面有附带的代码demo(就是官网上的),下面是书籍PDF版和示例代码,有需要的可以看下。

百度网盘资料:
链接:https://pan.baidu.com/s/1ziq8s_kj5QpM8eXO_d6RJg
提取码:g6ny

百度网盘资料

但是这本书我没有看,因为当时在github上发现了一个人总结的书中的笔记,如下。

文档写的还挺好的,大家可以先看这个打基础,对PCL有个宏观的了解!

https://github.com/MNewBie/PCL-Notes

PCL各章节笔记

经过上面两步,大家应该对PCL有所了解,然后我们就敲代码吧!

2.2 代码实践

代码实践资料:
1 官方各模块示例(和对应的对象函数对照着看)【英文】:https://pcl.readthedocs.io/projects/tutorials/en/latest/#
2 官方各模块对应的对象和函数【英文】:
https://pointclouds.org/documentation/modules.html
https://pointclouds.org/ 点击网站中的12宫图,每一格对应一个模块的对象函数详解
3 黑马机器人系列文档:PCL-3D点云:http://robot.czxy.com/docs/pcl/
4 CSDN博主系列文章PCL学习(64篇):https://www.cnblogs.com/li-yao7758258/category/954066.html

代码学习主要看两块官方示例demo + 每个示例中的对象函数介绍。

主要结合这两块来看:边看示例代码,边看代码里面对象函数的参数详情。

2.2.1官方示例demo代码(官方英文,后面可以结合中文注解一起看,下面有写)

各模块的官方示例demo位置在网站侧边栏。如下图

https://pcl.readthedocs.io/projects/tutorials/en/latest/#

各模块的官方示例demo位置在网站侧边栏

2.2.2各模块的函数详解

进入各模块有两种方式

  • 下面链接侧边栏也都是各模块函数详情,如下图:

https://pointclouds.org/documentation/modules.html

  • 官网的Getting Started中的12宫图每一格对应一个模块的对象函数详解,如下图

https://pointclouds.org/

侧边栏也都是各模块函数详情

官网的Getting Started中的12宫图,每一格对应一个模块的对象函数详解

2.2.3单个模块学习举例(比如IO模块

总的学习方法:
先将要学的官网IO模块的实例demo代码和IO模块函数的详解页面打开。
然后将模块介绍和中文代码注释的博客打开,一起学习!

首先,将官网IO模块的实例demo代码和IO模块函数的详解页面打开,如下图:

实例demo代码(实战) 每个模块都有几个demo代码,点击进去里面有代码的解释

  • shttps://pcl.readthedocs.io/projects/tutorials/en/latest/index.html#i-o

IO模块函数class

  • https://pointcloudlibrary.github.io/documentation/group__io.html

同时,可以结合看中文详情博客笔记:

从PCD文件写入和读取点云数据

http://robot.czxy.com/docs/pcl/chapter01/io/

个人学习代码(有详细中文注解):https://github.com/HuangCongQing/pcl-learning

实例demo代码(实战) 每个模块都有几个demo代码

每个示例都有对应代码和解释

对照中文博客更佳

IO模块函数class

再放下个人学习代码(有详细中文注解):https://github.com/HuangCongQing/pcl-learning
自己做了很多笔记,有时间可以整理发出来。

3 经验和推荐资料总结

先说下这位博主的建议,我觉得挺好的:

关于如何查找和利用PCL库学习资源的一些心得

  • 博主个人推荐是把PCL官网的“API Documentation”、“Tutorial”和《点云库PCL学习教程2》结合起来用效果会比较好。如果你需要用到某项功能,先去看原版的PCL官网的“API Documentation”、“Tutorial”获取最原汁原味的“第一感觉”,然后再去看《点云库PCL学习教程2》进行“中文亲切版收割”,其中还可以顺便收割一波“理论背景与整理”。先啃硬骨头,然后云里笑。
  • 看例程,需要用哪块就直接上实例熟悉代码和库。多调试代码,慢慢就熟悉了。每个人都得经历这个过程。

3.1系列资料汇总

入门资料:

  • 视频:bilibili-PCL点云库官网教程
  • 点云库PCL学习教程书籍每章总结:https://github.com/MNewBie/PCL-Notes
  • 百度网盘资料:

链接:https://pan.baidu.com/s/1ziq8s_kj5QpM8eXO_d6RJg

提取码:g6ny

代码实践资料:

  • 官方各模块示例(和对应的对象函数对照着看)【英文】:https://pcl.readthedocs.io/projects/tutorials/en/latest/#
  • 官方各模块对应的对象和函数【英文】:
    • https://pointclouds.org/documentation/modules.html
    • https://pointclouds.org/ 点击网站中的12宫图,没一格对应一个模块的对象函数详解
  • 黑马机器人系列文档:PCL-3D点云:http://robot.czxy.com/docs/pcl/
  • CSDN博主系列文章PCL学习(64篇):https://www.cnblogs.com/li-yao7758258/category/954066.html

4 附每个模块学习链接

代码自己一定要动手敲一遍

02kdtree k维tree

官网demo:https://pcl.readthedocs.io/projects/tutorials/en/latest/index.html#kdtree

对应函数:https://pointclouds.org/documentation/group__kdtree.html

详细中文博客:https://www.cnblogs.com/li-yao7758258/p/6437440.html

https://zhuanlan.zhihu.com/p/144991935

03octree 八叉树

官网demo:https://pcl.readthedocs.io/projects/tutorials/en/latest/#octree

  • 点云压缩

    • 将学习如何压缩单点云和点云流
  • 使用八进制进行空间分区和搜索操作
    • 学习如何使用八叉树进行空间分区和最近邻居搜索
  • 无组织点云数据的空间变化检测没有看
    • 学习如何使用八叉树检测点云内的空间变化

对应函数:https://pointclouds.org/documentation/group__octree.html

详细中文博客文章

  • PCL学习八叉树
  • PCLVisualizer可视化类

05sample consensus 抽样一致性模块

官网demo:https://pcl.readthedocs.io/projects/tutorials/en/latest/#sample-consensus

对应函数:https://pointclouds.org/documentation/group__sample__consensus.html

详细中文博客文章

http://robot.czxy.com/docs/pcl/chapter02/RANSAC/系列

PCL采样一致性算法

PCL几种采样方法

  1. 下采样 Downsampling
  2. 均匀采样:这个类基本上是相同的,但它输出的点云索引是选择的关键点在计算描述子的常见方式。
  3. 增采样 :增采样是一种表面重建方法,当你有比你想象的要少的点云数据时,增采样可以帮你恢复原有的表面(S)
  4. 表面重建:深度传感器的测量是不准确的,和由此产生的点云也是存在的测量误差,比如离群点,孔等表面,可以用一个算法重建表面,遍历所有的点云和插值数据,试图重建原来的表面。比如增采样,PCL使用MLS算法和类。执行这一步是很重要的,因为由此产生的点云的法线将更准确。

06range-images深度图像

官方demo:https://pcl.readthedocs.io/projects/tutorials/en/latest/#range-images

How to create a range image from a point cloud

How to extract borders from range images

对应函数

http://robot.czxy.com/docs/pcl/chapter02/range_image/

PCL深度图像(1)

PCL深度图像(2)

可视化深度图像

08 io 输入输出

官方demo

  • shttps://pcl.readthedocs.io/projects/tutorials/en/latest/index.html#i-o

documentation(class和function函数)

  • https://pointcloudlibrary.github.io/documentation/group__io.html

code

  • https://github.com/HuangCongQing/pcl-learning/blob/master/08IO%E8%BE%93%E5%85%A5%E8%BE%93%E5%87%BA

详情笔记:

从PCD文件写入和读取点云数据

连接两个点云中的字段或数据形成新点云以及Opennni Grabber初识

09 filters 滤波

官方示例:https://pcl.readthedocs.io/projects/tutorials/en/latest/index.html#filtering

对应函数:https://pointcloudlibrary.github.io/documentation/group__filters.html

详细中文博客文章

PCL滤波介绍(1)

PCL滤波介绍(2)

PCL滤波介绍(3)

10 features 特征

官网demo:https://pcl.readthedocs.io/projects/tutorials/en/latest/index.html#features

函数:https://pointcloudlibrary.github.io/documentation/group__features.html

详细中文博客文章

3D 特征点概述(1)

3D 特征点概述(2)

PCL点云特征描述与提取(1)

PCL点云特征描述与提取(2)

PCL点云特征描述与提取(3)

PCL点云特征描述与提取(4)

11 surface表面

官网demo:https://pcl.readthedocs.io/projects/tutorials/en/latest/#surface

  • Smoothing and normal estimation based on polynomial reconstruction
  • Construct a concave or convex hull polygon for a plane model
  • Fast triangulation of unordered point clouds
  • Fitting trimmed B-splines to unordered point clouds

函数:https://pointcloudlibrary.github.io/documentation/group__surface.html

详细中文博客文章

http://robot.czxy.com/docs/pcl/chapter04/resampling/

pcl几种表面重建_3D的博客-CSDN博客

PCL点云曲面重建(1)

PCL法线估计

12 segmentation分割

官网demo:https://pcl.readthedocs.io/projects/tutorials/en/latest/#segmentation

函数:https://pointclouds.org/documentation/group__segmentation.html

详细中文博客文章

PCL中分割_欧式分割(1)

PCL中分割方法的介绍(2)

PCL中分割方法的介绍(3)

PCL点云分割(1)

PCL点云分割(2)

PCL点云分割(3)

13 recognition识别

官网demo:

https://pcl.readthedocs.io/projects/tutorials/en/latest/#recognition

  • 3D Object Recognition based on Correspondence Grouping
  • Implicit Shape Model
  • Tutorial: Hypothesis Verification for 3D Object Recognition

函数:https://pointclouds.org/documentation/group__recognition.html

详细中文博客文章

https://github.com/Ewenwan/MVision/tree/master/PCL_APP/Recognition

14 registration配准

官网demo:https://pcl.readthedocs.io/projects/tutorials/en/latest/#registration

函数:https://pointcloudlibrary.github.io/documentation/group__registration.html

  • The PCL Registration API官网理论
  • 使用迭代最近点算法(ICP)How to use iterative closest point
  • 如何逐步匹配多幅点云 How to incrementally register pairs of clouds
  • 04-配准之交互式ICPInteractive Iterative Closest Point
  • 正态分布变换配准(NDT)How to use Normal Distributions Transform
  • 手持式小型物品扫描仪 In-hand scanner for small objects
  • 刚性物体的鲁棒姿态估计Robust pose estimation of rigid objects

中文博客文章:

  • PCL点云配准(1)代码
  • PCL点云配准(2)代码
  • PCL点云配准(3)理论
  • PCL特征点与配准(1)
  • 点云NDT配准方法介绍

黑马机器人 | PCL-3D点云

  • 01-点云中的数学
  • 02-点云配准原理概述
  • 03-点云配准流程示例 *
    • 使用迭代最近点算法(ICP)
    • 正态分布变换配准(NDT)
    • 刚性物体的鲁棒姿态估计
  • 04-配准之交互式ICP
  • 05-点云配准数学原理

PCL中的点云ICP配准(附源代码和数据)_qq_29462849的 ...

15 visualization可视化

官网demo:https://pcl.readthedocs.io/projects/tutorials/en/latest/#visualization

类/对象/函数:https://pointcloudlibrary.github.io/documentation/group__visualization.html

详细中文博客文章

  • PCL 可视化
  • PCLVisualizer可视化类
  • 可视化深度图像

16 keypoints关键点

官网demo:https://pcl.readthedocs.io/projects/tutorials/en/latest/#keypoints

类/对象/函数:https://pointclouds.org/documentation/group__keypoints.html

详细中文博客文章

http://robot.czxy.com/docs/pcl/chapter02/keypoints/

PCL关键点(1)


以上,附个人学习代码(有详细中文注解)

HuangCongQing/pcl-learning​github.com

引用

版权

双愚

码农研究生 自动驾驶/点云视觉感知 | 公众号『重庆小哥稳』

https://www.cnblogs.com/li-yao7758258/category/954066.html?page=1

PCL点云库官网教程

PointCloudLibrary点云库介绍相关推荐

  1. PDAL点云处理库介绍

    点击"蓝字"关注点云PCL,选择"星标"获取最新文章 PDAL是点云数据处理的库.这是一个C/C++开源库,用于点云数据的转换和处理.尽管该库中许多工具的重点和 ...

  2. 学习笔记:点云库PCL(Point Cloud Library )介绍

    本文简要介绍点云库(PCL),一个用于处理2D和3D数据的开源库,如激光雷达点云. 通过熟悉使用PCL的一些基础知识,以便后续使用PCL进行定位.主要涵盖以下内容: 点云数据Point Cloud D ...

  3. 火盈云库分享创始人陌路老师的采访和软件介绍

    互联网是一个神奇的行业,大门不出二门不迈,一根网线一台电脑就可以赚钱.它给我们创造了前所未有的商业机会,让成千上万有梦想,敢想敢干的人通互联网获得了巨大的成功!正因为如此,无数新人涌入这个行业,希望在 ...

  4. 一文详解点云库PCL

    3D is here: Point Cloud Library (PCL) 摘要: 随着新型,低成本的3D传感器硬件的出现(例如Kinect),以及科研人员在高级点云处理研究上的不断努力,3D感知在机 ...

  5. 编译安装PCL点云库,Kinect2驱动,乐视Astra相机驱动

    编译安装PCL点云库 安装方法一 3d点云安装 apt-cache cearch pcl 安装 sudo apt install 上面查出来的 opencv不建议用以上方法因为需要 安装 opencv ...

  6. 云监控介绍 - Amazon CloudWatch

    云监控介绍 - Amazon CloudWatch 作者:张航东 本文主要用于个人学习.总结,欢迎转载,但请务必注明作者和出处,感谢! Amazon CloudWatch 是一项针对 AWS 云资源和 ...

  7. Ubuntu下安装PCL1.12.1点云库经验分享

    Ubuntu下安装PCL点云库经验分享 内容简介 安装ubuntu VMware全屏下不完全显示 换国内镜像源 安装VTK 问题一 问题二 安装PCL 配置vscode c_cpp_propertie ...

  8. (学习笔记)PCL点云库的基本使用

    目录 前言 1.理解点云库 1.1.不同的点云类型 1.2.PCL中的算法 1.3.ROS的PCL接口 2.创建第一个PCL程序 2.1.创建点云 2.2.加载点云文件 2.3.创建点云文件 2.4. ...

  9. 【免费】小米即时消息云MIMC介绍——免费、简单实现IM

    前言 IM是互联网业务重要组成,很多场景下需要即时地.方便地交流.而实现IM较为复杂,需要后台提供连接.投递.存储.统计支持,人力成本和机器成本都很高.所以目前很多用户选择不自己实现IM功能,或者使用 ...

最新文章

  1. poj 2288(状态压缩dp + TSP问题)
  2. java基础---IO转换流
  3. nRFgo Studio 和 Nrfjprog 无法找到JLinkARM.dll的解决方法
  4. 【CodeChef - CLIQUED 】Bear and Clique Distances(建图,缩点技巧,思维)
  5. 想不想在手机上敲 Python 代码?!这里有一款推荐方案
  6. PHP正则表达式学习(一) 模式修正符
  7. JavaScript 字符串属性和方法
  8. Python partial
  9. RapidXml用法
  10. visio安装问题总结
  11. SPSS卡方检验结果解读详解
  12. 数据科学分布——泊松分布
  13. 博途仿真PLC与第三方客户端通信
  14. 短信验证码接口被恶意攻击怎么办?
  15. 小幅震荡市场下的期权投资策略举例
  16. Can DBC文件翻译
  17. CodeForces - 1152 B. Neko Performs Cat Furrier Transform
  18. 在VM虚拟机上装“黑苹果
  19. andorid身份证输入格式--EditText设置
  20. Spring Cloud Bus 消息总线

热门文章

  1. Linux服务器期末复习总结
  2. 智安网络丨德勤发布2021九大技术趋势,零信任安全成为主流
  3. GO语言(golang)官方网站!
  4. 中台建设:中台有效落地的6脉神剑
  5. 网易CEO丁磊:手机网游是未来新趋势
  6. 测试工作中常见问题及优化方案
  7. windows server 硬盘满了怎么清理?
  8. 关于skb_make_writable()函数
  9. Java——文本框设置背景颜色、字体样式和颜色
  10. ffmpeg 图片序列转视频