基本概述

快速点特征直方图(Fast Point Feature Histograms,FPFH)是一种基于点及其邻域点之间法向夹角、点间连线夹角关系的特征描述子,是一种由点特征直方图(Point feature Histograms,PFH)改进的算法,保留了PFH中对点描述的主要几何特性,并将计算复杂度从O(nk^2)降低到O(nk),其中n为点云数据中点的个数,k为每个点的邻域包含的点的个数。

PFH特征描述子

PFH描述子通过参数化查询点与邻域点之间的空间差异,形成一个多维直方图对点的k邻域几何属性进行描述。直方图所在的高维超空间为特征表示提供了一个可度量的信息空间,对点云对应曲面的6维姿态来说它具有不变性,并且在不同的采样密度或邻域噪音等级下具有鲁棒性。点特征直方图(PFH)表示法是基于点与其k邻域之间的关系以及它们的估计法线,它考虑法线方向之间所有的相互作用,试图捕获最好的样本表面变化情况,以描述样本的几何特征。因此,表面法线估计的质量对PFH来讲是一个重要的因素。PFH的计算原理如图1所示,对于空间中任意一点Dq(用红色标注),D1~D5是Dq以为中心,半径为r内的邻域点。为描述任意两点Ds、Dt及点对应法线之间的关系,需要以其中一个点为原点建立局部坐标系,如图2所示,以Ds点为例,局部坐标系的建立过程如下:

(1)以点Ds的法向量Ns作为为局部坐标系的U轴;

(2)构建Ds指向Dr的向量并与U轴确定一个平面,找到过Ds且与平面垂线的向量作为V轴,即

(3)由W=Ns * V 得到局部坐标系的W轴 。

由上述描述可知,PFH 描述子是四维的,且Dq和k近邻点共k+1个点,就会得到四元组。

忽略信息并不重要的d,并将剩余的三维高维空间上的向量转化为直方图表示,首先把每一维都当作是一个坐标轴,并将其分为b个子区间,则PFH特征描述空间转换为 b^3 个子空间。然后分别统计落在每个子空间的点的数目,就得到了区间数目为 b^3个的直方图。

FPFH特征描述子

对PFH特征进一步优化升级就得到了快速点特征直方图(FPFH)。FPFH计算过程与PFH计算过程大同小异。对于任意一点Dq(红色标注)和其k邻域点D1~D5,分别根据与每一个邻域点构建局部坐标系,得到与每一个k邻域点的四元组,经过统计得到点特征直方图由于缺少了邻域点与邻域点之间的两两互联关系被称作简化的点特征直方图 (Simple Point Feature Histograms, SPFH)。如图3,然后分别以D1~D5作为目标点寻找其k邻域点并计算法向量、构建局部坐标系、获得SPFH。这样就得到了以Dq和其邻域点为目标点的SPFH(Dk),最终点Dq的FPFH特征计算公式为

式中,以Dq和其邻近点Di之间的距离作为权重Wk。

默认的FPFH算法中将

每一个特征所在的区间进行11份分割,然后合并得出了浮点值的一个33元素的特征向量,这样我们就得到了一个拥有33个元素的特征描述子,也就是SPFH。

三、PFH和FPFH的主要区别

(1)FPFH没有对全互联点Pq的所有邻近点的计算参数进行统计,因此可能漏掉了一些重要的点对,而这些漏掉的点对可能对捕捉查询点周围的几何特征有贡献。

(2)PFH特征模型是对查询点周围的一个精确的邻域半径内,而FPFH还包括r范围以外2r以内的额外点对。

(3)因为重新计算权重的方式,FPFH通过结合SFPH的值,重新捕获邻近重要点对的几何信息。

(4)FPFH的整体复杂性低,FPFH在实际的应用中更为常见。

(5)FPFH通过分解三元组简化了合成的直方图。先将每个特征维度分区单独绘制,最后将它们连接在一起。

