1. 点云的提取

点云的获取:RGBD获取

点云的获取:图像匹配获取(通过摄影测量提取点云数据)

点云的获取:三维激光扫描仪

2. PCL简介

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

3. 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共享指针来传送数据的,因而避免了多次复制系统中已存在的数据的需要,从0.6版本开始,PCL就已经被移入到Windows、MacOS和Linux系统,并且在Android系统也已经开始投入使用,这使得PCL的应用容易移植与多方发布。

图1 PCL架构图

从算法的角度,PCL是指纳入了多种操作点云数据的三维处理算法,其中包括:过滤,特征估计,表面重建,模型拟合和分割,定位搜索等。每一套算法都是通过基类进行划分的,试图把贯穿整个流水线处理技术的所有常见功能整合在一起,从而保持了整个算法实现过程中的紧凑和结构清晰,提高代码的重用性、简洁可读。在PCL中一个处理管道的基本接口程序是:

(1)创建处理对象:(例如过滤、特征估计、分割等);

(2)使用setInputCloud通过输入点云数据,处理模块;

(3)设置算法相关参数;

(4)调用计算(或过滤、分割等)得到输出。

为了进一步简化和开发,PCL被分成一系列较小的代码库,使其模块化,以便能够单独编译使用提高可配置性,特别适用于嵌入式处理中:

libpcl filters: 如采样、去除离群点、特征提取、拟合估计等数据实现过滤器;

libpcl features:实现多种三维特征,如曲面法线、曲率、边界点估计、矩不变量、主曲率,PFH和FPFH特征,旋转图像、积分图像,NARF描述子,RIFT,相对标准偏差,数据强度的筛选等等;

libpcl I/O:实现数据的输入和输出操作,例如点云数据文件(PCD)的读写;

libpcl segmentation:实现聚类提取,如通过采样一致性方法对一系列参数模型()进行模型拟合点云分割提取,提取多边形棱镜内部点云等等;

libpcl surface:实现表面重建技术,如网格重建、凸包重建、移动最小二乘法平滑等;

libpcl register:实现点云配准方法,如ICP等;

libpclkeypoints:实现不同的关键点的提取方法,这可以用来作为预处理步骤,决定在哪儿提取特征描述符;

libpcl range:实现支持不同点云数据集生成的范围图像。

为了保证PCL中操作的正确性,上述提到的库中的方法和类包含了单位和回归测试。这套单元测试通常都是由专门的构建部门按需求编译和验证的。当某一部分测试失败时,这些特定部分的各自作者就会立即被告知。这彻底地保证了代码测试过程出现的任何变故,以及新功能都不会破坏PCL中已经存在的代码。

目录

第1章 概述
第2章 PCL入门
第3章 PCL基础
第4章 输入/输出(I/O)
第5章 kd-tree
第6章 八叉树
第7章 可视化
第8章 滤波
第9章 深度图像
第10章 关键点
第11章 采样一致性算法
第12章 点云特征描述与提取
第13章 点云配准
第14章 点云分割
第15章 点云曲面重建
第16章 综合应用

第1章 概述

第2章  PCL入门

2.1 Windows下配置安装PCL开发环境

第三方库3rdparty

(1)OpenNI

(2)PrimeSense Sensor KinectModPCL

安装成功了后,发现没有kinect_viewer_cuda_release.exe文件,去网上下了个,点击之后显示无法正常启动。想着应该是因为电脑没有连接Kinect设备。

PCL在Visual Studio 2008中的程序开发前期准备:

在VS中添加include包含文件和lib库文件和dll动态链接库文件:(1)全局级别:工具-选项-项目和解决方案-VC++目录-包含文件/库文件 (2)项目级别:项目上右键-属性-C/C++常规-附加包含目录;项目上右键-属性-连接器-常规-附加库目录,项目上右键-属性-连接器-输入-附加依赖项

总是出现.obj文件的链接器错误,只有填写CMakeLists.txt文件用CMake生成的才没有链接器错误,这可真是奇怪,直接添加进去的文件总是出现链接器问题哪怕在工程右键或者全局添加都不管用,只有通过CMake生成的添加管用。如下所示E:\CD_PCL\3\example_code\1.0\source下的bilateral.cpp文件,通过CMake方式生成的工程文件没有出现链接器错误。

也就是说lib文件链接库文件只能用CMake方式链接吗。。。之前OpenCV就不用啊,不知道PCL这次是怎么了。。。

之前总以为是光盘自带的32位的程序的原因,发现还是链接器的原因啊。

会不会是忘了添加链接库名字的原因?如何用pcl配置visual studio 2010

这链接库的名字也太多了吧。。。。崩溃

