三维特征算子-PFH,FPFH,VFH

总述

  一堆离散的样点,只包含相对于某个坐标系下的位置参数,虽然能在空间中比较好的显示出物体的样子来,但对于视觉来说,这是远远不够的。之所以在文章的题目中提到特征,就是希望能用特征的方法,达到视觉识别的功能。
  离散点云,除了坐标信息外,最为直观的特征就是点、法向、曲率,这是最简单的特征,也是最忠实于原始点云的,这些特征包含了点云的最为详细的数据,虽然很少直接的使用,但在这个特征的基础上,可以实现更高层次的识别。计算简单,速度快是这些基础特征的特点之一,但是在进行物体识别的时候,在大场景中,拥有相似法向或曲率的区域太多了,这就从一定程度上削弱了它的作用。
  下面将会逐步介绍下PFH, FPHF, VFH等特征的原理与PCL的实现方式:

PFH

  FPH(Point Feature Histogram)的目的就是通过多维度直方图表达样点曲率,继而泛化样点k邻域的几何特征,这种高纬度超空间的方式能提供更多的特征数据,主要是为六自由度估计做个铺垫。

PFH计算

三维特征算子-PFH,FPFH,VFH_第1张图片
  其中,公式找那个的d表示两个样点间的欧式距离。按照上述公式计算,两个样点间的关系就可以用一个四元数(a,b,c,d)描述。
  上述完成了PFH的描述子,下面介绍下如何根据这些特征描述子绘制直方图:将每个特征值划分为b个子区间,并统计每个区间内样点的个数,由于前三个都是角度,是根据法向量计算得到的,因此可将这三个元素标准化并放到同一区间内。

FPFH

  PFH能保留比较到信息,但其时间复杂度较高,当遇到大规模数据时,会出现效率低下的现象,因此,在此基础上,提出了一个fast,到底有多快呢,不好意思,我也不知道,只能说是在尽可能不损失PFH信息的前提下,讲时间复杂度由O(k2)降低到O(k).

  首先介绍下计算过程:

  1. 计算SPFH(Simplified PFH):S的含义是只计算目标点q与其紧邻点的PFH,忽略紧邻点间的关系。
  2. 加权:目标点q的PFH为其SPFH(q)及其邻近点的加权SPFH之和,详细公式为:

image.png
其中wk表示p与pk的距离。

VFH

  VFH全程Viewpoint Feature Histogram,中文翻译为视点特征直方图;视点特征,是根据视点计算的,直方图,统计结果展示的一种形式,其主要意义就是根据某一个特征实现样点的分类(现在用的是三维的点,后期可能会用多维度的点),在这里主要的应用场景就是聚类与六自由度位姿估计。
  PFH是反映邻域与法向的关系。简单说,就是尽可能的捕捉法向之间的关系。PS:由于是基于法向进行的特征计算,所以,首先要保证法向的正确性,这就好比你给我一颗苹果树,但非要吃李子。

理论

  VFH与FPFH(Fast Point Feature Histograms)有着千丝万缕的关系,可以说是站在FPFH的肩膀上发展的(FPFH会在其他文章中介绍),高效率与高识别力是FPFH的特点,但这些在实际应用中是远远不够的,因此,又追加上了保持尺寸不变性的视角方差,最终得到VFH.
  VFH存在的主要意义就是要解决目标识别与姿态估计的问题,为更好的解决此问题,在实现目标簇的FPFH的估计值上,增加了视点方向与法向之间的统计数据,这就是VFH的主要思想。
  视点分量是通过视点与法向夹角的统计计算出来的:需要注意的是,计算的是每个法线的中心视点方向之间的夹角,而不是计算每个法向的视角,因为如果是这样的话,那就不能保证旋转不变性了。第二个分量就是欧拉角了,是指中心点与法向之间的夹角。
  两种的组合就时VFH了,主要特点有两个部分:

  • 视角方向相关的分量
  • 扩展FPFH的描述表面特征的分量

三维特征算子-PFH,FPFH,VFH_第2张图片

你可能感兴趣的:(c++,c,算法)