PCL中PFH、FPFH理论相关推荐

  1. pcl点云特征提取 法线估计 PFH FPFH NARF 惯量偏心矩 RoPs特征 视点特征直方图VFH GASD特征

    pcl点云特征提取 法线估计 PFH FPFH NARF 惯量偏心矩  RoPs特征  视点特征直方图VFH GASD特征 博文末尾支持二维码赞赏哦 _ 如果要对一个三维点云进行描述,光有点云的位置是 ...

  2. bresenham算法画圆mfc实现_kd-tree理论以及在PCL 中的代码的实现

    通过雷达,激光扫描,立体摄像机等三维测量设备获取的点云数据,具有数据量大,分布不均匀等特点,作为三维领域中一个重要的数据来源,点云主要是表征目标表面的海量点的集合,并不具备传统网格数据的几何拓扑信息, ...

  3. kd-tree理论以及在PCL 中的代码的实现

    (小技巧记录:博客园编辑的网页界面变小了使用Ctrl  ++来变大网页字体) 通过雷达,激光扫描,立体摄像机等三维测量设备获取的点云数据,具有数据量大,分布不均匀等特点,作为三维领域中一个重要的数据来 ...

  4. PCL中3D点云特征描述与提取(三)

    PCL中3D点云特征描述与提取(三) 1 如何从一个深度图像中提取NARF特征 2 RoPs特征 2.1 理论基础 2.1.1 生物视觉认知学启示 2.1.2 局部参考坐标框架构建 2.1.3 RoP ...

  5. 微型计算机中的pcl是指,PCL中的类

    1. PCLBase pcl_base.h中定义了PCL中的基类PCLBase,PCL中的大部分算法都使用了其中的方法. PCLBase实现了点云数据及其索引的定义和访问. 两个主要的变量input_ ...

  6. PCL中3D特征描述子Shot详解

    上周点云公众号开始分享群友们的反馈分享,由博主分配任务,半个月甚至一个月参与学习小伙伴的反馈给群主,并在微信交流群中进行学术交流,加强大家的阅读文献能力,并提高公众号的分享效果.已经有一些开始陆续反馈 ...

  7. PCL中outofcore模块---基于核外八叉树的大规模点云的显示

    写在前面 最近公众号的活动让更多的人加入交流群,尝试提问更多的我问题,群主也在积极的招募更多的小伙伴与我一起分享,能够相互促进. 这里总结群友经常问,经常提的两个问题,并给出我的回答: (1)啥时候能 ...

  8. PCL中可用的PointT类型

    PCL中可用的PointT类型: PointXYZ--成员变量:float x,y,z; PointXYZ是使用最常见的一个点数据类型,因为他之包含三维XYZ坐标信息,这三个浮点数附加一个浮点数来满足 ...

  9. PCL中的OpenNI点云获取框架(OpenNI Grabber Framework in PCL)

    从PCL 1.0开始,PCL(三维点云处理库Point Cloud Library)提供了一个通用采集接口,这样可以方便地连接到不同的设备及其驱动.文件格式和其他数据源.PCL集成的第一个数据获取驱动 ...

最新文章

  1. 论电子计算机在审计中的应用,计算机技术在审计中的应用领域分析.doc
  2. Java高阶部分知识点汇总(一)- 成员变量与局部变量详讲
  3. 【已解决】Android5.0版本如何打开调试模式
  4. 针对B2B平台的接口自动化测试系统
  5. 【计算机网络实验·北航】实验一:网络实验入门(1)
  6. 使用Docker快速搭建生产环境
  7. leetcode实践:通过链表存储两数之和
  8. 多租户saas 架构_实战复盘:toB产品的多租户架构设计
  9. python模块是一个可共享的程序_python基础-模块
  10. ‘utf-8‘ codec can‘t decode byte 0xb8 in position 0: invalid start byte
  11. 敏捷开发“松结对编程”实践之四:日常工作篇(大型研发团队,学习型团队,139团队,师徒制度,检查点,代码审查,每日立会)...
  12. 算法问题的求解 —— 变量的引入
  13. 献给初学者-DSP入门教程
  14. Qt开发 之 删除文件或文件夹到回收站(详解)
  15. 大数据面试之hive重点(二)
  16. 二、springBoot 整合 mybatis 项目实战
  17. 10个Spring Boot 优秀学习项目
  18. Map.containsKey() 的一个使用场景.
  19. 替换=(等于号)正则表达式
  20. 生财有术:及时止损,及时止损,及时止损

热门文章

  1. linux ls只显示文件名或者文件夹名
  2. html table 筛选记录,JS实现table表格内针对某列内容进行即时搜索筛选功能
  3. destoon php,DESTOON_7.0_UTF8
  4. 面试题整理10 最小的k个数
  5. 10.递归是神马?recursion
  6. 深度学习(DL)与卷积神经网络(CNN)学习笔记随笔-03-基于Python的LeNet之LR
  7. Vue.js 事件处理
  8. Java 设计模式 -- 建造者模式
  9. 谷歌chrome浏览器的源码分析(六)
  10. Coursera课程Python for everyone:chapter5