1、什么是PCL?
PCL(Point Cloud Library)是在吸收了前人点云相关研究基础上建立起来的大型跨平台开源c++编程库,它实现了大量点云相关的通用算法和高效数据结构,涉及点云获取、滤波、分割、配准、检索、特征提取、识别、追踪,曲面重建、可视化等,支持多种OS平台,包括Windows、Linux、Android、Mac OS X、部分嵌入式实时系统上运行。OPencv是2D信息获取与处理的结晶,而PCL则是3D信息获取与处理的结晶,它以BSD授权方式,可免费商用和学术。
2、PCL的潜在应用领域
1)机器人领域
PCL将会成为机器人应用领域的一把“瑞士军刀”。
2)CAD/CAM、逆向工程
三维点云数据的处理是逆向工程中比较重要的一环,PCL中间所有的模块正是为此而生的。
3)激光遥感测量
它是目前最先进的能实时获取地形表面三维空间信息和影像的遥感系统,但是在各种提取地面点的算法中,算法结果与实际结果之间差别较大,而PCL中强大的模块可以助力解决此问题。
4)虚拟现实、人机交互
虚拟现实技术(VR)又称灵境技术,是以沉浸性、交互性和构想性为基本特征的计算机高级人机界面。PCL将是基于RGBD设备的虚拟现实和人机交互应用生态链中最重要的一个环节。
3、PCL的结构和内容
PCL的架构图如下
对于3D点云处理来说,PCL完全是一个模块化的现代C++模板库。其基于以下第三方库:Boost、Eigen、FLANN、VTK、CUDA、OpenNI、QHull,实现点云相关的获取、滤波、分割、配准、检索、特征提取、识别、追踪、曲面重建、可视化等。
PCL利用OpenMP、GPU、CUDA等先进高性能计算基数,通过并行化提高程序实时性。K近邻搜索操作的架构是基于FLANN(Fast Library for Approximate Nearest Neighbors)所实现的,速度也是目前技术中最快的。PCL中的所有模块和算法都是通过Boost共享指针来传递数据,因而避免了多次复制系统中已存在的数据的需要。
从算法角度,PCL是指纳入了多种操作点云数据的三维处理算法,其中包括过滤、特征估计、表面重建、模型拟合和分割、定位搜索等。每一套算法都是通过基类进行划分的,试图把贯穿整个流水线处理技术的所有常见功能整合在一起,从而保证算法实现过程中的紧凑和结构清晰,提高代码的重用性、简洁可读。
在PCL中一个处理管道的基本接口程序如下:
1)创建处理对象(例如过滤、特征估计、分割等);
2)使用setInputCloud通过输入点云数据,处理模块;
3)设置算法相关参数;
4)调用计算(货过滤、分割等)得到输出。