还是紧接着上一文章的思路继续介绍3D特征点的基本概念问题,还是这个表格:

Feature Name Supports Texture / Color Local / Global / Regional Best Use Case
PFH No L  
FPFH No L 2.5D Scans (Pseudo single position range images)
VFH No G Object detection with basic pose estimation
CVFH No R Object detection with basic pose estimation, detection of partial objects
RIFT Yes L Real world 3D-Scans with no mirror effects. RIFT is vulnerable against flipping.
RSD No L  
NARF No L 2.5D (Range Images)

NARF (Normal Aligned Radial Feature)

这是一个局部特征点,NARF功能扩展了SIFT(Lowe)的一些概念。主要的参考文献:

输入格式:
(1)场景的深度图像RI。
(2)NARF不仅是描述符,还是检测器。可以首先在数据集上运行兴趣点检测器再进行描述子描述

http://docs.pointclouds.org/trunk/classpcl_1_1_narf_keypoint.html

工作原理:
(1)迭代深度图像RI中的所有兴趣点。
(2)对于每个点,Pi通过沿着法线看它来创建一个小图像补丁。法线是图像块的局部坐标系的Z轴,其中Pi位于(0,0)。 Y轴是世界坐标系Y轴。 X轴相应对齐。围绕Pi的半径r内的所有邻居都被转移到该局部坐标系中。
(3)具有n个光束的星形图案投射在图像块上。对于每个波束,计算[-0.5,0.5]中的分数。如果在梁下方的细胞中存在大量强度变化,则束具有高分。这是通过将每个单元与下一个单元进行比较来计算的。另外,靠近中心的细胞有助于得分具有更高的重量(中间2个,边缘1个)。
(4)最后,计算补片的主导方向,使其对法线周围的旋转不变。
有关特征计算的更多详细信息,请参阅原始文件:https://www.willowgarage.com/sites/default/files/icra2011_3dfeatures.pdf

简短概述
(1)对于深度图像RI中的每个关键点Pi,对Pi周围的所有邻居进行采样,并将它们转换为局部坐标系,其中Pi为O.
(2)在图像块上投射星形图案并计算每个光束下的强度变化以获得光束的分数。 在计算中,更靠近中心的光束具有更大的权重。 分数归一化为[-0.5,0.5]。
(3)迭代所有光束并找到图像块的主要方向。

RSD (Radius-based Surface Descriptor)

是一种局部特征点

输入格式:
(1)由一组带有方向信息点P组成的点云。带有方向意味着所有点都具有正常的n法线。
(2)此功能不使用颜色信息。

工作原理:
(1)迭代点云P中的点。
(2)对于输入云中的每个点Pi(i是迭代索引),收集具有半径r的Pi周围的球体内的所有相邻点。这个集合称为Pik(k为k个邻居)
(3)对于Pik中的每个邻居Pikj,计算Pi和Pikj之间的距离以及它们的法线之间的角度。这些值被分配给表征点Pi处的曲率的直方图。
(4)使用这些值,可以通过两个点拟合具有近似半径rc的假想圆(见图)。请注意,当两个点位于平面上时,半径将变为无穷大。
(5)由于查询点Pi可以是多个圆的一部分,其邻居仅保持最小和最大半径并将其分配给Pi作为输出。该算法接受最大半径参数,在该参数之上,点将被视为平面。

简短概述
(1)对于P样本中的每个点Pi,Pi周围的所有k个邻居。
(2)根据距离d和无向法线的角度将所有邻居分配到直方图。
(3)假设与每个邻居的Pi对描述一个圆(见图)。 找到Pi描述的所有球体的最小和最大半径及其邻域。
(4)得到的直方图和半径组可以与其他点云的组合进行比较,以便找到对应关系。

ESF (Ensemble of Shape Functions)(拓展一个特征点)

