猜你喜欢
点云库PCL从入门到精通

点云库PCL从入门到精通

书籍作者:郭浩 ISBN:9787111615521
书籍语言:简体中文 连载状态:全集
电子书格式:pdf,txt,epub,mobi,azw3 下载次数:8417
创建日期:2021-02-14 发布日期:2021-02-14
运行环境:PC/Windows/Linux/Mac/IOS/iPhone/iPad/Kindle/Android/安卓/平板
内容简介

点云库(Point Cloud Library, PCL)是在吸收了点云相关研究基础上建立起来的跨平台开源库,

可在Windows、 Linux、 Android、 Mac OS X,以及大部分嵌入式实时系统上运行,目前已经得

到了广泛应用。本书为应用点云库技术的指导图书,旨在帮助读者对其以快速、有效的方式上手

操作并实际应用,大限度地节省读者的入门与技术提升时间。书中首先介绍了三维点云处理的

相关理论知识,之后则重点从实际的点云处理功能模块出发,通过大量具体的实践案例介绍如何

使用该项技术解决实际问题。

本书可作为计算机图形学、机器人、遥感测量、虚拟现实、人机交互、CAD/CAM逆向工程等领域

的科研人员进行产品开发、科研项目、课题项目时的参考指南,也可作为大中专院校及培训班相

关专业师生的学习手册。


作者简介

郭浩:PCL(Point Cloud Learning)中国(www.pclcn.org)创始人之一。2008年开始致力于点云数据获取、智能化处理及相关应用的研发和教学工作,目前致力于PCL开源库在中国各个相关行业的传道、授业、解惑。在点云数据获取处理领域,公开发表EI/SCI论文十余篇及相关著作1本。

编辑推荐

?适应点云数据发展的需求

?智能化感知时代必备技术


?无人仓储/虚拟现实/增强现实

?遥感测量/地形勘测/电力巡检

?

?机器人/人机交互/无人驾驶

?逆向工程技术/计算机图形学



本书内容涉及典型点云获取设备、主流平台(ROS和Windows)、实用点云数据处理案例、一线项目等,并提供全书所有源代码,帮助读者所学即可所用


前言

为什么要写这本书

点云处理技术广泛应用在逆向工程、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)的科研和业界学者的

协同努力和辛苦劳动,以及此处未明确提及但对本书出版做出贡献的朋友。

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


目录

第1章概述

11PCL是什么

12点云处理技术与PCL的前世今生

13点云处理技术能给工程师们带来什么

131测绘领域

132无人驾驶领域

133机器人领域

134人机交互领域

135逆向工程与其他工业自动化领域

136BIM领域

14PCL的结构与核心内容

第2章PCL入门

21快速安装与源码编译安装

211Windows下配置安装PCL开发

环境

212ROS下配置搭建PCL开发环境

213用第三方预编译包从源码搭建

开发环境

214从源码搭建开发环境

22开发工程的建立与项目管理

221Windows下建立编译链接PCL

工程

222ROS下建立编译链接PCL工程

23PCL编码风格简介

231PCL编程规范

232如何编写新的PCL类

233PCL的点类型以及如何增加

自定义的点类型

234PCL中的异常处理机制

第3章输入输出(IO)

31IO涉及的设备及相关概念

311OpenNI及类Kinect设备

312以Project Tango为代表的便携式

消费级点云获取设备

313PCL目前支持的点云获取设备

314PCL中IO模块及类

32IO入门级实例解析

321PCD文件格式

322PCD文件IO操作

323两个点云中的字段或数据连接

324基于OpenNI接口的点云数据

获取

325PLY、LAS等常见数据格式与

PCD的转换

326利用Kinect2获取点云数据

33IO精通级实例解析

331ROS下进行点云数据实时获取

与可视化

332自选设备scanCONTROL与PCL

实时获取与可视化点云数据

333利用Tango进行点云数据获取

334基于Structure from Motion 的点云

数据获取

第4章kd tree与八叉树

41kd tree和八叉树的概念及

相关算法

411kd tree概念及相关算法

412PCL中kd tree模块及类

413八叉树概念及相关算法

414PCL中八叉树模块及类

42kd tree与八叉树入门级实例解析

421在PCL中如何实现快速邻域

搜索

422在PCL中如何实现点云压缩

423基于八叉树的空间划分及搜索

操作

424无序点云数据集的空间变化

检测

第5章可视化

51PCL中visualization模块及类

52可视化入门级实例解析

521简单点云可视化

522可视化深度图像

523PCLVisualizer可视化类

524PCLPlotter可视化特征直方图

53可视化精通级实例解析

531PCL结合Qt使用框架

532PCL结合MFC使用框架

533客户端浏览器上对点云进行

可视化


点云库PCL从入门到精通


目录


第6章点云滤波

61PCL中实现的滤波算法及相关概念

611PCL中的点云滤波方案

612双边滤波算法

613PCL中filters模块及类

62点云滤波入门级实例解析

621使用直通滤波器对点云进行滤波

处理

622使用VoxelGrid滤波器对点云进行

下采样

623使用StatisticalOutlierRemoval滤波

器移除离群点

624使用参数化模型投影点云

625从一个点云中提取一个子集

626使用ConditionalRemoval或Radius

OutlierRemoval移除离群点

627CropHull任意多边形内部点云

提取

63点云滤波精通级实例解析:IPhone X

手机外壳全尺寸检测

631项目需求概述

632利用滤波可以实现的功能

第7章深度图像

71RangeImage概念及相关算法

711深度图像简介

712PCL中RangeImage的相关类

72深度图像入门级实例解析

