pcl库简介

PCL简介

Point Cloud Library (PCL) 是一个独立的大型的处理二维/三维图像和点云数据的开源工程,由Willow Garage公司开发,起初只是以PR2机器人在3D数据感知算法处理上速度更快为目标,后来才渐渐发展为一个独立的函数库。PCL包含了许多先进算法,比如滤波,特征估计,表面重建,模型拟合和分割等等。
因为PCL是开源的,所以无论是商用还是研究都是免费的;
赞助商有Open Perception, Willow Garage, NVIDIA, Google, Toyota, Trimble, Urban Robotics, Honda Research Institute, Sandia, Dinast, Optronic, Ocular Robotics, Velodyne, Fotonic, and MKE.
PCL历史
构成现在PCL算法基础的第一个算法,是由Dr. Radu Bogdan Rusu在德国慕尼黑工业大学读博士期间开发的,后来在2009年底由Willow Garage公司进一步开发完成。 Dr. Rusu的工作的目的是要为三维点云数据处理的研究及应用,建立出一个共同的基础架构。自从2010年3月开始,具有模块化库的想法开始初具雏形,并已经写了大量的工具,并作为机器人操作系统(ROS)框架的一部分,来帮助PR2机器人在复杂的3D环境中处理和导航。就这样,研究工作继续进行,但直到2010年11月才作出决定,开始建立一个称为PCL的新的独立项目,作为一个整体这将有利于提高3D领域的研究。
在2011年3月底,PCL迈出了第一步,作为一个独立项目推出了自己网页域名,并迅速得到如NVIDIA, Google, Toyota, and Trimble等公司的资金支持,之后仅仅三个月后,即在2011年6月,就得到了全世界超过120个开发者和贡献者的支持,在六大洲,拥有多达30个不同的大学,研究机构,商业公司对这个项目做着贡献。
今天,PCL继续发展,并且凝聚了全世界许多不同的研究人员和工程师在在同一框架下研究3D感知。

PCL完全是一个模块化的现代C++模板库。其基于以下第三方库:Boost、Eigen、FLANN、VTK、CUDA、OpenNI、QHull,实现点云相关的获取、滤波、分割、配准、检索、特征提取、识别、追踪、曲面重建、可视化等。 
- Boost:用于共享指针和线程; 
- Eigen:用于矩阵、向量等数据操作; 
- FLANN:用于在KD树模块中快速近邻搜索; 
- VTK:在可视化模块中用于3D点云渲染和可视化;

为了进一步简化和开发,PCL被分成一系列较小的代码库: 
- libpcl filters:采样、去除离群点、特征提取、拟合估计等过滤器。 
- libpcl features:实现多种三维特征的筛选,如:曲面法线、曲率、边界点估计等。 
- libpcl I/O:实现数据的输入和输出操作。 
- libpcl surface:实现表面重建技术,如网格重建,凸包重建。 
- libpcl register:实现点云配准方法,如ICP等。 
- libpclkeypoints:实现不同的关键点提取方法。 
- libpcl range:实现支持不同点云数据集生成的范围图像。

pcl_registration 将点云融合到一个全局模型中
pcl_kdtree 基于FLANN的kdtree实现最近邻搜索
pcl_octree 基于八叉树实现最近邻搜索
pcl_segmentation 分割点云
pcl_sample_consensus 对点云进行拟合(线、面、园、球、柱面、平行线),拟合算法包括:

  • SAC_RANSAC - RANdom SAmple Consensus
  • SAC_LMEDS - Least Median of Squares
  • SAC_MSAC - M-Estimator SAmple Consensus
  • SAC_RRANSAC - Randomized RANSAC
  • SAC_RMSAC - Randomized MSAC
  • SAC_MLESAC - Maximum LikeLihood Estimation SAmple Consensus
  • SAC_PROSAC - PROgressive SAmple Consensus
    pcl_surface 从三维扫描重建表面,可以是mesh/convex hull/concave hull
    pcl_range_image 深度图,由kinect获取后可转换为点云
    pcl_io 输入输出,PCD (Point Cloud Data) 文件的读写,OpenNI的接口(没有实现微软SDK的接口)
    pcl_visualization 类似于OpenCV中highgui的作用,基于VTK实现三维可视化(VTK是一个极其庞大的库)

————————————————
版权声明:本文为CSDN博主「照有」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_40132200/article/details/79681494

你可能感兴趣的:(pcl学习,自动驾驶,机器学习,人工智能)