官网参见https://docs.opencv.org/3.4.1/d1/d89/tutorial_py_orb.html
ORB采取FAST算法检测特征点,采取BRIEF算法计算特征点描述子
其所解决的问题是SIFT特征的高昂计算代价,以及BRIEF特征本身具有的缺乏旋转不变性、尺度不变性以及对噪声敏感的弱点。
作者基于FAST和BRIEF特征提出的二值特征串(0,1)在时间上比SIFT快100倍,比SURF快10倍,并且匹配效果也很好。
作为一个opencv爱好者,ORB最重要的是它来自“opencv实验室”。ORB算法是在2011年由Ethan Rublee, Vincent Rabaud, Kurt Konolige和Gary R. Bradski在《ORB: An efficient alternative to SIFT or SURF》一文中提出。它是在计算开销和匹配性能方面对SIFT和SURF算法很好的替代品。更为重要的是,使用SIFT和SURF需要支付专利费用,但是ORB算法不需要。
ORB基本上就是FAST关键点检测和BRIEF关键点描述器的结合体,并且还有还多改进以增强性能。首先它用FAST算法检测到关键点,然后应用Harris角点检测发现其中前N个点。它还使用金字塔来多尺度提取FAST特征(得到的特征具备尺度不变性)。但是有一个问题,FAST算法不计算方向。那如何实现旋转不变性呢?作者做了以下修改。
它计算(FAST检测到的)角点所在小块(patch)区域的灰度加权质心。从角点到质心的矢量方向给出了方向。为了提高旋转不变性,要计算以角点为中心半径为 r 的圆形区域的矩,再根据矩计算除方向(这段并非官网原文,摘自网上)。
现在是描述符了,ORB使用BRIEF描述符。但是我们已经知道BRIEF是旋转不稳定