3D 特征点概述(2)
还是紧接着上一文章的思路继续介绍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)的一些概念。主要的参考文献:
- Object recognition from local scale-invariant features (http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=790410&tag=1)
输入格式:
(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)的更多相关文章
- 3D 特征点概述(1)
很久没有更新相关内容了,很多朋友过来私信我,但由于时间问题,不能一一为大家解答,本人也不是无所不知的大神,还请各位谅解. 本文主要总结PCL中3D特征点的相关内容,该部分内容在PCL库中都是已经集成的 ...
- 3D特征:关于HFM和HBB
1.HBB 三维绑定框 (1): 要用到HBB,定义还不太清楚,来自于 VALVE Developer Community (https://developer.valvesoftware.co ...
- SLAM方向公众号、知乎、博客上有哪些大V可以关注?
一.公众号 泡泡机器人:泡泡机器人由一帮热爱探索并立志推广机器人同时定位与地图构建(SLAM)技术的极客创办而成,通过原创文章.公开课等方式分享SLAM领域的数学理论.编程实践和学术前沿. 经典文 ...
- OpenCV开发笔记(六十四):红胖子8分钟带你深入了解SURF特征点(图文并茂+浅显易懂+程序源码)
若该文为原创文章,未经允许不得转载原博主博客地址:https://blog.csdn.net/qq21497936原博主博客导航:https://blog.csdn.net/qq21497936/ar ...
- SALM入门笔记(1):特征点的匹配
SLAM 主要分为两个部分:前端和后端,前端也就是视觉里程计(VO),它根据相邻图像的信息粗略的估计出相机的运动,给后端提供较好的初始值.VO的实现方法可以根据是否需要提取特征分为两类:基于特征点的方 ...
- SLAM入门之视觉里程计(1):特征点的匹配
SLAM 主要分为两个部分:前端和后端,前端也就是视觉里程计(VO),它根据相邻图像的信息粗略的估计出相机的运动,给后端提供较好的初始值.VO的实现方法可以根据是否需要提取特征分为两类:基于特征点的方 ...
- windows下3D文字
windows下3D文字 简单概述 需要在每一帧的视频图像上面添加3D文字,文字可以自由移动位置,变换各种字体属性,还能进行一些简单动画.然后把处理好的视频图像传个下一个步骤去处理.做的过程中参考了G ...
- Javascript基于对象三大特征 -- 冒充对象
Javascript基于对象三大特征 基本概述 JavaScript基于对象的三大特征和C++,Java面向对象的三大特征一样,都是封装(encapsulation).继承(inheritance ) ...
- Bundle Adjustment光束平差法概述
http://blog.csdn.net/abcjennifer/article/details/7588865 http://blog.csdn.net/ximenchuixuezijin/arti ...
随机推荐
- Nuxt.js 如何在 asyncData中 请求数据 ,并将拿到的数据传给子组件
说明:同接口请求一样,也可以进行数据的处理:return 中 左侧的变量 可以直接拿到在页面上使用,也可以传递给子组件 下面再给出一段代码,方便觉得有用的.却又不想手敲的朋友们: async as ...
- C#读取大数据量Excel
var worksheet = workbook.Worksheets["工作表1"]; var maxN = worksheet.Range["A1"].En ...
- HDU.6155.Subsequence Count(线段树 矩阵)
题目链接 首先考虑询问[1,n]怎么做 设 f[i][0/1]表示[1,i]以0/1结尾的不同子序列个数 则 \(if(A[i]) f[i][1] = f[i-1][0] + f[i-1][1] + ...
- android 6.0 动态权限
Android 6.0 动态权限: 除了要在AndroidManifest.xml中申请外,还需使用时,请求用户允许授权. 以下是需要单独申请的权限,共分为9组,每组只要有一个权限申请成功了,就默认整 ...
- Oracle取月份-不带前面的0
出处:http://www.2cto.com/database/201208/145611.html 今天碰到只要取月份和天数,如果月份前面有0要去掉0.比如说2010-01-08 ,需要的结果是 ...
- Linux知识(6)----卸载安装的包
命令步骤: sudo apt-get purge PACKAGE_NAME sudo apt-get autoremove 例如卸载ffmpeg包: sudo apt-get purge ffmpeg ...
- jquery预加载的几种方式
实际编写前端页面时,有时候希望一打开某个页面就加载一些方法.下面是4种预加载方法. ①页面加载完之前执行,与嵌入的js加载方式一样(写jquery插件的时候使用) (function ($) { al ...
- 阿里最新热修复Sophix与QQ超级补丁和Tinker的实现与总结
2015年以来,Android开发领域里对热修复技术的讨论和分享越来越多,同时也出现了一些不同的解决方案,如QQ空间补丁方案.阿里AndFix以及微信Tinker(Bugly sdk也集成Tikner ...
- c++中几种常见的类型转换。int与string的转换,float与string的转换以及string和long类型之间的相互转换。to_string函数的实现和应用。
1.string转换为int a.采用标准库中atoi函数,对于float和龙类型也都有相应的标准库函数,比如浮点型atof(),long型atol(). 他的主要功能是将一个字符串转化为一个数字,在 ...
- 折叠代码块 C#中用 #region和#endregion java中用 //region和//endregion
折叠代码块 C#中用 #region和#endregion java中用 //region和//endregion