ORB特征检测算法
来源:互联网 发布:java 多线程 编辑:程序博客网 时间:2024/06/01 07:32
论文:ORB: an efficient alternative to SIFT or SURF
ORB特征检测算法是将FAST特征点检测方法与BRIEF特征描述子结合起来,并针对它们的缺点进行了改进和优化。
FAST特征点检测算法:
FAST特征点检测的具体过程,可以参考之前的博客。
FAST特征点是没有尺度不变性的,在该论文中,提出构建了金字塔,在金字塔的每一层上利用FAST方法检测特征点,并利用Harris角点响应函数,挑选出Harris角点响应值最大的N个特征点。
FAST特征点是没有方向的,在该论文中,提出了利用重心来求得特征点的方向,也就是对于特征点P,在其邻域内利用如下公式计算重心位置C,那么P与C的连线方向就是特征点P的方向。
其中,I(x, y)是点(x,y)处的灰度值,那么重心C为:
特征点P与重心C的夹角定义为FAST特征点的方向:
为了提高该方法的旋转不变形,需要确保(x, y)在以P为中心,r为半径的圆形区域内,也就是x, y∈[-r, r]
此外,在求特征点的方向时,除了上述方法,还有其他两种方法。MAX法:将特征点P邻域内最大梯度方向作为特征点的方向;BIN方法:类似于SIFT,在特征点邻域内计算梯度直方图,选取梯度直方图中最大值对应的方向为特征点的方向。在论文中指出,这两种方法不如重心法。
BRIEF特征描述子:
BRIEF特征描述子的具体过程,可以参考之前的博客。
BRIEF特征描述子不具有旋转不变性,在该论文中针对这一缺点,提出了Steer BRIEF。对于一个特征点,它的BRIEF描述子是一个长度为n的二进制码串,该二进制码串是由特征点周围的n对点(2n个点)生成的,我们可以将这2n个点(xi, yi)组成一个矩阵S。为了使得BRIEF特征描述子具有旋转不变性,论文中提出利用特征点的方向θ以及对应的旋转矩阵,构建S的一个矫正版本。
实际上,我们可以把角度离散化,即把360度分为30份,然后,对这30个角度,分别求得计算对应的,这样就创建了一个查找表。之后,我们根据特征点的方向,快速得到对应的点对集合。
为了减少噪声的干扰,在计算BRIEF描述子时,选取5*5区域的平均灰度值代替原来一个单点的灰度值。
BRIEF特征描述子具有以下特性:对于n维的二进制码串的每一个比特位,满足均值为0.5,方差很大的高斯分布。方差很大,意味着区分性比较强,那么不同特征点的描述子有较大的差异性,不容易造成误匹配。但是,将BRIEF沿着特征点的方向调整为Steer BRIEF后,方差很小,各个成分之间的相关性比较大。为了减少Steer BRIEF的方差亏损以及二进制码串的相关性,该论文提出了利用贪婪学习方法来选择点对集合。进一步改进后的算法称为rBRIEF,具体如下:
.
主要参考博客:
http://www.cnblogs.com/ronny/p/4083537.html
http://blog.csdn.net/gh_home/article/details/51511471
阅读全文
0 0
- ORB特征检测算法
- ORB特征检测算法小结
- 【特征检测】ORB特征提取算法
- 图像特征检测,ORB算法分析
- ORB 特征点检测匹配算法
- ORB特征点检测
- ORB特征点检测
- ORB特征点检测
- ORB特征点检测
- ORB特征点检测
- ORB特征点检测
- ORB特征点检测
- ORB特征检测
- ORB特征点检测
- ORB特征点检测
- ORB特征点检测
- SURF SIFT ORB三种特征检测算法比较
- -02-ORB算法的FPGA实现【特征点检测】
- 《Node.js区块链开发》一导读
- 基于友善Nanopi2 移植 Ubuntu-base-14.04系统
- PostMan
- Git配置多账号
- C++里仿函数的用法
- ORB特征检测算法
- mysql linux不区分大小写
- 单片机学习资料
- 一款安卓日历(二)
- TCP三次握手和四次挥手详解
- 创建swift颜色类
- js动态拼接标签,样式丢失的解决方法
- Java中System.currentTimeMills的几个常见用法
- sql查询重复数据