linuxvps建站教程,档案馆网站机房建设,e福州是哪个公司开发,淘宝刷网站建设前言
学习PCL库的两个月左右时间里#xff0c;从刚开始的无从下手到慢慢地摸清一些门道#xff0c;走了很多弯路#xff0c;也遇到过很多困惑#xff0c;逐渐有了一些如何查找与利用PCL库学习资源的心得。所以把这些心得记录下来#xff0c;一是为了给自己以后学习PCL库和…前言
学习PCL库的两个月左右时间里从刚开始的无从下手到慢慢地摸清一些门道走了很多弯路也遇到过很多困惑逐渐有了一些如何查找与利用PCL库学习资源的心得。所以把这些心得记录下来一是为了给自己以后学习PCL库和其他库时提供借鉴而是希望为一些新上手的PCL库学习者提供一些思路。 学习工具 PCL库官网《点云库PCL学习教程2》CSDN等博客论坛的教程博文一些外国学术团队的总结帖 一.PCL库官网
PCL官网做的算是很贴心和充实了虽然博主目前了解的库并不多深入挖掘之后会发现每个模块都藏龙卧虎可能会有你说期待的资源。当然啦如果PCL官网能够有个“Get starting”之类的指引教程就更好了就不要新手自己去摸索“宝藏”藏在哪里了。下面博主就按模块分别来介绍PCL官网里的“宝藏”。还在挖掘中难免有遗珠读者请勘正。 1.Homepage
首先就是PCL官网的主页面了相信也是读者们度娘“PCL”点击进去最常见的页面了。页面上的“About”、“News”、“Blog”、“Download”、“Media”、“Jobs”、“Documentation”、“Contact”、“GSoC14”模块都有其独特的作用后面会分别讲。
页面中心部分的“What is it?”是对PCL的大体介绍是“About”模块的缩略“Latest News Articles”是一些最新的新闻和下载版本虽然版本还停留在1.7.1,是“News”和“Download”模块的缩略“Active Code Sprints”是对一些参加“代码冲刺”项目“代码冲刺”项目就是相关组织联合推动立体视觉项目开源进程的计划各个参与的组织有专门的developer来各尽所长地填充新功能让PCL库变得更加强大与完善的合作组织的罗列是“Blog”模块的缩略“Latest Job Posting”是一些PCL库所属公司的招聘信息是“Jobs”模块的缩略“Quick Links”是一些快速链接对于用户Users来说主要有“API 文件”与“Documentation”模块一样的入口和“用户论坛”。对于开发者Developers来说主要有“发展空间”、“Bug追踪”、“发展者论坛”。对于我们使用库的使用者来说“发展空间”和“Bug追踪”这些比较低层的内容接触面不大当然有深入研究的读者可以参看博主还没到那阶段“发展者论坛”问的也是比较偏向类设计、函数设计之类偏库整合的讨论信息。对于一般使用者“API文件”可以点击“Documentation”模块进行查看而“User 论坛”User forum确实是个不错的资源可以好好利用。下面对它进行进一步介绍。 2.User forum
点击Homepage中的“Users forum”之后就会进入如下页面是一些“Users mailing list”是世界各地PCL库使用者在使用PCL库过程中遇到的问题的一些讨论。对于你遇到的问题你可以在搜索框利用关键词索引的方式查找是否有相同的问题。该资源的优点是作为使用者你遇到的坑别人可能踩过他山之石可以攻玉。
目前博主查到的几个有用的信息包括
1.描述子用.setSearchSurface( )函数和用.setIndices( )函数实现的对部分点求解描述子的效果是一样的。但基于后一种索引的方式更加直观且可能省去法线重计算的问题所以由用户在论坛提出这个问题。后来PCL库的开发者就加上了关键点的.getKeypointsIndices( )功能的实现来获取关键点在原始点云中的索引方便带入下一步描述子的设置索引中。
2.在ISS关键点选取过程中的一些注意事项查询过程中发现有用户给出的关于ISS特征点详细使用的链接比Documentation中对ISS使用介绍的code snippet要详细这个链接是指向把ISS在PCL库实现的作者的blog文章在“Blog”模块中比较深的目录中不太好找从而让博主发现原来“Blog”模块也是个“大宝藏”只是“Blog”模块的指引做得不是特别好。
3.在相关问题的问答中验证自己方法逻辑的正确性比如基于特征点匹配的点云配准从关键点选取到描述子选取到特征匹配再到位姿变换估计方法每个环节有多种对象可选哪种对象或哪种组合比较高效每种对象需要怎样的参数设置会有比较好的效果怎样整合衔接才是正确合理的这些问题也许都会在你搜索相关问题的过程中有意想不到的收获。
4.看见有些新手也对一些基础的问题感到困惑你发现自己不是孤独的看见论坛中有PCL的开发者及时回答使用者的问题并根据需求push新的功能你发现会有安全感和见证感看见互不相识的用户讨论同一个问题大家集思广益没有利益相关但慷慨相助你会爱上开源社区的纯粹与小众的认同感。
当然“用户论坛”的缺点也是很明显的主要有两点
“用户论坛”的活跃度并不高许多问题下的问答不超过10条信息记录有些甚至只有提问者孤零零的独角戏。链接速度特别慢要缓冲好久才能跳转到相关问题的页面。如果读者知道哪里有更好的PCL用户使用交流论坛记得留言告诉博主哈比心。 3.About
“About”模块是关于PCL库的大概介绍包括它的起源、性质、架构、功能等等。 4.News
“News”模块介绍PCL库以及其组织近期开展的一些比较时新的工作内容。 5.Blog
“Blog”模块是本质上是“PCL Developers blog”PCL开发者模块。由于PCL是一个开源项目所以它由许多开发者许多组着在“代码冲刺”(Code Sprints)项目的框架中有着各自的开发者对新功能进行开发与实现有些是算法原作者把算法在PCL框架下的实现有些是非算法原作者对已有算法在PCL框架下的实现然后整合到PCL库中。这个“Blog”模块就是记录这些开发者在开发新功能时的一些记录。这些记录一般有开发者对自己开发的功能的详细记录通常会比Documentation和Tutorial里对该功能的介绍要详细一些包括心路历程、功能较详细的介绍与同类功能的测试与对比等等这些都是比较有价值的内容比如RoPS描述子、ISS关键点。
但是要找到具体某个Developer的博客入口可不是容易的事情这也是“Blog模块”引导做的不好的地方。你首先需要知道你查找的功能在PCL库中是哪个Developer实现的这个developer是属于“Blog”模块中“Code Sprints”代码冲刺项目中的哪个组织点击相应的组织进去然后查找到对应的developer的blog里面应该就有它开发该功能的相关博客记录。
所以推荐的查找流程是
明确自己想用的功能在Documentation - Namespace - pcl 中查找是否有该功能类的实现如果有查看对应的documentation看能否解决问题。如果documentation的使用案例不够详细查看该功能的实现作者一般在该功能的Brief descript简略介绍中有介绍作者依次在“Blog”模块中的各个“Code Sprints”组织中查找是否有该作者。若找到该作者则在其博客中看看是否有更为详细的介绍。 [案例1-RoPS描述子]
下图是“RoPS描述子”功能在PCL库中实现的作者Sergey Ushakov的PCL博客记录了相关的RoPS实现记录。
查找路径“Blog”- “Code Sprints” - “HRCS” - “Sergey Ushakov”当时博主是度娘“RoPS”找到的该主页
网址链接http://184.154.22.163/blog/hrcs/sushakov/index.php [案例2-ISS关键点]
下图是“ISS关键点”在PCL库中实现的作者Gioia Ballin的PCL blog中对ISS关键点的使用的详细介绍比Documentaion中的介绍多了ISS-BE边缘剔除用法的介绍在该博客中还有作者对ISS关键点与Harris3D以及NARF在不同数据集下的效果对比得出的ISS关键点效果更好的结论。
查找路径“Blog” - “Code Sprints” - “gsoc12”- “Gioia Ballin”博主当时是在User forum中查看ISS使用方法的相关问题时看见有用户给出的这条链接
网址链接http://www.pointclouds.org/blog/gsoc12/gballin/iss.php 当然链接目录如此复杂遍历所有组织找人名优点本末倒置的感觉当然提前先度娘一下或者bing一下看看能不能找到也许是个更合理的选择。如果documentation已经能够解决你大部分的问题足够用了当然就不一定有必要去辛辛苦苦去寻觅那份可能存在的“源本密经”了。因人而异各取所需。 6.Download
“Download”模块是下载“PCL二进制版本”、“PCL源程序”以及“PCL logo”的地方。目前从此入口进去的Windows版本的PCL还停留在1.5.x和1.6.x上所以不推荐下载。
如果需要下载比较新的版本推荐到下面链接中下载
PCL 1.8.0和PCL 1.8.1官方链接http://unanancyowen.com/en/pcl18/ 链接墙内可能进不去了
PCL 1.8.0百度云链接http://pan.baidu.com/s/1c1sqoQO
关于如何安装在Win8上安装PCL 1.8.0 AllInOne版本以及在VS2013上的相关配置可以参看博主先前的博文
PCL-1.8.0-AllInOne VS2013 Win8 X64 安装配置及部分问题解决方法
如果想要最新版本就去github/pcl fork吧这个repository是实时更新的用啥取啥。
github/pcl链接https://github.com/PointCloudLibrary/pcl 7.Media
“Media”模块也是一个“卧虎藏龙”之地。主要分为以下几个部分
PCL的历史PCL开发者与实习生关于PCL不同模块的Presentation社区的数据资源包括PCL自己的数据还有许多其他机构的数据入口链接都已经按功能模块帮你分类列好了真的很nice是个大大的福利PCL提供的一些开源成品软件即下即用很实用PCL组织在历年一些计算机视觉领域会议的报告里面有价值的信息很多有对PCL的整体框架与模块设置的大概介绍也有PCL在时新领域的工作结合等等 下图就是PCL组织在“CGLIBS13”做得会议交流的记录页面。里面有当时对“PCL库”的整体框架以及几个重要模块的架构的介绍对于刚接触PCL库的读者可以起到一个启蒙的作用。 8.Jobs
“Jobs”模块就是PCL组织的招贤纳士啦。 9.Documentation
对于所有的库来说“Documentation”都是最重头戏PCL库当然也是一样。“悟Documentation者悟天下”。“Documentation”的主页面还是比较“和蔼可亲”的有“Getting Started”之类的图文并茂的几个大的模块介绍。
分别有
filtersfeatureskeypointsregistrationkdtreeoctreesegmentationsample_consensussurfacerecognitioniovisualization...... 点击页面中的“API documentation”中的某个版本的API documentation链接就正式开始“较深层的documentation攻坚之旅”啦。 以PCL1.8.1的API Documentation为例有四个页面项
Main PageModulesNamespacesClasses 这四个页面项中Main Page主要是关于这个API Documentation的一些基本信息关系不大“Class”页面项下的分类很混乱博主现在看得云里雾里所以用的不多。所以博主平时找某个API或者类的时候用三种方式比较多
直接在搜索框输入关键词进行搜索查找所有类和函数
PCL库的API Documentation提供搜索机制所以最简单的方式就是在搜索框里输入要查的类或函数然后回车就OK啦。正所谓“哪里不会点哪里”应该就是这样的吧。
缺点就是出来的结果是你搜索的关键词的超集或者超超集对初学者并不是很友好容易看得一头雾水而找不到自己真正想要的那个 利用Modules页面项查找对应模块下的类和函数
该页面项是按模块分类的模块类型大致和上面说的几种差不多有所补充。如果用户知道自己查找哪方面的类或函数时可以直捣黄龙在相应的模块里查找有没有你想要的Mr. Right。
不过缺点就是有一些新加的功能没有加入到该模型下或者一些较小的分支孤零零地走丢了也没有包进来难免就有遗珠了。所以就有了咱们下面的第三种方法pcl大法好呀 下图是在模块页面项中点击进入“registration”时的页面。有模块的知识概览类介绍函数介绍等等... Namespace-pcl大法查找所有pcl命名空间下的类与函数
如果要说一种大而全且精确的类查找方法没有遗珠的方法那就是Namespace-pcl大法了。它可以查找所有定义在pcl命名空间里的类与函数不会有遗珠。
查找路径“Namespaces”-“pcl”-“按首字母顺序遍历查找” 以“pcl::RangeImage”类为例在进入“Namespace”-“pcl”- classRangeImage当然也有其他方式进入该类的参考页面后一般有如下几个模块带括号的表示可能有可能无加粗为重点项
公共类别预定义公共成员函数公共数据成员/属性隐私工作普遍好静态公共成员函数静态公共数据成员/属性静态保护成员函数保护数据成员/属性静态保护数据成员/属性附加集成的成员细节介绍包括Code Snippet、作者信息成员定义文件预定义成员枚举文档重构析构函数文档成员函数文档上面成员函数的详细版介绍有函数功能介绍各个参数的介绍以及在.hpp文件中定义的位置P
CL的文件功能分配为.h文件进行模板类声明.hpp进行模板类实现.cpp文件进行模板类实例化/限定 如果以上三种方法还满足不了你“上下求索”的心那就可以直接扎根到本地下载的PCL库或者github/pcl repository的相关“.h、.hpp、.cpp”文件中寻找你要的真相与真理啦。Enjoy it 10.Tutorials
“Tutorial”是PCL库的二当家按模块分类介绍了各个模块下的主要应用的教程示例。模块分类为
Basic UsageAdvanced UsageApplicationsFeaturesFilteringI/OKeypointsKdTreeOctrssRange ImagesRecoginitionSample ConsensusSegmentationSurfaceVisualizationGPU
这是最原汁原味也是最可靠的官方教程如果你想用的类与功能刚好是在Tutorial中存在的幸运儿那你庆幸把然后好好专研吧。当然有时候你想要的功能可能Tutorial里咋一看没有但是“蓦然回首那人竟在灯火阑珊处”。比如在Tutorial-Keypoints模块里只有NARF关键字的教程而你想找的是SHOT关键字的教程。等你读的书够多走的路够多之后发现一切都殊途同归。在Tutorial-3D Object Recognition based on Correspondence Grouping中在关键点查找环节中就是用的SHOT关键点其中有相应的教程。
此外Tutorial里或多或少有些理论背景介绍也有相关的论文链接想要深入研究或了解原理的读者不要放过哦。 11.Contact
“Contact”模块是与PCL组织联系的模块当然你可以发一封邮件去感谢PCL组织的贴心和贡献。 12.GSoC14
“GSoC14”模块可以理解为“手把手带你用PCL做项目”的模块。指导详细资源充足如果你是一个学习PCL且有充裕时间的萌新可以通过这个模块建立你与PCL的友谊增强你热爱编程世界的可能性。 13.github/pcl
这里有实时更新的pcl库有原汁原味的源代码有各种各样的Issues等你参看各种各样的Pull requests等着向你述说变迁的历史风雨。也许刚开始你是一个旁观者感叹历史风雨变幻英雄人物造实世但你也会在参与着历史的创造中无一例外。共勉
另外github上搜索pcl还会出现好多用户自己整合的“精而美”的pcl库也行是pcl库的“轻装上阵”也许是pcl的“DIY”也许是pcl与其他库的“结合”这些都可以给予我们参考价值。Smart is the new sexy. 由上可知PCL库的官方资源的六个主要杀手锏是
API Documentation - Tutorials - Media - github/pcl - Blog - User forum. 二.《点云库PCL学习教程2》
诚然《点云库PCL学习教程2》正如网上很多网友说的其实就是官方资料的汉化翻译而已。
这本书的组织结构是按照PCL库的几个大体模块按章节分块编写的每一章主要分为三个部分
模块背景知识/理论知识介绍作者对该模块知识的理解与整理是在PCL库基础上一个不错的补充模块中重要的类的API介绍对应部分重要的API Documentation的汉化翻译模块中的类的教程介绍对应Tutorial的汉化翻译 1.Theoretical primer
这部分主要有PCL的编程规范、架构介绍、模块的背景介绍、理论介绍、逻辑介绍等。
这部分是作者对该模块知识的理解与整理是在PCL库基础上一个不错的补充。 2.Classes Information
模块中重要的类的API介绍对应部分重要的API Documentation的汉化翻译 3.Tutorial
模块中的类的教程介绍对应Tutorial的汉化翻译 博主个人推荐是把PCL官网的“API Documentation”、“Tutorial”和《点云库PCL学习教程2》结合起来用效果会比较好。如果你需要用到某项功能先去看原版的PCL官网的“API Documentation”、“Tutorial”获取最原汁原味的“第一感觉”然后再去看《点云库PCL学习教程2》进行“中文亲切版收割”其中还可以顺便收割一波“理论背景与整理”。先啃硬骨头然后云里笑。 三.CSDN等博客论坛的教程博文
当然度娘搜索目标功能的关键词就能在CSDN、博客园等博客论坛上找到相应的教程博文。该类博文主要分为三种 1.纯汉化PCL官网的Tutorial
这类博文主要就是对PCL官网上的Tutorial进行汉化与翻译所以推荐有英文阅读能力的同学最好是PCL官网的原版Tutorial和汉化版的教程博文结合起来看比较好这样一些细节的地方比如参数能够自己有所理解并及时勘误。
2.功能的整合应用
这类博文把PCL官网中的Tutorial进行了整合。比如功能“ABC”的整合应用可以给你关于
API衔接环节与
参数设置的参考价值 3.自己的工程实例
这类博文对PCL官网中的Tutorial进行了实例工程的应用。比如是“A”或“B”或“C”应用到某个具体工程领域可以让你了解关于该方法在特定场景下的表现效果以及在特定场景下参数设置的经验。 四.一些外国学术团队的总结贴
国外的一些学术团队会针对自己的领域比如ROS、SLAM等对PCL库进行重新的理解与教程编排不乏一些很好的总结贴。如果说PCL库中的各个Tutorial是一个独立散落的珍珠而这些针对某个领域大型应用的串联整理贴就是穿针引线而成的项链不论领域是否相同都会对你有所启发比如如何对独立功能进行整合不同选择选择对象的比较各个环节的可视化等等。
最难得的是在实现“全身运气”的前提下还贴心整理出了每个环节相关的论文链接、PCL-API Documentation链接、PCL-Tutorial链接真的很nice
下面就是一个研究ROS领域的学术团队以“三维目标识别”的流程大框架把PCL库大部分功能串联起来详细分析的教程贴。 网址链接
http://robotica.unileon.es/index.php/PCL/OpenNI_tutorial_4:_3D_object_recognition_(descriptors)