OpenCV2学习笔记(二十二)
最后更新于:2022-04-01 06:36:35
##ORB特征提取
ORB(ORiented Brief)特征提取算法,其前身Brief,是由EPFL的Calonder在ECCV2010上提出了一种可以快速计算且表达方式为二进制编码的描述子,主要思路就是在特征点附近随机选取若干点对,将这些点对的灰度值的大小,组合成一个二进制串,并将这个二进制串作为该特征点的特征描述子。BRIEF最大的优点在于速度快,然而其缺点也相当明显,主要有以下几方面:
1. 不具有旋转不变性;
2. 不具有尺度不变性;
3. 对抗噪声性能差。
ORB就是试图解决上述缺点中的1和3,即具有旋转不变性的同时具有较好的抗噪能力。运算速度方面,ORB算法是SIFT算法的100倍,是SURF算法的10倍。
**ORB算法解决旋转不变性问题的思想:**
ORB算法中采用了FAST作为特征点检测算子。在SIFT算法中,梯度直方图的把第一峰值的方向设置为特征点的主方向;如果次峰值的量度达到峰值的80%,则把第二个峰值的方向也设定为主方向,该算法相对更耗时。而在ORB的方案中,特征点的主方向是通过矩(moment)计算得来。有了主方向之后,就可以依据该主方向提取Brief描述子。
**ORB算法解决对噪声敏感问题的方法:**
由于ORB算法不直接使用像素点与点之间进行比较,而是选择以该像素为中心的一个区域作为整一个比较对象,因此提高了抗噪声的能力。
**关于尺度不变性问题:**
ORB没有解决尺度不变性的问题(因为FAST本身就不具有尺度不变性)而且这类快速的特征描述子,通常都是应用在实时的视频处理中的,可以通过跟踪还有一些启发式的策略来解决尺度不变性的问题。
**相关论文下载:**
Calonder M., Lepetit V., Strecha C., Fua P.: BRIEF:Binary Robust Independent Elementary Features. ECCV 2010
[ORB: an efficient alternative to SIFT or SURF](http://www.willowgarage.com/sites/default/files/orb_final.pdf)
作为Brief的改进,ORB早在OpenCV 2.4.2版本就已经被实现出来了。在OpenCV中,ORB类继承自Feature2D类,另外有两个类:OrbFeatureDetector和OrbDescriptorExtractor,与ORB类是等价的。
**一个简单的实验:**
**ORB特征提取与匹配结果(未筛选特征点):**
![这里写图片描述](http://img.blog.csdn.net/20150719120058889)
**ORB特征提取与匹配结果(已筛选特征点):**
![这里写图片描述](http://img.blog.csdn.net/20150719120113526)
实验代码参照《OpenCV 3 编程入门》一书的例程编写。