还是紧接着上一文章的思路继续介绍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. C# 启动外部程序的几种常用方法汇总

    . 启动外部程序,不等待其退出. . 启动外部程序,等待其退出. . 启动外部程序,无限等待其退出. . 启动外部程序,通过事件监视其退出. 实现代码如下: // using System.Diagn ...

  2. python单元测试模块unittest

    1.unittest_demo.py # coding=utf-8 import time import unittest from HtmlTestRunner import HTMLTestRun ...

  3. Alpha测试

    1.测试计划 测试工作安排 成员名称 成员工作安排 林凯 注册登录页面相关功能测试 刘华强 主页面相关功能测试 吴文清 管理员页面相关功能测试 谢孟轩 用户页面相关功能测试 蔡振翼 回归测试 测试工具 ...

  4. BZOJ.3450.(JoyOI1952) Easy(期望)

    题目链接 /* 设f[i]为到i的期望得分,c[i]为到i的期望连续长度 则若s[i]=='x',f[i]=f[i-1], c[i]=0 s[i]=='0',f[i]=f[i-1]+2*c[i-1]+ ...

  5. jsp导出简单的excel

    在jsp中加入以下代码即可 <% String fileName = "导出excel.xls"; fileName = new String(fileName.getByt ...

  6. thinkphp5 学习笔记

    一.开发规范: 二.API: 1.数据输出:新版的控制器输出采用 Response 类统一处理,而不是直接在控制器中进行输出,通过设置 default_return_type 就可以自动进行数据转换处 ...

  7. 推荐两款好用的反编译工具(Luyten,Jadx)

    使用JD-Gui打开单个.class文件,总是报错// INTERNAL ERROR 但当我用jd-gui反编译前面操作获得的jar文件的时,但有一部分类不能显示出来--constants类,仅仅显示 ...

  8. CentOS -- 添加开机自启动 命令 脚本

    如果只是添加一条开机启动的命令: 1. chmod +x /etc/rc.d/rc.local 2. 将命令写到 /etc/rc.d/rc.local 这个文件中 3. reboot

  9. [CGAL]带岛多边形三角化

    CGAL带岛多边形三角化,并输出(*.ply)格式的模型 模型输出的关键是节点和索引 #include <CGAL/Triangulation_vertex_base_with_id_2.h&g ...

  10. Linux系统中安装使用百度云网盘

    百度云没有Linux客户端,于是有大神用Go语言写出来一个叫BaiduPCS-Go的命令行盘客户端,可以通过终端操作百度云盘,在Linux上实现上传下载.但是因为是命令行版本的,对没有命令行使用基础的 ...