为什么要写这本书
点云处理技术广泛应用在逆向工程、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的发布更新以15X的小版本号来表示,本书是基于PCL180版本。PCL正在不断开发和完善中,但基本架构和
设计思路基本确定,相信读者对本书介绍内容了解之后,对其他版本就轻车熟路了。请参照网站地址——http:
//docspointcloudsorg/trunk/moduleshtml。虽然本书中参考所用的API文档,仍然在不断更新类、函数,
但模块基本确定,不会对PCL的理解产生困难。
源代码
本书的源代码、工程文件及相关实例的整理来自于PCL官方网站,但笔者针对PCL官方网站所提供的例子不足之处,
进行了大量的修改和拓展,都以BSD(Berkeley Software Distribution)许可协议或者CCA(Creative Commons
Attribution)30的形式发布,读者可以自由使用和分享,如果需要应用于商业领域,请注明版权所有者。如果
你行使本许可授予的使用源代码的权利,就表明你接受并同意遵守本许可的条款,对其使用不得超越本许可授权的
范围。我的理解是:PCL相关的内容,是可以免费进行商业和学术使用的,最重要的是需要致谢作者和相关贡献者。
勘误和支持
由于作者的水平有限,编写的时间也很仓促,不妥之处在所难免,恳请读者批评指正。如果您有更多的宝贵意见,
也欢迎发送邮件至我们团队的邮箱guohaolys@caueducn,很期待能够听到读者的真挚反馈,同时也可以在本书
的赞助商PCLCN(wwwpclcnorg)的论坛上发布相关问题和意见。
关于电子版
书中有很多程序运行结果演示图,为了便于大家既能以便宜的价格买到本书,又能看到书中的原始图片,我们将于
PCLCN(Point Cloud Learning in China)的官方网站(wwwpclcnorg)推出本书的部分电子配图,敬请期待。
致谢
我首先要感谢PCL创始人Radu的允许和鼓励,才有本书的面世,同时要感谢Radu以及PCL的众多开发人员,是他们的
创新精神和辛勤努力才有这样一个优异的3D信息获取和处理的基础平台供大家分享。
感谢笔者团队参与整理工作的伙伴:华明睿、苏杨、陈子睿、牛全弟、戴开璇、唐诗叶、田孟潇、马羽昊、谌罗超。
同时感谢国家自然科学基金项目《基于非刚性点云数据的家畜(奶牛)体尺测量关键技术研究》(41601491)对笔者
团队的支持。
感谢本书的编者们以及来自PCLCN(Point Cloud Learning in China)社区(wwwpclcnorg)的科研和业界学者的
协同努力和辛苦劳动,以及此处未明确提及但对本书出版做出贡献的朋友。
最后感谢我的家人,特别是我的母亲和妻子,在我撰书期间对我刚出生女儿的照顾。