FPFH(Fast Point Feature Histograms)是由Radu Bogdan Rusu等人于2009年提出的一种鲁棒的多维特征描述子,它是在该团队在先前所提出的PFH(Point Feature Histograms)的基础上提出的一种改进版本。尽管PFH是一种信息丰富的局部特征,对于一个有n个点的点云数据,其PFH的理论计算复杂度为O(nk^2),k为每一个点的邻域点个数,因此如果将其应用到实时点云配准中时不能保证实时性而导致性能瓶颈。FPFH的提出能够将计算复杂度降低到O(n∙k),同时依然保留PFH的大部分鉴别能力和特征。
FPFH检测原理
(1)对于P中的任意一个查询点p_q,按照PFH中的计算方法来计算它本身与其邻域内其他点的一个元组(α,ϕ,θ),之后将以上三个特征分别统计成直方图,每个直方图都包含11个区间,在这一维上统计点在这11个区间个数,并将三个直方图连接起来,得到了对于点p_q的一个33维的特征向量被称为SPFH(Simple Point Feature Histograms):
(2)重新计算每个查询点p_q的邻域点p_k,并对这些邻域点按照相同的方式构建SPFH,如下右图所示,p_k1到p_k5为查询点p_q的邻域点,p_6到p_11为每个p_k的邻域点。每个查询点(红色)只连接到它的k邻域,而每个邻域点都与自己的邻域点相连接。标记为2的连接表示计算了两次PFH,并且参与到最终的FPFH计算中。
(3)将查询点p_q与其邻域点p_k的SPFH相结合,确定点p_q最终的FPFH:
其中,w_k表示查询点p_q与一个邻域点p_k的距离
主要实现FPFH特征描述子的计算与可视化,首先计算两个测试点云内每个点的法向量,之后根据法向量计算结果计算每个点的FPFH,并根据得到的FPFH结果计算对应点并且可视化