721如何从一个点云创建一个深度

图像

722如何从深度图像中提取边界

73深度图像精通级实例解析点云到

深度图的变换与曲面重建

第8章关键点

81关键点概念及相关算法

82关键点入门级实例解析

821如何从距离图像中提取NARF

关键点

822SIFT关键点提取

823Harris关键点提取

83关键点精通级实例解析:基于对应点

分类的对象识别

第9章采样一致性

91随机采样一致性相关概念及算法

92采样一致性入门级实例解析

93采样一致性精通级实例解析:两两点

云获取设备自动标定

931项目需求概述

932具体实现

第10章3D点云特征描述与提取

101特征描述与提取的概念及相关

算法

10113D形状内容描述子

1012旋转图像

1013PCL中特征描述与提取模块

及类

102点云特征描述与提取入门级实例

解析

1021PCL中描述三维特征相关基础

1022估计一个点云的表面法线

1023使用积分图进行法线估计

1024点特征直方图描述子

1025快速点特征直方图描述子

1026估计一点云的VFH特征

1027如何从一个深度图像中提取

NARF特征

1028特征描述算子算法基准化分析

1029RoPs特征

10210基于惯性矩与偏心率的

描述子

10211BoundaryEstimation进行边界

提取

103点云特征描述与提取精通级实例

解析

10313D对象识别的假设验证

1032隐式形状模型方法

1033点云数据视频流的刚性物体位姿

估计与跟踪定位软件

第11章点云配准

111PCL中实现的配准算法及相关

概念

1111一对点云配准

1112对应估计

1113对应关系去除

1114变换矩阵估算

1115迭代最近点算法

1116采样一致性初始对齐算法

1117PCL中Registration模块及类

112点云配准入门级实例解析

1121如何使用迭代最近点ICP

算法

1122如何逐步匹配多幅点云

1123如何使用正态分布变换进行

配准

1124交互式迭代最近点配准

1125刚性物体的位姿估计

113点云配准精通级实例解析

1131如何将扫描数据与模板对象进行

配准

1132基于VFH描述子聚类识别与

位姿估计

1133动态库封装DIY接口与测试

1134交互式多深度摄像头标定

软件

第12章点云分割

121点云分割概念及相关算法

1211聚类分割算法

1212基于随机采样一致性的分割

1213PCL中Segmentation模块及类

122点云分割入门级实例解析

1221在PCL中如何实现平面模型

分割

1222在PCL中如何实现圆柱体模型

分割

1223在PCL中如何实现欧式聚类

提取

1224基于区域生长的分割

1225基于颜色的区域生长分割

1226最小图割的分割

1227基于法线微分的分割

1228基于超体素的点云分割

1229渐进式形态学滤波地面分割

12210条件欧氏聚类点云分割

123点云分割精通级实例解析:运动

对象分割与配准算法实现

1231代码

1232各个关键功能步骤分析

1233运动分割与配准结果

第13章点云曲面重建

131surface模块中实现的算法及相关

概念

1311凸包算法

1312Ear Clipping三角化算法

1313贪婪投影三角化算法

1314移动立方体算法

1315泊松曲面重建算法

1316PCL中 surface模块及类

132点云曲面重建入门级实例解析

1321基于多项式平滑点云及法线估计

的曲面重建

1322在平面模型上构建凸(凹)

多边形

1323无序点云的快速三角化

1324基于B样条曲线的曲面重建

133点云曲面重建精通级实例解析:

平面点云的B样条曲线拟合

1331B样条曲线和B样条曲线拟合

概述

1332平面点云B样条曲线拟合详细

步骤

第14章电力线巡检

141电力线巡检概述

1411电力线巡检介绍

1412在电力线巡检领域做的工作

142电力线巡检应用实例解析

1421电力线点云获取

1422结果展示

1423总结

第15章文物古迹保护

151文物古迹保护概述

1511文物古迹保护介绍

1512在文物古迹保护领域所做

工作

152文物古迹保护应用实例解析:博物馆

文物三维数字化

1521应用概述

1522具体实施步骤

1523博物馆文物三维数字化结果

展示

1524三维数字化总结

第16章地形测量

161地形测绘概述

1611地形测量介绍

1612在地形测量领域所做工作

162地形测量应用实例解析:机载激光雷

达在山区地质灾害调查中的应用

1621应用概述

1622具体实施步骤

1623激光雷达获取地形数据结果

展示

1624激光雷达获取地形数据总结

第17章无人驾驶

171无人驾驶概述

1711无人驾驶介绍

1712在无人驾驶领域做的工作

172基于点云数据获取与处理技术的无人

驾驶公司列表

第18章逆向工程

181逆向工程概述

1811逆向工程介绍

1812在逆向工程领域所做工作

182逆向工程应用实例解析:汽车部件

逆向工程

1821汽车部件逆向工程概述

1822汽车部件逆向工程解决方案

1823汽车部件逆向工程结果展示

1824汽车部件逆向工程总结

第19章植物表型测量

191植物表型测量概述

1911植物表型测量介绍

1912在植物表型测量领域所做

工作

192植物表型测量应用实例解析

1921玉米果穗点云分割

1922玉米叶片点云与茎秆点云

分离

1923激光雷达林业资源调查

第20章家畜表型测量

201家畜表型测量概述

2011家畜表型测量介绍

2012在家畜表型测量领域所做

工作

202基于点云数据的家畜表型测量应用

实例解析

2021家畜多视角体表点云获取

2022基于点云数据的家畜自动化体尺

测点提取及交互式体尺测量

附录:国内外点云数据处理商业软件

集合

参考文献