1.1 PCL是什么?
Point Cloud Library 跨平台开源C++编程库,实现了大量点云相关的通用算法和高效数据结构,设计点云获取、滤波、配准、分割、检索、特征提取、识别、追踪、曲面重建、可视化等,支持多种操作平台。
1.2 应用领域
测绘领域、无人驾驶领域、机器人领域、人机交互领域。
1.3 PCL中所有模块和算法都是通过Boost共享指针来传送数据的,避免了多次复制已存在数据的需要。
PCL基于Boost、Eigen、FLANN、VTK、CUDA、OpenNI、Qhull等第三方库。
1.4 PCL中一个处理管道的基本接口程序如下:
- 创建处理对象(例如过滤、特征估计、分割等)。
- 使用 setInputCloud 通过输入点云数据,处理模块。
- 设置算法相关参数。
- 调用计算。
1.5 为了进一步简化和开发,PCL被分成一些列较小的代码库,模块化,可以单独编译使用提高可配置性。常用的代码库如下:
- libpcl filters : 如采样、去除离群点、特征提取、拟合估计等数据实现过滤器。
- libpcl features : 实现多种三维特征,如曲面法线、曲率、边界点估计、矩不变量、主曲率, PFH 和 FPHF 特征,旋转图像、积分图像、NARF描述子、RIFT,相对标准偏差、数据强度的筛选等等。
- libpcl I/O : 实现数据的输入和输出操作,例如点云数据文件(PCD)的读写。
- libpcl segmentation :实现聚类提取,如通过采样一致性方法对一系列参数模型(如平面、煮面、球面、直线等)进行模型拟合点云分割提取,提取多边形棱镜内部点云等。
- libpcl surface :实现表面重建技术,如网格重建、凸包重建、移动最小二乘法平滑等。
- libpcl register :实现点云配准方法,如ICP等。
- libpcl keypoints : 实现不同的关键点提取方法,这个以用来作为预处理步骤,决定在哪儿提取特征描述符。
- libpcl range : 实现支持不通电晕数据集生成的范围图像。