PCL系列——pcl库概览(未完待续)

概述

12个模块
PCL系列——pcl库概览(未完待续)_第1张图片

1 Filters滤波

由于测量误差,数据有阴影点,通过分析每个点周围的邻近点的统计分析,修剪那些不符合某些标准的,通过计算邻近点平均距离,假设它们符合高斯分布,其平均距离在由全局距离平均值和标准偏差限定的区间之外的所有点可以被认为是异常值并且从数据集中修剪。
滤波例子:

2 Features特征库

features库里面包含了用于描述3D特征的数据结构和机制,3D特征是指依靠邻近点算出来的描述某一点位置,空间,形态的。邻近的是依据k-neighborhood算法得到的。
例如:估计某一点表面法线和曲率变化。
为了使找邻近点更有效,输入数据集通常使用空间分解技术(例如八叉树或kD树)被分割成更小的块,然后再利用k-neighborhood算法去找临近点,用于估计点p处的表面法线和曲率变化的最简单的方法是执行k邻域点表面块的特征分解(即计算特征向量和特征值)。
下图显示了所选查询点及其所选k邻域的简单示例:

3 Keypoints关键点,特征点

关键点库包含两个点云关键点检测算法的实现。 关键点(也称为兴趣点)是图像或点云中稳定,独特的点,并且可以使用良好定义的检测标准来识别。 通常,点云中的兴趣点的数量将远小于云中的点的总数,并且当与每个关键点处的局部特征描述符结合使用时,关键点和描述符可以用于表示原始数据了。
例如下图是提取NATF关键点的效果图。

4 Registration 定位?咋翻译?

将多个数据分块的数据合成到一个统一的模型坐标上面去,关键思想是识别对应点,然后找到使对应点之间的距离最小化的变换,不断重复迭代,直到达到设定的阈值范围内即可。怎么感觉就是我课题做的东西
数据融合与拼接效果图:

5 Kd-tree

提供了一个kd-tree的数据结构,利用FLANN,能够快速的进行最邻近点搜索算法。
Kd树(k维树)是存储在能够进行有效范围搜索和最近邻搜索的树结构中的一组k维点的空间分割数据结构。 最近邻居搜索是使用点云数据时的核心操作,使用Kd-tree能加速最邻近点的搜索过程
这篇博客将Kd-tree讲的比较清晰:http://blog.sina.com.cn/s/blog_6f611c300101bysf.html

Kd-tree大致原理

1 二叉搜索树BST
这里写图片描述
查找的平均时间复杂度为:O(logN),最坏的情况下是O(N)。
2 Kd-tree(K-dimensional tree)
由于是k维数据了,不能像以前那样直接比较大小了,现在是每次选择一个维度Di来对k维数据进行分割,然后再的子空间继续分,知道不能分了为止。
3 俩个问题
一:每次对子空间的划分时,怎样确定在哪个维度上进行划分?
最大方差法(max invarince),即每次我们选择维度进行划分时,都选择具有最大方差维度。
二:怎样确保在这一维度上的划分得到的两个子集合的数量尽量相等,即左子树和右子树中的结点个数尽量相等?
老方法,那边小选择那边,用一个东西保持中值就行了。

给定二维数据集合:(2,3), (5,4), (9,6), (4,7), (8,1), (7,2),利用上述算法构建一棵Kd-tree。左图是Kd-tree对应二维数据集合的一个空间划分,右图是构建的一棵Kd-tree。
这里写图片描述

6 Octree

八叉树库提供了用于从点云数据创建分层树数据结构的有效方法。这使得能够对点数据集进行空间分割,下采样和搜索操作。每个八叉树节点有八个孩子或没有孩子。根节点描述了封装所有点的立方边界框。
下图说明了在最低树级别的八叉树节点的体素边界框。八叉树体素围绕着来自斯坦福兔子表面的每个3D点。红点表示点数据。此图像是使用octree_viewer创建的。

7 Segmentation分割

这个好理解,区域分割,利用的是聚类算法clustering methods,集群提取教程为:http://pointclouds.org/documentation/tutorials/cluster_extraction.php#cluster-extraction
下图为平面和圆柱体的分割效果图:

8 Sample Consensus 样本一致性

一开始看着字想了半天,还以为这是啥,原来就是用来判定某个样本里面的所有数据是否属于这个模型的。
有个很金典的应用就是利用Random Sample Consensus tutorial随机点采样算法?来计算俩个点云之间的单应性矩阵的例子了,官网有例子:
http://pointclouds.org/documentation/tutorials/random_sample_consensus.php#random-sample-consensus

RandomSample Consensus求单应性矩阵

参考自: http://www.cnblogs.com/zjiaxing/p/5548250.html
这里写图片描述
单应性矩阵总共8个未知参数,需要8个线性方程,一组点俩个方程,至少包括四组匹配点,找单应性矩阵算法步骤如下:

1 随机从数据集中随机抽出4个样本数据(此四个样本之间不共线)计算出变换矩阵H,记为模型M;
2 计算数据集中所有数据与模型M的投影误差,若误差小于阈值,加入内点集I3 如果当前内点集元素个数大于最优内点集,则更新,同时更新迭代次数k;
4 如果迭代次数大于k,则退出:否则迭代次数加1,并重复上述步骤

总之可以去除一些噪声对整个模型的影响。

9 Surface

你可能感兴趣的:(PCL,pcl)