是一种局部特征点,参考文章

  • A3, D2, D3 shape description functions: Matching 3D Models with Shape Distributions (Osada et. al.)
  • D2 improvements (IN, OUT, MIXED): Using Shape Distributions to Compare Solid Models (Ip et. al.)

输入格式:
(1)由一组点P组成的点云。
(2)此功能不使用颜色信息。

工作原理:
(1) 启动一个循环,从点云P中采样20,000点。
(2) 每次迭代都会对三个随机点Pri,Prj,Prk进行采样。
(3) D2:对于D2函数,计算Pri和Prj之间的距离。然后检查连接两点的线是否完全位于表面(IN),表面外(OUT)或两者(MIXED)。在先前计算的距离箱处增加D2的子组合图之一(IN,OUT或MIXED)。当采样三个点时,可以在该迭代中计算另外两个距离。
(4) D2比率:还有另一个直方图,可以捕获位于表面和自由空间中的每条线的各部分之间的比率。
(5) D3:对于D3函数,计算Pri,Prj和Prk之间三角形区域的平方根。这相当于D2,因为该区域也分为IN,OUT和MIXED。增加D3直方图的相应直方图区间。
(6) A3:对于A3函数计算三点之间的角度。此功能再次分为IN,OUT和MIXED。这次使用与角度相反的线。增加相应的A3直方图bin。
(7)在循环结束时,我们得到一个包含10个子图形(每个64个子区)的全局描述符:D2(IN,OUT,MIXED,比率),D3(IN,OUT,MIXED),A3(IN,OUT,MIXED) 。
阅读整篇论文以获取更多信息:http://ieeexplore.ieee.org/xpl/articleDetails.jsp?numumber = 6181760

简短概述:
(1)开始一个从点云P中随机抽样20,000点的循环。每轮样本三点Pri,Prj,Prk。
(2)对于两个点对,计算彼此之间的距离,并检查两者之间的线是否位于表面上,外部或与物体相交(IN,OUT或MIXED)。在D2的三个子图表中的一个中增加与计算的距离对应的bin。
(3)对于前一行,找到位于表面或外部的那条线的部分之间的比率。结果应该是0表示完全在外面,1表示完全在表面上,并且来自MIXED线的所有值都在它们之间分布。增加D2比率直方图的对应bin。
(4)对于三元组,建立一个三角形并计算两侧之间的角度,并将角度的一侧分为三角形(IN,OUT,MIXED)。增加A3的IN,OUT或MIXED子组合图中的相应角度箱。
(5)对于前一个三角形,计算区域的平方根,并将区域分为IN,OUT或MIXED。增加D3的IN,OUT或MIXED子组合图中的相应区域bin。

注意:以上内容如有错误或者需要补充的,请留言!同时欢迎大家关注微信公众号,积极分享投稿,做到大家一起分享,拒绝只做个伸手党!或者加入3D视觉微信或QQ交流群,一起交流分享! 投稿或联系群主邮箱:dianyunpcl@163.com

原创不易,转载请联系群主,注明出处

