第1章 概述 1
1.1什么是PCL 1
1.2 PCL的发展与创景 1
1.3 PCL的潜在应用领域 2
1.3.1机器人领域 2
1.3.2 CAD/CAM、逆向工程 3
1.3.3激光遥感测量 3
1.3.4虚拟现实、人机交互 3
1.4 PCL在中国 4
1.5 PCL的结构和内容 4
第2章PCL入门 7
2.1 Windows下配置安装PCL开发环境 7
2.1.1从预编译包搭建开发环境 7
2.1.2用第三方预编译包从源码搭建开发环境 16
2.1.3从源码搭建开发环境 23
2.2 Linux下配置搭建PCL开发环境 28
2.2.1预编译包搭建 29
2.2.2从源代码安装 30
2.3其他操作系统 31
2.4建立自己的PCL应用程序 31
2.4.1先决条件 31
2.4.2工程设置 31
2.4.3编译和运行工程 33
第3章PCL基础 36
3.1 PCL C+++编程规范 36
3.1.1 PCL推荐的命名规范 36
3.1.2 PCL推荐的缩进与格式 38
3.1.3设计结构 41
3.2如何编写新的PCL类 42
3.2.1优势:为什么加入PCL开源开发模式 42
3.2.2建立文件结构 43
3.2.3填写类的内容 45
3.2.4许可 52
3.2.5合理命名 53
3.2.6代码注释 53
3.2.7测试新建的类 54
3.3 PCL已有点类型介绍和增加自定义的点类型 54
3.3.1为什么用PointT类型 54
3.3.2 PCL中有哪些可用的PointT类型 55
3.3.3如何在模板类中使用这些point类型 67
3.3.4如何增加新的PointT类型 69
3.4 PCL中异常处理机制 70
3.4.1开发者如何增加一个新的异常类 71
3.4.2如何使用自定义的异常 71
3.4.3异常的处理 72
第4章 输入/输出(I/O) 74
4.1 I/O涉及的设备及相关概念简介 74
4.1.1 OpenNI开源框架 74
4.1.2 OpenNI兼容设备 75
4.2 PCL中I/O模块及类介绍 76
4.2.1 I/O模块中类以及全局函数说明 76
4.2.2 I/O模块其他关键成员说明 85
4.3应用实例解析 87
4.3.1 PCD(点云数据)文件格式 87
4.3.2从PCD文件中读取点云数据 91
4.3.3向PCD文件写入点云数据 93
4.3.4连接两个点云中的字段或数据形成新点云 95
4.3.5 PCL中的OpenNI点云获取框架 98
第5章kd-tree 104
5.1 kd-tree概念简介 104
5.2 PCL中kd-tree模块及类介绍 105
5.2.1 kd-tree模块中类说明以及全局函数说明 105
5.2.2 kd-tree模块其他关键成员说明 107
5.3应用实例解析 108
第6章 八叉树 112
6.1 octree概述及相关算法简介 112
6.2 PCL中octree模块及类介绍 113
6.3应用实例解析 121
6.3.1在PCL中如何实现点云压缩 121
6.3.2基于octree的空间划分及搜索操作 127
6.3.3无序点云数据集的空间变化检测 130
第7章 可视化 133
7.1可视化相关概念及算法简介 133
7.2 PCL中visualization模块及类介绍 133
7.2.1 pcl_visualization模块中类说明 133
7.2.2 pcl_visualization模块其他关键成员说明 151
7.3应用实例解析 152
7.3.1点云视窗类CloudViewer 152
7.3.2怎样可视化深度图像 155
7.3.3 PCLVisualizer可视化类 158
第8章 滤波 171
8.1 PCL中滤波模块相关概念及算法介绍 171
8.2 PCL中filters模块及类介绍 172
8.2.1 PCL中filter模块相关类的介绍 172
8.2.2滤波模块中其他关键函数 184
8.3应用实例解析 185
8.3.1在PCL中使用直通滤波器对点云进行滤波处理 185
8.3.2使用VoxelGrid滤波器对点云进行下采样 187
8.3.3使用StatisticalOutlierRemoval滤波器移除离群点 189
8.3.4使用参数化模型投影点云 191
8.3.5从一个点云中提取索引 194
8.3.6使用ConditionalRemoval或RadiusOutlierRemoval移除离群点 196
第9章 深度图像 200
9.1模块RangeImage相关概念及算法简介 200
9.2 PCL中模块RangeImage相关类的介绍 201
9.3应用实例解析 210
9.3.1如何从点云创建深度图像 210
9.3.2如何从深度图像中提取边界 213
第10章 关键点 216
10.1关键点概念及相关算法简介 216
10.2 PCL中keypoints模块及类介绍 217
10.3应用实例解析 222
第11章 采样一致性算法 226
11.1随机采样一致性相关概念及算法简介 226
11.1.1 RANSAC随机采样一致性算法简介 226
11.1.2 LMedS最小中值方差估计算法 227
11.1.3 PCL中Sample_consensus模块支持的几何模型 228
11.2 PCL中Sample_ consensus模块及类介绍 229
11.2.1 Sample_consensus模块中类介绍 229
11.2.2 pcl_sample_consensus模块其他关键成员说明 248
11.3应用实例解析 249
第12章 点云特征描述与提取 254
12.1特征描述与提取相关概念及算法简介 254
12.2 PCL中特征描述与提取模块及类介绍 255
12.2.1 pcl_features模块中类介绍 255
12.2.2 features模块其他关键成员说明 270
12.3应用实例解析 271
12.3.1 PCL中描述三维特征相关基础 271
12.3.2估计一个点云的表面法线 276
12.3.3使用积分图进行法线估计 280
12.3.4点特征直方图(PFH)描述子 282
12.3.5快速点特征直方图(FPFH)描述子 285
12.3.6估计一点云的VFH特征 288
12.3.7如何从一个深度图像(range image)中提取NARF特征 292
12.3.8特征描述算子算法基准化分析 294
第13章 点云配准 300
13.1 PCL中实现的配准算法以及相关概念 300
13.2 PCL中Registration模块及类介绍 303
13.2.1 Registration模块中类的介绍 303
13.2.2配准模块中相关结构体介绍 319
13.3应用实例解析 320
13.3.1如何使用迭代最近点算法 320
13.3.2如何逐步匹配多幅点云 323
13.3.3如何使用正态分布变换(Normal Distributions Transform)进行配准 332
第14章 点云分割 338
14.1点云分割概念及相关算法简介 338
14.1.1聚类分割算法 338
14.1.2基于随机采样一致性(RANSAC)的分割 338
14.2 PCL中Segmentation模块及类介绍 339
14.2.1 Segmentation模块中类的介绍 339
14.2.2 Segmentation模块的其他全局关键函数 346
14.3应用实例解析 348
14.3.1在PCL中如何实现平面模型分割 348
14.3.2在PCL中如何实现圆柱体模型分割 350
14.3.3在PCL中如何实现欧氏聚类提取 355
第15章 点云曲面重建 359
15.1 surface模块中实现的算法及相关概念简介 359
15.2 PCL中surface模块及类介绍 362
15.2.1 Surface模块中类介绍 362
15.2.2 surface模块中其他关键成员说明 372
15.3应用实例解析 372
15.3.1基于多项式拟合的法线估计、点云平滑和数据重采样 372
15.3.2在平面模型上提取凸(凹)多边形 375
15.3.3无序点云的快速三角化 379
第16章 综合应用 384
16.1对齐对象模板到点云 384
16.2基于VFH描述子的聚类识别与6自由度位姿估计 393