【PCL入门系列之一】点云库PCL简介

小白学视觉

共 3323字,需浏览 7分钟

 ·

2021-09-14 15:33

点击上方小白学视觉”,选择加"星标"或“置顶

重磅干货,第一时间送达

        本系列文章首先介绍什么是PCL以及PCL的功能。之后将讲解如何在Linux上安装PCL,为下一步测试、编程、开发做准备。后续的文章将对PCL官网上给出的教程进行解释、编译、调参等辅助学习,期间还会涉及到Linux的一些开发技巧、分享学习心得等。欢迎广大对PCL感兴趣的或是正在应用的学习者开发者们在评论区或者后台留言讨论。 


一、简介

 

       PCL(The Point Cloud Library) 是一个用于2D/3D图像和点云处理的大型的开源项目。PCL框架由许多先进算法构成,包括滤波、特征估计、表面重构、配准、模型拼合和分割等。这些算法有许多应用,例如,过滤噪声数据中的异常值,拼合多组3D点云,分割场景中的相关部分,提取关键点并计算几何外形的描述子用于识别物体,利用点云创建并可视化物体表面,等等。PCL目前已成功编译并配置在Linux, MacOS, Windows, 和Android/iOS等平台上。为了简化开发,PCL被分割成了一系列可单独编译的小型代码库。

        官网地址: http://pointclouds.org

        作者: 

  • Radu Bogdan Rusu

图片来源于谷歌

        毕业于慕尼黑大学,斯坦福大学访问讲师,柳树车库(Willow Garage)前研发科学家。

  • Steve Cousins

图片来源于谷歌

毕业于斯坦福大学,柳树车库(Willow Garage)前总裁兼CEO。

* Willow Garage研发了ROS

* "前"科学家、"前"总裁并不是现在退休了或者被开除了,而是人家现在是好几个公司的总裁、CEO了

* 放照片不仅仅是为了占地方,请记住这些大佬的名字和脸,有机会见面的时候一定眼疾手快抓住机会抱大腿


二、功能模块

       

 PCL官网上给出的功能模块(modules)如下:

滤波器 Filters

特征 Features

关键点 Keypoints

配准 Registration

Kd(K-dimensional)树 KdTree

八叉树 Octree

分割 Segmentation

采样一致性 Sample Consesus

表面 Surface

范围图像 Range Image

输入输出 I/O

可视化 Visualization

常用 Common

搜索 Search

        这些概念不懂并没有关系,我们将会在后续过程中进行讲解,并对算法进行测试,而开发者们只需要关注自己用得到的部分就好。


三、学习心得
       

   首先要和开发者尤其是初学者们讨论的是定位问题。

        我们的最终目的并不是学习全部的PCL库、学会它的每一个函数,而是会用。库(Library)的诞生就是为了简化开发过程,从一而终都只是一个工具。有的时候初学者会陷入一个过于好学的误区,看到厉害的东西就想去学,有很多类似别人能写出来我为什么看都看不懂我是不是太菜了等打击自信心的想法。好学不服输当然是值得提倡的精神,但是前提是方向正确。既然有人开发出了"工具",那就放心大胆去用就好了,不必为自己写不出来这样厉害的构架和代码感到自惭形秽。等真正感到仔细研读算法源码会对我有帮助的时候再继续深入也不迟。为了而学总要比为了而学效率要高。因此初学切忌过深过细

        第二要讨论一下权威的问题。

        对于一个库来说,最权威的解释、源码来源就是官网了。但是要知道,库也是人写出来的,不可能保证一步到位滴水不漏,它也需要不断地改正与进化,所以才有更新版本的必要。因此对于哪怕是官网上发布的内容,也不要养成不经思考盲目崇拜的习惯,要学会自己去尝试体验,感受这些算法的优缺点,成为一个有想法有方法的开发者。

        对于这些模块,PCL官网给出了简单的讲解和代码以及效果图。但是值得一提的是,在学习过程中不要盲目崇拜官方权威。(不讨论造假的情况,我暂且相信官方数据不存在造假,但是有可能鲁棒性不高,适用范围很窄,)原因主要有两点,一是数据集,二是参数

        数据集的数据类型、数量是在选择算法时需要首先考虑的问题,也是算法应该最基本符合的要求。有些算法在小数量数据的范畴内效果差别不大,但是随着数量的增长,处理时间有可能千差万别(时间负责度问题),那么处理大量数据的时候就要考虑这些问题,在时间复杂度和精度之间进行权衡。

        参数的设置往往决定了算法是否符合需求。例如有些算法需要输入的参数无法在我们实际的应用场景中得到,那么即使算法精度高速度快也是不可取的。另一方面若是我们已经选择了一个算法,对官方数据集效果很好的参数却不一定同样适用于我们的测得的数据。

        对于别人给出的开源代码,最好自己尝试着跑一跑,在这个过程中学习编译、调参、测试、分析等技能。


好消息,小白学视觉团队的知识星球开通啦,为了感谢大家的支持与厚爱,团队决定将价值149元的知识星球现时免费加入。各位小伙伴们要抓住机会哦!


下载1:OpenCV-Contrib扩展模块中文版教程
在「小白学视觉」公众号后台回复:扩展模块中文教程即可下载全网第一份OpenCV扩展模块教程中文版,涵盖扩展模块安装、SFM算法、立体视觉、目标跟踪、生物视觉、超分辨率处理等二十多章内容。

下载2:Python视觉实战项目52讲
小白学视觉公众号后台回复:Python视觉实战项目即可下载包括图像分割、口罩检测、车道线检测、车辆计数、添加眼线、车牌识别、字符识别、情绪检测、文本内容提取、面部识别等31个视觉实战项目,助力快速学校计算机视觉。

下载3:OpenCV实战项目20讲
小白学视觉公众号后台回复:OpenCV实战项目20讲即可下载含有20个基于OpenCV实现20个实战项目,实现OpenCV学习进阶。

交流群


欢迎加入公众号读者群一起和同行交流,目前有SLAM、三维视觉、传感器自动驾驶、计算摄影、检测、分割、识别、医学影像、GAN算法竞赛等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~


浏览 26
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报