3D 特征点概述(2)的更多相关文章

  1. 3D 特征点概述(1)

    很久没有更新相关内容了,很多朋友过来私信我,但由于时间问题,不能一一为大家解答,本人也不是无所不知的大神,还请各位谅解. 本文主要总结PCL中3D特征点的相关内容,该部分内容在PCL库中都是已经集成的 ...

  2. 3D特征:关于HFM和HBB

    1.HBB    三维绑定框 (1): 要用到HBB,定义还不太清楚,来自于 VALVE Developer Community (https://developer.valvesoftware.co ...

  3. SLAM方向公众号、知乎、博客上有哪些大V可以关注?

    一.公众号 泡泡机器人:泡泡机器人由一帮热爱探索并立志推广机器人同时定位与地图构建(SLAM)技术的极客创办而成,通过原创文章.公开课等方式分享SLAM领域的数学理论.编程实践和学术前沿. ​ 经典文 ...

  4. OpenCV开发笔记(六十四):红胖子8分钟带你深入了解SURF特征点(图文并茂+浅显易懂+程序源码)

    若该文为原创文章,未经允许不得转载原博主博客地址:https://blog.csdn.net/qq21497936原博主博客导航:https://blog.csdn.net/qq21497936/ar ...

  5. SALM入门笔记(1):特征点的匹配

    SLAM 主要分为两个部分:前端和后端,前端也就是视觉里程计(VO),它根据相邻图像的信息粗略的估计出相机的运动,给后端提供较好的初始值.VO的实现方法可以根据是否需要提取特征分为两类:基于特征点的方 ...

  6. SLAM入门之视觉里程计(1):特征点的匹配

    SLAM 主要分为两个部分:前端和后端,前端也就是视觉里程计(VO),它根据相邻图像的信息粗略的估计出相机的运动,给后端提供较好的初始值.VO的实现方法可以根据是否需要提取特征分为两类:基于特征点的方 ...

  7. windows下3D文字

    windows下3D文字 简单概述 需要在每一帧的视频图像上面添加3D文字,文字可以自由移动位置,变换各种字体属性,还能进行一些简单动画.然后把处理好的视频图像传个下一个步骤去处理.做的过程中参考了G ...

  8. Javascript基于对象三大特征 -- 冒充对象

    Javascript基于对象三大特征 基本概述 JavaScript基于对象的三大特征和C++,Java面向对象的三大特征一样,都是封装(encapsulation).继承(inheritance ) ...

  9. Bundle Adjustment光束平差法概述

    http://blog.csdn.net/abcjennifer/article/details/7588865 http://blog.csdn.net/ximenchuixuezijin/arti ...

随机推荐

  1. WinForm中DataGridView导出为Excel(快速版)

    public static void ExportExcel(DataGridView myDGV, string fileName) { string saveFileName = fileName ...

  2. Playmaker全面实践教程之Playmaker常用工具

    Playmaker全面实践教程之Playmaker常用工具 Playmaker常用工具 Playmaker插件搭载了8个工具:FSM Browser.State Browser.Templates.T ...

  3. c#基础在winform操作数据库,实现增删改查

    1.数据库操作类代码: using System; using System.Collections.Generic; using System.Linq; using System.Text; us ...

  4. BZOJ.2002.Bounce 弹飞绵羊(LCT)

    题目链接 从一个点只能往后跳,即后继状态只有一个,那么拿nxt[x]做fa[x]啊!这样就成了一棵树,从每个点开始的答案是它到所在树的根节点的距离. nxt[]的更改即动态修改树边,用LCT即可. 这 ...

  5. PHP函数 ------ ctype_alnum

    //判断是否是字母和数字或字母数字的组合 if(!ctype_alnum($str)){ echo '只能是字母或数字的组合';exit; }整理下ctype functions: 1.ctype_a ...

  6. react-native基础教程(1)

    转载链接:http://www.ncloud.hk/%E6%8A%80%E6%9C%AF%E5%88%86%E4%BA%AB/react-native-foundation-course/ React ...

  7. 数据结构C语言版--静态顺序表的基本功能实现(一)

    /* * 功能:创建一个线性表,并输出 * 静态分配内存 */ #include<stdio.h> //stdio.h是C的标准I/O库 //#include<iostream> ...

  8. JS中JSON.parse和eval的异同

    1.相同点 JSON.parse和eval函数都可将一段json字符串转换为json对象,如: var json = '{"intro":[{"name":&q ...

  9. DO-214 SMA、SMB、SMC封装

    DO-214 is a standard that specifies a group of semiconductor packages for surface mounted diodes. Th ...

  10. 【荐】详解 golang 中的 interface 和 nil

    golang 的 nil 在概念上和其它语言的 null.None.nil.NULL一样,都指代零值或空值.nil 是预先说明的标识符,也即通常意义上的关键字.在 golang 中,nil 只能赋值给 ...