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
首先肯定先介绍下PCL,虽然大家都大概知道了(✿◡‿◡)!如下:
官网和github连接先mark这了。
官网:https://pointclouds.org/
GitHub:https://github.com/PointCloudLibrary/pcl
介绍:
下面是PCL架构图
如图PCL架构图所示,对于3D点云处理来说,PCL完全是一个的模块化的现代C++模板库。其基于以下第三方库: Boost、Eigen、FLANN、VTK、CUDA、OpenNI、Qhull,实现点云相关的 获取、滤波、分割、配准、检索、特征提取、识别、追踪、曲面重建、可视化等。
我们主要学习的就是里面各种模块,总体来说16个模块(下图中有15个,少了recognition),如下:
官网各模块:https://pcl.readthedocs.io/projects/tutorials/en/latest/#
每个模块都有依赖关系,依赖关系如下图(可以看出有四层),最基本的就是最底层的commom模块。
箭头对应的是依赖关系,比如第二层的kdtree依赖于common;第四层的registration有四个箭头,分别是sample_consensus, kdtree, common, features。
官方图
B站up主画的更详细的图
B站up主画的更详细的图
PCL最近(2020)改版了。里面很多文档和之前的都不一样了,我自己学习PCL时时,是看的最新文档,也踩了很多坑,现在分享一下自己的学习方法和思路,希望对大家有所帮助。
先放下入门资料( 后面会介绍):
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有所了解,然后我们就敲代码吧!
代码实践资料:
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 + 每个示例中的对象函数介绍。
主要结合这两块来看:边看示例代码,边看代码里面对象函数的参数详情。
各模块的官方示例demo位置在网站侧边栏。如下图
https://pcl.readthedocs.io/projects/tutorials/en/latest/#
各模块的官方示例demo位置在网站侧边栏
进入各模块有两种方式
https://pointclouds.org/documentation/modules.html
https://pointclouds.org/
侧边栏也都是各模块函数详情
官网的Getting Started中的12宫图,每一格对应一个模块的对象函数详解
总的学习方法:
先将要学的 官网IO模块的实例demo代码和IO模块函数的详解页面打开。
然后将 模块介绍和中文代码注释的博客打开,一起学习!
首先,将官网IO模块的实例demo代码和IO模块函数的详解页面打开,如下图:
实例demo代码(实战) 每个模块都有几个demo代码,点击进去里面有代码的解释
IO模块函数class
同时,可以结合看中文详情博客笔记:
从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
自己做了很多笔记,有时间可以整理发出来。
先说下这位博主的建议,我觉得挺好的:
关于如何查找和利用PCL库学习资源的一些心得
入门资料:
链接:https://pan.baidu.com/s/1ziq8s_kj5QpM8eXO_d6RJg
提取码:g6ny
代码实践资料:
代码自己一定要动手敲一遍
官网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
官网demo:https://pcl.readthedocs.io/projects/tutorials/en/latest/#octree
对应函数:https://pointclouds.org/documentation/group__octree.html
详细中文博客文章:
官网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几种采样方法
官方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)
可视化深度图像
官方demo
documentation(class和function函数)
code
详情笔记:
从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)
官网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)
官网demo:https://pcl.readthedocs.io/projects/tutorials/en/latest/#surface
函数:https://pointcloudlibrary.github.io/documentation/group__surface.html
详细中文博客文章:
http://robot.czxy.com/docs/pcl/chapter04/resampling/
pcl几种表面重建_3D的博客-CSDN博客
PCL点云曲面重建(1)
PCL法线估计
官网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)
官网demo:
https://pcl.readthedocs.io/projects/tutorials/en/latest/#recognition
函数:https://pointclouds.org/documentation/group__recognition.html
详细中文博客文章:
https://github.com/Ewenwan/MVision/tree/master/PCL_APP/Recognition
官网demo:https://pcl.readthedocs.io/projects/tutorials/en/latest/#registration
函数:https://pointcloudlibrary.github.io/documentation/group__registration.html
中文博客文章:
黑马机器人 | PCL-3D点云
PCL中的点云ICP配准(附源代码和数据)_qq_29462849的 ...
官网demo:https://pcl.readthedocs.io/projects/tutorials/en/latest/#visualization
类/对象/函数:https://pointcloudlibrary.github.io/documentation/group__visualization.html
详细中文博客文章:
官网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-learninggithub.com
版权
双愚
码农研究生 自动驾驶/点云视觉感知 | 公众号『重庆小哥稳』
https://www.cnblogs.com/li-yao7758258/category/954066.html?page=1
PCL点云库官网教程