pcl 简介
PCL(Point Cloud Library)是在吸收了前人点云相关研究基础上
建立起来的大型跨平台开源C++编程库,
它实现了大量点云相关的通用算法和高效数据结构,
涉及到
点云获取、
滤波、
分割、
配准、
检索、
特征提取、
识别、
追踪、
曲面重建、
可视化等。
支持多种操作系统平台,可在Windows、Linux、Android、Mac OS X、部分嵌入式实时系统上运行。
如果说OpenCV是2D信息获取与处理的结晶,
那么PCL就在3D信息获取与处理上具有同等地位,PCL是BSD授权方式,
可以免费进行商业和学术应用。
PCL的发展与创景
PCL起初是ROS(Robot Operating System)下由来自于
慕尼黑大学(TUM - Technische Universität München)
和斯坦福大学(Stanford University)Radu博士等人维护和开发的开源项目,
主要应用于机器人研究应用领域,
随着各个算法模块的积累,于2011年独立出来,
正式与全球3D信息获取、处理的同行一起,组建了强大的开发维护团队,
以多所知名大学、研究所和相关硬件、软件公司为主,可参考图1。
PCL在机器人领域中的应用
移动机器人对其工作环境的有效感知、辨识与认知,
是其进行自主行为优化并可靠完成所承担任务的前提和基础。
如何实现场景中物体的 有效分类 与 识别是移动机器人场景认知的核心问题,
目前基于 视觉图像处理技术 来进行场景的认知是该领域的重要方法。
但移动机器人在线获取的视觉图像质量受光线变化影响较大,
特别是在光线较暗的场景更难以应用,随着RGBD获取设备的大量推广,在机器人领域势必掀起一股深度信息
结合2D信息的应用研究热潮,深度信息的引入能够使机器人更好地对环境进行认知、辨识,
与图像信息在机器人领域的应用一样,需要强大智能软件算法支撑,PCL就为此而生,
最重要的是PCL本身就是为机器人而发起的开源项目,PCL中不仅提供了对现有的RGBD信息的获取设备的支持,
还提供了高效的 分割、特征提取、识别、追踪等最新的算法,
最重要的是它可以移植到android、ubuntu等主流Linux平台上,
PCL无疑将会成为机器人应用领域一把瑞士军刀。
PCL在 虚拟现实、人机交互中的应用
虚拟现实技术(简称VR),又称灵境技术,
是以沉浸性、交互性和构想性为基本特征的计算机高级人机界面。
它综合利用了
计算机图形学、
仿真技术、
多媒体技术、
人工智能技术、
计算机网络技术、
并行处理技术和
多传感器技术,
模拟人的视觉、听觉、触觉等感觉器官功能,
使人能够沉浸在计算机生成的虚拟境界中,并能够通过语言、
手势等自然的方式与之进行实时交互,
创建了一种适人化的多维信息空间,具有广阔的应用前景。
目前各种交互式体感应用的推出,
让虚拟现实与人机交互发展非常迅速,以微软、华硕、三星等为例,
目前诸多公司推出的RGBD解决方案,势必会让虚拟现实走出实验室,
因为现有的RGBD设备已经开始大量推向市场,
只是缺少,其他应用的跟进,这正是在为虚拟现实和人机交互应用铸造生态链的底部,
笔者认为这也正是PCL为何在此时才把自己与世人分享的重要原因所在,
它将是基于RGBD设备的虚拟现实和人机交互应用生态链中最重要的一个环节。
让我们抓住这一个节点,立足于交互式应用的一片小天地,但愿本书来的不是太迟。
PCL特点
PCL利用OpenMP、GPU、CUDA等先进高性能计算技术,通过并行化提高程序实时性。
K近邻搜索操作的构架是基于FLANN (Fast Library for Approximate Nearest Neighbors)
所实现的,速度也是目前技术中最快的。
PCL中的所有模块和算法都是通过Boost共享指针来传送数据的,
因而避免了多次复制系统中已存在的数据的需要,
从0.6版本开始,PCL就已经被移入到Windows,MacOS和Linux系统,
并且在Android系统也已经开始投入使用,这使得PCL的应用容易移植与多方发布。
========================================
在PCL中一个处理管道的基本接口程序是:
创建处理对象:(例如过滤、特征估计、分割等);
使用setInputCloud通过输入点云数据,处理模块;
设置算法相关参数;
调用计算(或过滤、分割等)得到输出。
为了进一步简化和开发,PCL被分成一系列较小的代码库,
使其模块化,以便能够单独编译使用提高可配置性,特别适用于嵌入式处理中:
1. libpcl filters:
如采样、去除离群点、下采样(特征提取)、拟合估计等数据实现过滤器;
2. libpcl features:
实现多种三维特征,如曲面法线、曲率、边界点估计、矩不变量、主曲率,
PFH和FPFH特征,旋转图像、积分图像,NARF描述子,
RIFT,相对标准偏差,数据强度的筛选等等;