第1章 概述 1
1.1 PCL是什么 1
1.2点云处理技术与PCL的前世今生 1
1.3点云处理技术能给工程师们带来什么 2
1.3.1测绘领域 2
1.3.2无人驾驶领域 2
1.3.3机器人领域 3
1.3.4人机交互领域 3
1.3.5逆向工程与其他工业自动化领域 3
1.3.6 BIM领域 4
1.4 PCL的结构与核心内容 5
第2章 PCL入门 7
2.1快速安装与源码编译安装 7
2.1.1 Windows下配置安装PCL开发环境 7
2.1.2 ROS下配置搭建PCL开发环境 14
2.1.3用第三方预编译包从源码搭建开发环境 19
2.1.4从源码搭建开发环境 19
2.2开发工程的建立与项目管理 19
2.2.1 Windows下建立编译链接PCL工程 19
2.2.2 ROS下建立编译链接PCL工程 19
2.3 PCL编码风格简介 27
2.3.1 PCL编程规范 27
2.3.2如何编写新的PCL类 32
2.3.3 PCL的点类型以及如何增加自定义的点类型 42
2.3.4 PCL中的异常处理机制 55
第3章 输入输出(IO) 58
3.1IO涉及的设备及相关概念 58
3.1.1 OpenNI及类Kinect设备 58
3.1.2以Project Tango为代表的便携式消费级点云获取设备 60
3.1.3 PCL目前支持的点云获取设备 60
3.1.4 PCL中IO模块及类 61
3.2 IO入门级实例解析 61
3.2.1 PCD文件格式 61
3.2.2 PCD文件IO操作 64
3.2.3两个点云中的字段或数据连接 67
3.2.4基于OpenNI接口的点云数据获取 70
3.2.5 PLY、 LAS等常见数据格式与PCD的转换 74
3.2.6利用Kinect2获取点云数据 78
3.3 IO精通级实例解析 81
3.3.1 ROS下进行点云数据实时获取与可视化 81
3.3.2自选设备scanCONTROL与PCL实时获取与可视化点云数据 85
3.3.3利用Tango进行点云数据获取 88
3.3.4基于Structure from Motion的点云数据获取 93
第4章 k-d tree与八叉树 100
4.1 k-d tree和八叉树的概念及相关算法 100
4.1.1 k-d tree概念及相关算法 100
4.1.2 PCL中k-d tree模块及类 101
4.1.3八叉树概念及相关算法 101
4.1.4 PCL中八叉树模块及类 102
4.2 k-d tree与八叉树入门级实例解析 102
4.2.1在PCL中如何实现快速邻域搜索 102
4.2.2在PCL中如何实现点云压缩 104
4.2.3基于八叉树的空间划分及搜索操作 108
4.2.4无序点云数据集的空间变化检测 111
第5章 可视化 114
5.1 PCL中visualization模块及类 114
5.2可视化入门级实例解析 114
5.2.1简单点云可视化 114
5.2.2可视化深度图像 117
5.2.3 PCLVisualizer可视化类 120
5.2.4 PCLPlotter可视化特征直方图 129
5.3可视化精通级实例解析 133
5.3.1PCL结合Qt使用框架 133
5.3.2 PCL结合MFC使用框架 139
5.3.3客户端浏览器上对点云进行可视化 147
第6章 点云滤波 151
6.1 PCL中实现的滤波算法及相关概念 151
6.1.1 PCL中的点云滤波方案 151
6.1.2双边滤波算法 152
6.1.3 PCL中filters模块及类 152
6.2点云滤波入门级实例解析 152
6.2.1使用直通滤波器对点云进行滤波处理 152
6.2.2使用VoxelGrid滤波器对点云进行下采样 154
6.2.3使用Statistical OutlierRemoval滤波器移除离群点 155
6.2.4使用参数化模型投影点云 157
6.2.5从一个点云中提取一个子集 159
6.2.6使用ConditionalRemoval或Radius-OutlierRemoval移除离群点 161
6.2.7 CropHull任意多边形内部点云提取 164
6.3点云滤波精通级实例解析:IPhone X手机外壳全尺寸检测 166
6.3.1项目需求概述 166
6.3.2利用滤波可以实现的功能 166
第7章 深度图像 173
7.1 RangeImage概念及相关算法 173
7.1.1深度图像简介 173
7.1.2 PCL中RangeImage的相关类 174
7.2深度图像入门级实例解析 175
7.2.1如何从一个点云创建一个深度图像 175
7.2.2如何从深度图像中提取边界 177
7.3深度图像精通级实例解析点云到深度图的变换与曲面重建 179
第8章 关键点 182
8.1关键点概念及相关算法 182
8.2关键点入门级实例解析 183
8.2.1如何从距离图像中提取NARF关键点 183
8.2.2 SIFT关键点提取 185
8.2.3 Harris关键点提取 187
8.3关键点精通级实例解析:基于对应点分类的对象识别 188
第9章 采样一致性 194
9.1随机采样一致性相关概念及算法 194
9.2采样一致性入门级实例解析 197
9.3采样一致性精通级实例解析:两两点云获取设备自动标定 201
9.3.1项目需求概述 201
9.3.2具体实现 201
第10章 3D点云特征描述与提取 204
10.1特征描述与提取的概念及相关算法 204
10.1.13D形状内容描述子 204
10.1.2旋转图像 205
10.1.3 PCL中特征描述与提取模块及类 205
10.2点云特征描述与提取入门级实例解析 205
10.2.1 PCL中描述三维特征相关基础 205
10.2.2估计一个点云的表面法线 208
10.2.3使用积分图进行法线估计 212
10.2.4点特征直方图描述子 213
10.2.5快速点特征直方图描述子 216
10.2.6估计一点云的VFH特征 219
10.2.7如何从一个深度图像中提取NARF特征 221
10.2.8特征描述算子算法基准化分析 224
10.2.9 RoPs特征 228
10.2.10基于惯性矩与偏心率的描述子 234
10.2.11 BoundaryEstimation进行边界提取 235
10.3点云特征描述与提取精通级实例解析 238
10.3.1 3D对象识别的假设验证 238
10.3.2隐式形状模型方法 241
10.3.3点云数据视频流的刚性物体位姿估计与跟踪定位软件 245
第11章 点云配准 250
11.1 PCL中实现的配准算法及相关概念 250
11.1.1一对点云配准 250
11.1.2对应估计 251
11.1.3对应关系去除 252
11.1.4变换矩阵估算 252
11.1.5迭代最近点算法 252
11.1.6采样一致性初始对齐算法 253
11.1.7 PCL中Registration模块及类 253
11.2点云配准入门级实例解析 253
11.2.1如何使用迭代最近点ICP算法 253
11.2.2如何逐步匹配多幅点云 256
11.2.3如何使用正态分布变换进行配准 263
11.2.4交互式迭代最近点配准 268
11.2.5刚性物体的位姿估计 273
11.3点云配准精通级实例解析 276
11.3.1如何将扫描数据与模板对象进行配准 276
11.3.2基于VFH描述子聚类识别与位姿估计 284
11.3.3动态库封装DIY接口与测试 291
11.3.4交互式多深度摄像头标定软件 294
第12章 点云分割 300
12.1点云分割概念及相关算法 300
12.1.1聚类分割算法 300
12.1.2基于随机采样一致性的分割 300
12.1.3 PCL中Segmentation模块及类 301
12.2点云分割入门级实例解析 301
12.2.1在PCL中如何实现平面模型分割 301
12.2.2在PCL中如何实现圆柱体模型分割 304
12.2.3在PCL中如何实现欧式聚类提取 308
12.2.4基于区域生长的分割 311
12.2.5基于颜色的区域生长分割 313
12.2.6最小图割的分割 316
12.2.7基于法线微分的分割 319
12.2.8基于超体素的点云分割 324
12.2.9渐进式形态学滤波地面分割 331
12.2.10条件欧氏聚类点云分割 333
12.3点云分割精通级实例解析:运动对象分割与配准算法实现 336
12.3.1代码 336
12.3.2各个关键功能步骤分析 336
12.3.3运动分割与配准结果 341
第13章 点云曲面重建 342
13.1 surface模块中实现的算法及相关概念 342
13.1.1凸包算法 342
13.1.2 Ear Clipping三角化算法 342
13.1.3贪婪投影三角化算法 343
13.1.4移动立方体算法 343
13.1.5泊松曲面重建算法 344
13.1.6 PCL中surface模块及类 344
13.2点云曲面重建入门级实例解析 344
13.2.1基于多项式平滑点云及法线估计的曲面重建 344
13.2.2在平面模型上构建凸(凹)多边形 347
13.2.3无序点云的快速三角化 350
13.2.4基于B样条曲线的曲面重建 353
13.3点云曲面重建精通级实例解析:平面点云的B样条曲线拟合 358
13.3.1 B样条曲线和B样条曲线拟合概述 358
13.3.2平面点云B样条曲线拟合详细步骤 359
第14章 电力线巡检 364
14.1电力线巡检概述 364
14.1.1电力线巡检介绍 364
14.1.2在电力线巡检领域做的工作 364
14.2电力线巡检应用实例解析 366
14.2.1电力线点云获取 366
14.2.2结果展示 368
14.2.3总结 368
第15章 文物古迹保护 369
15.1文物古迹保护概述 369
15.1.1文物古迹保护介绍 369
15.1.2在文物古迹保护领域所做工作 369
15.2文物古迹保护应用实例解析:博物馆文物三维数字化 370
15.2.1应用概述 370
15.2.2具体实施步骤 371
15.2.3博物馆文物三维数字化结果展示 372
15.2.4三维数字化总结 374
第16章 地形测量 375
16.1地形测绘概述 375
16.1.1地形测量介绍 375
16.1.2在地形测量领域所做工作 375
16.2地形测量应用实例解析:机载激光雷达在山区地质灾害调查中的应用 376
16.2.1应用概述 376
16.2.2具体实施步骤 376
16.2.3激光雷达获取地形数据结果展示 378
16.2.4激光雷达获取地形数据总结 380
第17章 无人驾驶 381
17.1无人驾驶概述 381
17.1.1无人驾驶介绍 381
17.1.2在无人驾驶领域做的工作 381
17.2基于点云数据获取与处理技术的无人驾驶公司列表 384
第18章 逆向工程 385
18.1逆向工程概述 385
18.1.1逆向工程介绍 385
18.1.2在逆向工程领域所做工作 385
18.2逆向工程应用实例解析:汽车部件逆向工程 386
18.2.1汽车部件逆向工程概述 386
18.2.2汽车部件逆向工程解决方案 387
18.2.3汽车部件逆向工程结果展示 388
18.2.4汽车部件逆向工程总结 388
第19章 植物表型测量 389
19.1植物表型测量概述 389
19.1.1植物表型测量介绍 389
19.1.2在植物表型测量领域所做工作 389
19.2植物表型测量应用实例解析 391
19.2.1玉米果穗点云分割 391
19.2.2玉米叶片点云与茎秆点云分离 394
19.2.3激光雷达林业资源调查 398
第20章 家畜表型测量 403
20.1家畜表型测量概述 403
20.1.1家畜表型测量介绍 403
20.1.2在家畜表型测量领域所做工作 403
20.2基于点云数据的家畜表型测量应用实例解析 405
20.2.1家畜多视角体表点云获取 405
20.2.2基于点云数据的家畜自动化体尺测点提取及交互式体尺测量 409
附录:国内外点云数据处理商业软件集合 412
参考文献 418