一、视点特征直方图(VFH)原理

  这篇博文描述了视点特征直方图(Viewpoint Feature Histogram[VFH])描述符,在一些其他文章也称为视角特征直方图,这是一种用于聚类识别和6DOF姿态估计问题(六自由度姿态估计)的点聚类的描述符。

1.理论基础:
  视点特征直方图(或VFH)起源于FPFH描述符(参见快速点特征直方图(FPFH)描述符)。FPFH有很好的速度和辨别能力,在此基础上添加视点方差,同时保持尺度不变性。
  VFH对目标识别和位姿识别问题的主要贡献是将FPFH扩展到整个目标集群(如下图所示),并计算每个点的视点方向和法线估计值之间的额外统计数据。为了做到这一点,VFH使用了在FPFH中直接混合视点方向到相对法向角计算的关键思想。

  VFH第一个特征分量通过收集视点方向与每个法线形成的角度的直方图来计算视点分量。注意此处不是指每条法线的角度,因为无法保持尺度不变性,而是指中心视点方向到每条法线的角度。第二个分量包括测量快速点特征直方图(FPFH)描述符中描述的相对平移、倾斜和偏航角,还有中心点的视点方向和表面上的每个法线之间的角度,如下图。

  因此,这个新的组合特征被称为视点特征直方图(VFH)。下图展示了这个想法,新特性由两特征部分组成:

1.视点方向特征部分

2.由扩展的FPFH组成的表面形状特征部分。

二、视点特征直方图(VFH)示例代码分析

  VFH在PCL中已经被实现了,处于pcl::feature类中。
  默认的VFH实现为三个扩展的FPFH值,每个值使用45个细分单元(binning subdivisions),为每个点与质心之间的距离使用另外45个细分单元,为视点组件使用128个细分单元,因此VFH将产生一个308字节的浮点值数组。这些存储在pcl::VFHSignature308点类型中。
  VFH和PFH或FPFH描述符之间的主要区别是,对于给定的点云数据集,只估计一个VFH描述符,而估计的PFH/FPFH描述符将与点云中的点数量相同。
  下面的代码片段将为输入数据集中的所有点估计一组VFH特性。

#include <pcl/point_types.h>
#include <pcl/features/vfh.h>{pcl::PointCloud<pcl::PointXYZ>::Ptr cloud (new pcl::PointCloud<pcl::PointXYZ>);pcl::PointCloud<pcl::Normal>::Ptr normals (new pcl::PointCloud<pcl::Normal> ());/*此处通过读取PCD或者创造一组有法向特征的点云。并使上面的指针指向点云,不再赘述*/// 创造VFH估计类,并且将点云数据和法向输出传入。pcl::VFHEstimation<pcl::PointXYZ, pcl::Normal, pcl::VFHSignature308> vfh;vfh.setInputCloud (cloud);vfh.setInputNormals (normals);// 当点云格式是PointNormal时,也可选择使用语句vfh.setInputNormals (cloud);// 创建空KD树,并将VFH类设置成树状结构便于快速搜索// Its content will be filled inside the object, based on the given input dataset (as no other search surface is given).pcl::search::KdTree<pcl::PointXYZ>::Ptr tree (new pcl::search::KdTree<pcl::PointXYZ> ());vfh.setSearchMethod (tree);// 输出数据的指针pcl::PointCloud<pcl::VFHSignature308>::Ptr vfhs (new pcl::PointCloud<pcl::VFHSignature308> ());// 计算VFH特征vfh.compute (*vfhs);// 如上所述此时vfhs->size()应该为1,这是与PFH和FPFH的区别
}

  当需要查看VFH直方图时,可以使用libpcl_visualization中包含的一个特殊PCLHistogramVisualization类,pcl_viewer也使用这个类来自动显示VFH描述符作为浮点值的直方图。

总结:
本篇文章介绍了VFH的大致原理以及与PFH和FPFH的具体区别,并介绍了使用PCL进行VFH特征计算的方法。下一篇文章将介绍NARF特征。


【博主简介】
  斯坦福的兔子,男,天津大学机械工程工学硕士。毕业至今从事光学三维成像及点云处理相关工作。因工作中使用的三维处理库为公司内部库,不具有普遍适用性,遂自学开源PCL库及其相关数学知识以备使用。谨此将自学过程与君共享。
博主才疏学浅,尚不具有指导能力,如有问题还请各位在评论处留言供大家共同讨论。
若前辈们有工作机会介绍欢迎私信。