点云库PCL学习的更多相关文章

  1. 配置点云库PCL时遇到的问题

    配置PCL基本参照PCL中国官网教程 http://www.pclcn.org/study/shownews.php?lang=cn&id=34 配置点云库时遇到的问题(基于win8 64位, ...

  2. PCL点云库(Point Cloud Library)简介

    博客转载自:http://www.pclcn.org/study/shownews.php?lang=cn&id=29 什么是PCL PCL(Point Cloud Library)是在吸收了 ...

  3. python利用pybind11调用PCL点云库

    2019年7月9日14:31:13 完成了一个简单的小例子,python生成点云数据,利用pybind11传给PCL显示. ubuntu 16.04 + Anaconda3  python3.6 + ...

  4. PCL点云库:ICP算法

    ICP(Iterative Closest Point迭代最近点)算法是一种点集对点集配准方法.在VTK.PCL.MRPT.MeshLab等C++库或软件中都有实现,可以参见维基百科中的ICP Alg ...

  5. PCL点云库:对点云进行变换(Using a matrix to transform a point cloud)

    点云数据可以用ASCII码的形式存储在PCD文件中(关于该格式的描述可以参考链接:The PCD (Point Cloud Data) file format).为了生成三维点云数据,在excel中用 ...

  6. PCL点云库中的坐标系(CoordinateSystem)

    博客转载自:https://blog.csdn.net/qq_33624918/article/details/80488590 引言 世上本没有坐标系,用的人多了,便定义了坐标系统用来定位.地理坐标 ...

  7. Windows下安装PCL点云库

    原文链接:http://blog.csdn.net/u012337034/article/details/38270109 简介:         在Windows下安装PCL点云库的方法大概有两种: ...

  8. Windows 8 64位系统 在VS2010 32位软件上 搭建 PCL点云库 开发环境

    Windows 8 64位系统 在VS2010 32位软件上 搭建 PCL点云库 开发环境 下载PCL For windows 软件包 到这个网站下载PCL-All-In-One Installer: ...

  9. ViCANdo新版本发布(PART1) | 点云库(PCL)集成

    激光雷达         随着智能驾驶技术的发展,激光雷达迅速的进入工程师的视野,不管是机械式.MEMS还是纯固态激光雷达,本质上都是以一定的速度扫描照射区域,在此过程中激光雷达不断的发出激光并接收反 ...

随机推荐

  1. RISC处理器

     RISC(精简指令集算法)处理器是经过硬件的精简只执行很有限的最常用的那部分指令的处理器.因为通过研究发现,只有 大约 20%的指令是最常用的,把处理器能执行的指令数目减少到 最低限度,对它们的执行 ...

  2. C++之继承与多态

    在程序设计领域,一个广泛认可的定义是“一种将不同的特殊行为和单个泛化记号相关联的能力”.和纯粹的面向对象程序设计语言不同,C++中的多态有着更广泛的含义.除了常见的通过类继承和虚函数机制生效于运行期的 ...

  3. log4j显示hibernate sql参数的配置

    #下面的两条配置非常重要,设置为trace后,将可以看到打印出sql中 ? 占位符的实际内容 #this is the most important config for showing parame ...

  4. 迷你MVVM框架 avalonjs 学习教程20、路由系统

    SPA的成功离开不这三个东西,分层架构,路由系统,储存系统.分层架构是我们组织复杂代码的关键,这里特指MVVM的avalon:路由系统是将多个页面压缩在一个页面的关键:储存系统特指本地储存,是安全保存 ...

  5. 奶牛易物小组 Alpha冲刺

    项目地址:https://gitee.com/rrycbar/NenuChange 1 第一天 日期:2018/6/14 1.1 今日完成任务情况以及遇到的问题. 吴建瑜: 完成任务: 1.继续完善购 ...

  6. Null Hypothesis and Alternate Hypothesis

    1.Null Hypothesis Overview 零假设,H0是普遍接受的事实;这与备择假设(alternate hypothesis)正好相反.研究人员努力否定.驳斥零假设.研究人员提出了另一种 ...

  7. java基础五 [数字与静态](阅读Head First Java记录)

    本章主要讲了静态变量.静态方法,final关键词.以及介绍了怎么对数字和日期进行格式化输出.这里对这些内容进行了整理.本章还介绍了java.util.Date和java.util.Calendar来操 ...

  8. css3自定义placeholder字体颜色

    ::-webkit-input-placeholder{color:#f00;} ::-moz-placeholder{color:#f00;} :-moz-placeholder{color:#f0 ...

  9. 判断UNITY版本号

    代码示例: #if (UNITY_5_3 || UNITY_5_4 || UNITY_5_5 || UNITY_5_6 || UNITY_5_7 || UNITY_5_8 || UNITY_5_9)u ...

  10. html节点操作与事件

    <div id='a' style="width: 500px;height: 500px;background-color: grey;"> </div> ...