《点云库PCL学习教程》-第1章-概述讲课教案.ppt
-
资源ID:60885158
资源大小:684KB
全文页数:32页
- 资源格式: PPT
下载积分:20金币
快捷下载

会员登录下载
微信登录下载
三方登录下载:
微信扫一扫登录
友情提示
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
|
《点云库PCL学习教程》-第1章-概述讲课教案.ppt
点云库点云库PCLPCL学习教程学习教程-第第1 1章章-概述概述简介本书的取材、编写体现了PCL强大的功能模块、统一易学的C+调用接口两个特点。全书共分为16章,第13章介绍了PCL的概述、入门与基础,第47章详细介绍PCL基础功能模块输入/输出I/O、kd-tree、八叉树、可视化,第4章为后续章节模块的基础,第815章详细介绍PCL高级处理功能模块点云滤波、深度图像、关键点、采样一致性、点云特征描述与提取、点云配准、点云分割、点云曲面重建,第16章介绍了一些典型综合应用,让读者感受PCL的强大与易用。概述点云处理技术广泛应用在逆向工程、CAD/CAM、机器人学、激光遥感测量、机器视觉、虚拟现实、人机交互、立体3D影像等诸多领域。由于其涉及计算机学、图形学、人工智能、模式识别、几何计算、传感器等诸多学科,但一直以来由于点云获取手段的昂贵,严重阻碍其在各个行业上的广泛应用,也造成国内点云处理的理论性和工具性书籍匮乏。在2010年,随着消费级RGBD设备(低成本点云获取)的大量上市,以微软的Kinect为前导,目前已有华硕、三星等多家公司开始量产此类产品,正在形成基于RGBD的新一代机器视觉生态链,PCL(Point Cloud Library)应运而生。PCL是在吸收了前人点云相关研究基础上建立起来的跨平台开源库,可在Windows、Linux、Android、Mac OS X、部分嵌入式实时系统上运行,它实现了大量通用算法和数据结构,涉及点云获取、滤波、分割、配准、检索、特征提取、识别、追踪、曲面重建、可视化等基础模块以及人体骨骼识别提取、动作跟踪识别等应用,并且新的其他应用正在大量增加。如果说OpenCV是2D信息获取与处理的结晶,那么PCL就在3D信息获取与处理上具有同等地位。笔者深信随着各大厂商对RGBD设备的大力推出,基于此设备的各种应用将会大量涌现,而PCL不仅是这类应用的核心关键技术,而且基于它进行扩展,将会极大地提高应用系统开发效率和稳定性。三维信息的获取与处理是笔者所在研究团队的重要方向之一,在农业对象的三维信息获取与重建、虚拟农业等领域不断探索新的获取技术和处理方法,在2011年7月发现了OpenCV的姐妹PCL及其网站的RSS更新,时刻关注PCL在3D信息获取和处理方面的新动向,并与PCL结缘。在跟踪过程中发现,PCL对RGBD数据的获取和处理提供了强大支持,并有大量的机器人、虚拟现实、人机交互、机器视觉等领域的应用案例,目前几乎每半个月就有新的开发计划,或者有新的资助者或开发者加入。加入PCL开发的团队来自包括全球的AIST,UC Berkeley,University of Bonn,University of British Columbia,ETH Zurich等等。同时我们团队已经把PCL作为开发出实际应用的基础平台,用于跨平台支持嵌入式设备的3D农业信息获取与处理的基础库。目前PCL正在快速成长阶段,国内外尚无相关的中英文系统学习书籍,鉴于此,经过团队讨论,把我们学习和开发应用期间整理的资料与国内读者一起分享,加快PCL在其他各行业中的应用,推动3D信息快速获取与处理的发展。PCL的潜在读者群:机器人研究或应用开发者机器视觉的研究或应用开发者。人机交互研究或应用开发者。交互式体感游戏开发者。虚拟现实研究或应用开发者。CAD/CAM和逆向工程工作者。工业自动化测量、检测领域的研究或应用开发者。激光雷达遥感的研究或应用开发者。本书概况本书分为三大部分,其中第三部分以接近实战的实例来讲解工程应用,相比于前两部分更独立。如果读者是一名经验丰富的资深用户,已经知道PCL的相关基础知识和使用方法,那么读者可以直接阅读测试这部分内容。但如果读者是一名初学者,请一定从第1章的基础理论知识开始学习。第一部分为基础篇从第1章到第3章,简单介绍PCL的相关背景资料和基本使用方式,帮助读者了解一些基础背景知识,感受自己的研究应用领域在PCL基础上有哪些应用前景,并熟悉PCL的使用方法以及编程规范,为读者使用PCL做好前期准备工作。第二部分为模块篇从第4章到第15章,着重讲解PCL各个模块中涉及的3D点云处理的概念、模块API、实例应用。每章结构都是先简单介绍本章涉及的相关概念,再重点介绍一些模块相关的类和函数,最后分析几个典型的模块应用实例,让读者不需要太多点云处理基础,也能轻松掌握PCL各个功能模块。第二部分涵盖点云获取、滤波、分割、配置、检索、特征提取、识别、追踪、曲面重建、可视化等全部已基本定型的模块,骨骼识别与跟踪模块还正在开发,本书未包含。第三部分是综合应用篇第16章,通过基于PCL的典型应用案例进行介绍,让读者进一步能够体验PCL的强大,同时了解一些虚拟现实和人机交互领域的新事物。光盘收集PCL1.51的开发资源及本书中涉及的实例程序和数据。PCL版本版本PCL的发布更新以1.5X的小版本号来表示,本书针对的是1.51版本。PCL正在不断开发和完善中,但基本架构和设计思路基本确定,相信读者对本书介绍了解之后,对其他版本就轻车熟路了。请参照网站地址:http:/docs.pointclouds.org/trunk/modules.html。虽然本书中参考所用的API文档,仍然在不断更新新的类、函数,但模块基本确定,不会对PCL的理解产生困难。源代源代码本书的所有源代码和工程文件大多数整理来自于PCL官方网站,都以BSD(Berkeley Software Distribution)许可协议或者(CCA)Creative Commons Attribution3.0的形式发布,读者可以自由使用和分享,如果需要应用于商业领域,请注明版权所有者。目录第1章 概述第2章 PCL入门第3章 PCL基础第4章 输入/输出(I/O)第5章 kd-tree第6章 八叉树第7章 可视化第8章 滤波第9章 深度图像第10章 关键点第11章 采样一致性算法第12章 点云特征描述与提取第13章 点云配准第14章 点云分割第15章 点云曲面重建第16章 综合应用本章各小节目录1.1 什么是PCL1.2 PCL的发展与创景1.3 PCL的潜在应用领域1.4 PCL在中国1.5 PCL的结构和内容1.1 什么是PCLPCL是Point Cloud Library的简称,是一个开源的用C+语言开发的点云库,它实现了大量点云相关的通用算法和高效数据结构,涉及到点云获取、滤波、分割、配准、检索、特征提取、识别、追踪、曲面重建、可视化等。而且支持多种操作平台,可在Windows、Linux、Android、Mac OS X、部分嵌入式实时系统上运行。如果说OpenCV是2D信息获取与处理的结晶,那么PCL就是在3D信息获取与处理上的结晶,具有同等地位。PCL也是BSD授权方式,可以免费进行商业和学术应用。1.2 PCL的发展与创景随着加入组织的增多,PCL官方目前的计划是继续加入很多新的功能模块和算法的实现,包括当前最新的3D相关的处理算法和相关设备的支持,如基于PrimeSensor 3D设备,微软Kinect或者华硕的XTionPRO智能交互应用等,详细读者可以参考官方网站每期的新闻,而且也计划进一步支持使用CUDA和OpenCL等基于GPU的高性能计算的技术。笔者相信在近几年内会有更多的人和组织加入到这个项目中来,共享开源PCL带来的各自领域的成果。1.3 PCL的潜在应用领域1.3.1 机器人机器人领域域移动机器人对其工作环境的有效感知、辨识与认知,是其进行自主行为优化并可靠完成所承担任务的前提和基础。如何实现场景中物体的有效分类与识别是移动机器人场景认知的核心问题,目前基于视觉图像处理技术来进行场景的认知是该领域的重要方法。但移动机器人在线获取的视觉图像质量受光线变化影响较大,特别是在光线较暗的场景更难以应用,随着RGBD获取设备的大量推广,在机器人领域势必掀起一股深度信息结合2D信息的应用研究热潮,深度信息的引入能够使机器人更好地对环境进行认知、辨识,与图像信息在机器人领域的应用一样,需要强大智能软件算法支撑,PCL就为此而生。最重要的是PCL本身就是为机器人而发起的开源项目,PCL中不仅提供了对现有的RGBD信息的获取设备的支持,还提供了高效的分割、特征提取、识别、追踪等最新的算法,最重要的是它可以移植到ROS、Android、Ubuntu等主流Linux平台上,PCL无疑将会成为机器人应用领域一把“瑞士军刀”。1.3.2 CAD/CAM、逆向工程、逆向工程大部分工业产品是根据二维或三维CAD模型制造而成,但有时因为数据丢失、设计多次更改、实物引进等原因,产品的几何模型无法获得,因而常常需要根据现有产品实物生成物体几何模型。逆向工程技术能够对产品实物进行测绘,重构产品表面三维几何模型,生成产品制造所需的数字化文档。在一些工业领域,如汽车制造业,许多零件的几何模型都通过逆向工程由油泥模型或实物零件获得,目前在CAD/CAM领域利用激光点云进行高精度测量与重建成为趋势,同时引来了新的问题,通过获取的海量点云数据,来提取重建模型的几何参数或者形状模型,对模型进行智能检索,从点云数据获取模型的曲面模型等,诸如此类的问题解决方案在PCL中都有涉及。例如kd-tree和oc-tree对海量点运进行高效压缩存储与管理,其中滤波、配准、特征描述与提前基础处理,可以应用于模型的智能检索以及后期的曲面重建和可视化都在PCL中有相应的模块。总之,三维点云数据的处理是逆向工程中比较重要的一环,PCL中间所有的模块正是为此而生的。1.3.3 激光遥感激光遥感测量量能够直接获取高精度三维地面点数据,是对传统测量技术在高程数据获取及自动化快速方面的重要技术补充。激光遥感测量系统在地形测绘、环境检测、三维城市建模、地球科学、行星科学等诸多领域具有广泛的发展前景,是目前最先进的能实时获取地形表面三维空间信息和影像的遥感系统。目前,在各种提取地面点的算法中,算法结果与实际结果之间差别较大,违背了实际情况,PCL中强大的模块可以助力解决此问题。1.3.4 虚虚拟现实、人机交互、人机交互虚拟现实技术(VR)又称灵境技术,是以沉浸性、交互性和构想性为基本特征的计算机高级人机界面。它综合利用了计算机图形学、仿真技术、多媒体技术、人工智能技术、计算机网络技术、并行处理技术和多传感器技术,模拟人的视觉、听觉、触觉等感觉器官功能,使人能够沉浸在计算机生成的虚拟境界中,并能够通过语言、手势等自然的方式与之进行实时交互,创建了一种适人化的多维信息空间,具有广阔的应用前景。目前各种交互式体感应用的推出,让虚拟现实与人机交互发展非常迅速,以微软、华硕、三星等为例,目前诸多公司推出的RGBD解决方案,势必会让虚拟现实走出实验室,因为现在的RGBD设备已经开始大量推向市场,只是缺少其他应用的跟进,这正是在为虚拟现实和人机交互应用铸造生态链的底部,笔者认为这也正是PCL为何在此时才把自己与世人分享的重要原因所在,它将是基于RGBD设备的虚拟现实和人机交互应用生态链中最重要的一个环节。让我们抓住这一个节点,立足于交互式应用的一片小天地,但愿本书来的不是太迟。1.4 PCL在中国PCL虽然在国际上有如此多的组织和公司参与,由于发展如此迅速,目前(2012年4月)在Google中检索出中文相关的PCL探讨,有且只有一条,当然这也是笔者出书原因之一了。事实上,如图1-2所示,在全球范围内,唯独没有中国参与组织,这里希望广大读者可以为中国板块上添加一个小旗帜。当然,肯定有科研工作者在应用或者学习PCL了,笔者依托于中国农业大学农业部信息获取技术重点实验室,在与创始人Radu博士交流后,深感PCL在复杂的农业对象中有不可估量的作用,例如对动植物的重建测度、果蔬等分级检测等应用领域,决定把PCL作为基础研究平台来开展实际应用。同时用学习笔记撰写了本书把PCL与国人分享,相信在不久的将来,与2D信息处理库OpenCV一样,中国将是PCL最大的用户和贡献者基地。1.5 PCL的结构和内容PCL架构图如图1-3所示,对于3D点云处理来说,PCL完全是一个模块化的现代C+模板库。其基于以下第三方库:Boost、Eigen、FLANN、VTK、CUDA、OpenNI、Qhull,实现点云相关的获取、滤波、分割、配准、检索、特征提取、识别、追踪、曲面重建、可视化等。PCL利用OpenMP、GPU、CUDA等先进高性能计算技术,通过并行化提高程序实时性。K近邻搜索操作的构架是基于FLANN(Fast Library for Approximate Nearest Neighbors)所实现的,速度也是目前技术中最快的。PCL中的所有模块和算法都是通过Boost共享指针来传送数据,因而避免了多次复制系统中已存在图1-3 PCL架构图的数据的需要,从0.6版本开始,PCL就已经被移入到Windows、Mac OS和Linux系统,并且在Android系统也已经开始投入使用,这使得PCL的应用容易移植与多方发布。从算法的角度,PCL是指纳入了多种操作点云数据的三维处理算法,其中包括过滤、特征估计、表面重建、模型拟合和分割、定位搜索等。每一套算法都是通过基类进行划分的,试图把贯穿整个流水线处理技术的所有常见功能整合在一起,从而保持了整个算法实现过程中的紧凑和结构清晰,提高代码的重用性、简洁可读。在PCL中一个处理管道的基本接口程序如下:(1)创建处理对象:(例如过滤、特征估计、分割等)。(2)使用setInputCloud通过输入点云数据,处理模块。(3)设置算法相关参数。(4)调用计算得到输出。为了进一步简化和开发,PCL被分成一系列较小的代码库,使其模块化,以便能够单独编译使用提高可配置性,特别适用于嵌入式处理中:(1)libpcl filters:如采样、去除离群点、特征提取、拟合估计等数据实现过滤器。(2)libpcl features:实现多种三维特征,如曲面法线、曲率、边界点估计、矩不变量、主曲率,PFH和FPFH特征,旋转图像、积分图像,NARF描述子,RIFT,相对标准偏差,数据强度的筛选等。(3)libpcl I/O:实现数据的输入和输出操作,例如点云数据文件(PCD)的读/写。(4)libpcl segmentation:实现聚类提取,如通过采样一致性方法对一系列参数模型(如平面、柱面、球面、直线等)进行模型拟合点云分割提取,提取多边形棱镜内部点云等。(5)libpcl surface:实现表面重建技术,如网格重建、凸包重建、移动最小二乘法平滑等。(6)libpcl register:实现点云配准方法,如ICP等。(7)libpclkeypoints:实现不同的关键点的提取方法,这可以用来作为预处理步骤,决定在哪儿提取特征描述符。(8)libpcl range:实现支持不同点云数据集生成的范围图像。为了保证PCL中操作的正确性,上述提到的库中的方法和类包含了单位和回归测试。这套单元测试通常都是由专门的构建部门按需求编译和验证的。当某一部分测试失败时,这些特定部分的各自作者就会立即被告知。这彻底地保证了代码测试过程出现的任何变故,以及新功能或修改都不会破坏PCL中已经存在的代码。结语本章首先简单介绍了PCL是什么,接着引出了PCL的发展历史以及将来的发展前景,对PCL的应用领域进行了概括,最后对PCL目前的架构内容进行了简单的概括。读者对PCL有总体认识之后,继续阅读后续章节,每章节对不同的模块进行详细介绍及实例讲解,一步一步让读者感受PCL对行业应用研究生态链带来巨大改变的潜力。