【PCL自学:Feature5】视点特征直方图VFH概念及使用 (持续更新)相关推荐

  1. 【PCL自学:Feature3】PFH点特征直方图的概念和使用 (持续更新)

    一.点特征直方图(PFH)描述子介绍   Point Feature Histograms (PFH) 称为点特征直方图.   随着点特征的研究不断深入,利用点周围的邻近点估计表面法向和曲率的基本操作 ...

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

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

  3. 自学it18大数据笔记-第一阶段Java-day16-day17-day18-day19--day20-day21-day22——会持续更新...

    笔记为自学时随手记录,如有错误,欢迎指正,不胜感激!现已广州转移至上海,欢迎小伙伴们加qq或微博沟通交流(QQ,微博和博客同名) 笔记分享:自学it18大数据笔记-第一阶段Java-day16-day ...

  4. 点集的视点特征直方图的评估

    VFH(Viewpoint Feature Histgram)视角特征直方图描述器,可以很直观的表现点的聚类在处理聚类识别与6DOF位姿估计. 下面的图像展示了一个VFH识别和位姿估计的例子.给一些训 ...

  5. pcl里面的点特征直方图(PFH)

    表面法线和曲率可以好的代表一个点的几何特征.然而它们算得很快,而且算法简单,但是它们不能捕获细节,它们只是点的近邻的几何特征的近似估计.作为一个直接的结论,大多数的场景往往会包括很多有着相似特征的点, ...

  6. PCL:PCLPlotter可视化特征直方图

    PCLPlotter提供了一个直接简单的绘图接口,可以绘制许多类型的二维图形,包括多项式函数和特征直方图,比如PFH,FPFH等. 利用PCLPlotter绘制图形,通常分为以下4步: (1)声明绘图 ...

  7. Spring的使用——基础环境搭建以及IOC概念理解(持续更新)

    spring基础环境搭建 1.添加Spring依赖 2.编写一个Spring的配置文件 3.通过Spring的应用程序应用上下文获取对象 优点:在修改方案时可以不用修改代码,只需修改配置文件的bean ...

  8. 水声通信基本概念汇总(持续更新)

    加性高斯白噪声:加性高斯白噪声(additive white gaussian noise, AWGN)是一个数学模型,用于仿真发射机和接收机之间的信道.这个模型是线性增加的宽带噪声,具有恒定的频谱密 ...

  9. PCL之点特征直方图(PFH)

    背景 表面法线和曲率估计是对某个点周围的几何特征的基本表示.虽计算速度快容易,但却无法获得太多信息,因为它们只使用很少的几个参数值来近似某个点的k-邻域特征.然而大多数场景会包含许多具有相同或非常相似 ...

最新文章

  1. 利用CMake编译内核模块
  2. 解决argo workflow报错:MountVolume.SetUp failed for volume “docker-sock“ : hostPath type check failed
  3. Microsoft.CSharp.targets不存在解决方法
  4. 千万别让海底捞知道你的生日
  5. python 图形化开发用什么模块_用python进行GUI开发的选择/python的GUI模块(图形界面开发库)...
  6. 【概率论】3-4:二维分布(Bivariate Distribution)
  7. jQuery ajax post put 请求
  8. Java判断浏览器类型
  9. Mahout 安装配置及一个简单测试
  10. Cesium gltf(1.70)三维人物动画制作
  11. android 刷机 3e,华为nova 3e官方出厂固件rom刷机包下载_nova3e完整版升级包
  12. 学数学,要“直觉”还是要“严谨”?
  13. 知乎周源微信_每周源代码16-风管磁带版
  14. pic16f1829 c语言,PIC16F1829 TIMER2初始化程序及应用
  15. [湖南集训]谈笑风生
  16. 转载天大一位学长的帖子
  17. Linux网卡配置文件详解:
  18. Numpy:np.all() np.any()
  19. 双节点平台搭建详细教程
  20. “软到不行”的WWDC2018

热门文章

  1. 西安高新区:补助三星2000亿风闻太荒诞
  2. 双过程理论与三重心智模型
  3. Python中KeyError: 的解决方法
  4. java.lang.IllegalArgumentException: 在请求目标中找到无效字符。有效字符在RFC 7230和RFC 3986中定义
  5. 2022/03/31 Hana Scripted CV
  6. 企业自动化办公 – 请假流程(上篇)
  7. clickhouse清除表数据
  8. 图像恢复重建(浙大人工智能导论作业四)
  9. Responsibility
  10. HTML css——浏览器兼容性