点云库PCL从入门到精通 (学习笔记) 第一章 概述

1.1 PCL是什么

PCL (Point Cloud Library ,点云库) 是大型跨平台开源C++ 编程库,它实现了大量点云相关的通用算法和高效数据结构,涉及点云获取、滤波、分割、配准、检索、特征提取、识别、追踪、曲面重建、可视化等;支持多种操作系统平台, 可在Windows 、Linux 、Android 、Mac OS X 、部分嵌入式实时系统上运行。
如果说OpenCV是2D 信息获取与处理的结晶, 那么PCL 就在3D 信息获取与处理上具有同等地位。PCL 是BSD 授权方式, 可以免费进行商业和学术应用。

1.2 PCL的发展

PCL 起初是ROS( Robot Operating System ) 下由来自于慕尼黑大学年轻的Radu 博士等人维护和开发的开源项目, 主要应用于机器人研究应用领域, 随着各个算法模块的积累,于2011年独立出来, 正式与全球3D 信息获取、处理的同行一起, 组建了强大的开发维护团队, 以多所知名大学、研究所和相关硬件、软件公司为主。之后, 发展非常迅速,不断有新的研究机构等加人, 在Willow Garage 、NVidia 、Google、Toyota 、Trimble、Urban Robotics 、Honda Research lnstitute 等多个全球知名公司的资金支持下,不断提出新的开发计划, 代码更新非常活跃,并且有社区长期维护。

1.3 PCL的应用

测绘领域、无人驾驶领域、机器人领域、人机交互领域、逆向工程与其他工业自动化领域、BIM领域等。

1.4 PCL的结构与核心内容

对于3 D 点云处理来说,PCL 完全是一个模块化的现代C + + 模板库, 如图1-2 所示。其基于以下第三方库: Boost 、Eigen 、FLANN 、VTK 、CUDA 、OpenNI 、Qhull , 实现点云相关的获取、滤波、分割、配准、检索、特征提取、识别、追踪、曲面重建、可视化等。
在这里插入图片描述
PCL 中的所有模块和算法都是通过Boost对共享指针来传送数据的, 因而避免了多次复制系统中已存在的数据的需要。
从算法的角度, PCL 是指纳人了多种操作点云数据的三维处理算法, 其中包括: 过滤、特征估计、表面重建、模型拟合和分割、定位搜索等。每一套算法都是通过基类进行划分的, 试图把贯穿整个流水线处理技术的所有常见功能整合在一起, 从而保持了整个算法实现过程中的紧凑和结构清晰, 提高代码的重用性、简洁可读。
在PCL 中一个处理管道的基本接囗程序如下。
· 创建处理对象( 例如过滤、特征估计、分割等) 。
· 使用setlnputCloud 通过输入点云数据, 处理模块。
· 设置算法相关数。
· 调用计算( 或过滤、分割等) 得到输出。

为了进一步简化和开发, PCI 被分成一系列较小的代码库, 使其模块化, 以便能够单独编译使用, 提高可配置性。
PCL 中常用代码库介绍如下。
· libpcl filters :如采样、去除离群点、特征提取、拟合估计等数据实现过滤器。
· libpcl features:实现多种三维特征, 如曲面法线. 曲率、边界点估计、矩不变量、主为率, PFH 和FPFH 特征, 旋转图像、积分图像, NARF 描述子,RIFT,相对标准偏差,数据强度的筛选等等。
· libpcl I/O: 实现数据的的输入和偷出操作, 例如点云数据文件( PCD) 的读写。
· libpcl segmentation:实现聚类提取,如通过采样一致性方法对一系列参数模型( 如平面、柱面、球面, 直线等)进行模型拟合点云分割提取, 提取多边形棱镜内部点云等。
· libpcl surface: 实现表面重建技术, 如网格重建、凸包重建、移动最小二乘法平滑等。
· libpcl register: 实现点云配准方法,如ICP 等。
· libpcl keypoints: 实现不同的关键点的提取方法, 这可以用来作为预处理步骤. 决定在哪儿提取特征描述符。
· libpcl range: 实现支持不同点云数据集生成的范围图像。

猜你喜欢

转载自blog.csdn.net/cheche012345/article/details/127075989