点云库PCL从入门到精通
上QQ阅读APP看书,第一时间看更新

前言

为什么要写这本书

点云处理技术广泛应用在逆向工程、CAD/CAM、机器人学、激光遥感测量、机器视觉、虚拟现实、人机交互、无人驾驶等诸多领域。由于其涉及计算机学、图形学、人工智能、模式识别、几何计算、传感器等诸多学科,并且一直以来由于点云获取手段的昂贵,严重阻碍其在各个行业上的广泛应用,也造成国内点云处理的理论性和工具性书籍匮乏。在2010年,随着消费级RGBD(低成本点云获取)设备的大量上市,以微软的Kinect为前导,目前已有华硕、三星等多家公司开始量产此类产品,正在形成基于RGBD的新一代机器视觉生态链,包括Google的Project Tango和Intel的Realsense 3D相关技术产品,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, University of Freiburg, Intel Reseach Seattle, LAAS/CNRS, MIT,University of Osnabr¨uck, Stanford University, University of Tokyo, TUM, Vienna University of Technolog, and Washington University in St.Louis等知名高校和组织。资助PCL的组织和公司包括全球的Willow Garage, NVidia, Google, Toyota, Trimble, Urban Robotics,Honda Research Institute等跨国软硬件公司,这一切表明PCL强大的生命力和吸引力。同时我们团队已经把PCL作为开发出实际应用的基础平台和教学技术平台,用于跨平台支持嵌入式设备的3D信息获取与处理的基础库之一。目前PCL还在快速成长阶段,国内由本书团队早期整理的相关资料已经无法适应当前需要,鉴于此,经过团队讨论,把我们学习、授课课件以及开发应用期间整理的资料与国内读者一起分享,加快PCL在其他各行业的应用,推动3D信息快速获取与处理的发展。

本书目标

每一个最新版本的PCL都会被下载超过百万次,这个数字还不包括下载源码开展自行编译的用户。PCL在全球范围内的使用者在迅速膨胀,并且每天都有更多的用户开始学习或者转型使用PCL。在国内,早期对PCL进行应用开发的团队还不多,而随着国外众多知名组织和公司的加入和赞助,和OpenCV最初的发展一样,相信国内的用户数量也会增长很快。

为此,本书希望能提供一个从入门到精通的学习过程,无论是初学3D点云处理的爱好者,还是行业从业人员,希望都能从本书获益,最大限度地节省您的入门与技术提升时间,作为主编,我相信我们团队出书的付出与努力,所节省的国内所有学习者的时间总和就是我们的社会贡献,最终快速提升你的技术能力。

注意:由于本书目标是学习手册,注重“理工”中的“工”,所以对理论部分的“理”进行了精简,力求帮助广大读者所学即可所用。

读者对象

这里我们根据软件需求划分出一些需要使用PCL的用户类型,这些用户都是本书真正的读者群。

机器人研究或应用开发者

机器视觉的研究或应用开发者

人机交互研究或应用开发者

交互式体感游戏开发者

虚拟现实研究或应用开发者

CAD/CAM、逆向工程和3D打印工作者

工业自动化测量、检测领域的研究或应用开发者

激光雷达遥感的研究或应用开发者

相关专业的研究生和本科生

三维数据处理技术教学团队

3D技术的发烧友

如何阅读本书

本书分为如下三大部分。

第一部分为基础篇从第1章到第3章,简单介绍PCL的相关背景资料和基本使用方式,帮助读者了解一些基础背景知识,感受自己的研究应用领域在PCL基础上有哪些应用前景,学习如何快速搭建项目开发环境(Windows、Linux、ROS等平台)并熟悉PCL的使用方法以及编程规范,为读者使用PCL做好前期准备工作。

第二部分为模块篇从第4章到第13章,着重讲解PCL各个模块中涉及的3D点云处理的必要概念、模块API、入门级实例和精通级实例。每章结构都是,先简单介绍本章涉及的相关概念,再重点介绍一些模块相关的类和函数,最后分析入门级的模块应用实例和精通级的实例,让读者不需要太多点云处理基础,也能轻松掌握PCL各个功能模块。第二部分涵盖点云获取、滤波、分割、配准、检索、特征提取、识别、追踪、曲面重建、可视化等全部已基本定型的模块。

第三部分是结合点云数据处理技术在不同行业的应用,与相关科研单位或公司合作撰写的行业应用实例,为读者在学好技术后,拓展下行业应用思路和动手能力,从而熟悉各个行业的相关典型应用。

PCL版本

PCL的发布更新以1.5X的小版本号来表示,本书是基于PCL1.80版本。PCL正在不断开发和完善中,但基本架构和设计思路基本确定,相信读者对本书介绍内容了解之后,对其他版本就轻车熟路了。请参照网站地址——http://docs.pointclouds.org/trunk/modules.html。虽然本书中参考所用的API文档,仍然在不断更新类、函数,但模块基本确定,不会对PCL的理解产生困难。

源代码

本书的源代码、工程文件及相关实例的整理来自于PCL官方网站,但笔者针对PCL官方网站所提供的例子不足之处,进行了大量的修改和拓展,都以BSD(Berkeley Software Distribution)许可协议或者CCA(Creative Commons Attribution)3.0的形式发布,读者可以自由使用和分享,如果需要应用于商业领域,请注明版权所有者。如果你行使本许可授予的使用源代码的权利,就表明你接受并同意遵守本许可的条款,对其使用不得超越本许可授权的范围。我的理解是:PCL相关的内容,是可以免费进行商业和学术使用的,最重要的是需要致谢作者和相关贡献者。

勘误和支持

由于作者的水平有限,编写的时间也很仓促,不妥之处在所难免,恳请读者批评指正。如果您有更多的宝贵意见,也欢迎发送邮件至我们团队的邮箱guohaolys@cau.edu.cn,很期待能够听到读者的真挚反馈,同时也可以在本书的赞助商PCLCN(www.pclcn.org)的论坛上发布相关问题和意见。

关于电子版

书中有很多程序运行结果演示图,为了便于大家既能以便宜的价格买到本书,又能看到书中的原始图片,我们将于PCLCN(Point Cloud Learning in China)的官方网站(www.pclcn.org)推出本书的部分电子配图,敬请期待。

致谢

我首先要感谢PCL创始人Radu的允许和鼓励,才有本书的面世,同时要感谢Radu以及PCL的众多开发人员,是他们的创新精神和辛勤努力才有这样一个优异的3D信息获取和处理的基础平台供大家分享。

感谢笔者团队参与整理工作的伙伴:华明睿、苏杨、陈子睿、牛全弟、戴开璇、唐诗叶、田孟潇、马羽昊、谌罗超。同时感谢国家自然科学基金项目《基于非刚性点云数据的家畜(奶牛)体尺测量关键技术研究》(41601491)对笔者团队的支持。

感谢本书的编者们以及来自PCLCN(Point Cloud Learning in China)社区(www.pclcn.org)的科研和业界学者的协同努力和辛苦劳动,以及此处未明确提及但对本书出版做出贡献的朋友。

最后感谢我的家人,特别是我的母亲和妻子,在我撰书期间对我刚出生女儿的照顾。

郭 浩