ORB(ORiented Brief)特征提取算法,其前身Brief,是由EPFL的Calonder在ECCV2010上提出了一种可以快速计算且表达方式为二进制编码的描述子,主要思路就是在特征点附近随机选取若干点对,将这些点对的灰度值的大小,组合成一个二进制串,并将这个二进制串作为该特征点的特征描述子。BRIEF最大的优点在于速度快,然而其缺点也相当明显,主要有以下几方面:
- 不具有旋转不变性;
- 不具有尺度不变性;
- 对抗噪声性能差。
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
作为Brief的改进,ORB早在OpenCV 2.4.2版本就已经被实现出来了。在OpenCV中,ORB类继承自Feature2D类,另外有两个类:OrbFeatureDetector和OrbDescriptorExtractor,与ORB类是等价的。
一个简单的实验:
ORB特征提取与匹配结果(未筛选特征点):
ORB特征提取与匹配结果(已筛选特征点):
实验代码参照《OpenCV 3 编程入门》一书的例程编写。
版权声明:本文为博主原创文章,未经博主允许不得转载。