ORB特征
来源:互联网 发布:python getattr 编辑:程序博客网 时间:2024/04/29 21:08
什么是ORB
ORB是是ORiented Brief的简称。ORB的描述在下面文章中:
Ethan Rublee and Vincent Rabaud and Kurt Konolige and Gary Bradski, ORB: an efcient alternative to SIFT or SURF, ICCV 2011
没有加上链接是因为作者确实还没有放出论文,不过OpenCV2.3RC中已经有了实现,WillowGarage有一个talk也提到了这个算法,因此我不揣浅陋,在这里总结一下。
Brief是Binary Robust Independent Elementary Features的缩写。这个特征描述子是由EPFL的Calonder在ECCV2010上提出的。主要思路就是在特征点附近随机选取若干点对,将这些点对的灰度值的大小,组合成一个二进制串,并将这个二进制串作为该特征点的特征描述子。详细算法描述参考如下论文:
Calonder M., Lepetit V., Strecha C., Fua P.: BRIEF: Binary Robust Independent Elementary Features. ECCV 2010
注意在BRIEF eccv2010的文章中,BRIEF描述子中的每一位是由随机选取的两个像素点做二进制比较得来的。文章同样提到,在此之前,需要选取合适的gaussian kernel对图像做平滑处理。(为什么要强调这一点,因为下述的ORB对此作了改进。)
BRIEF的优点在于速度,缺点也相当明显:
1:不具备旋转不变性。
2:对噪声敏感
3:不具备尺度不变性。
ORB就是试图解决上述缺点中的1和2.
如何解决旋转不变性:
在ORB的方案中,是采用了FAST作为特征点检测算子。FAST应用的很多了,是出名的快,以防有人不知道,请看这里(源链接失效,another):
在Sift的方案中,特征点的主方向是由梯度直方图的最大值和次大值所在的bin对应的方向决定的。略嫌耗时。
在ORB的方案中,特征点的主方向是通过矩(moment)计算而来,公式如下:
有了主方向之后,就可以依据该主方向提取BRIEF描述子。但是由此带来的问题是,由于主方向会发生变化,随机点对的相关性会比较大,从而降低描述子的判别性。解决方案也很直接,采取贪婪的,穷举的方法,暴力找到相关性较低的随机点对。
如何解决对噪声敏感的问题:
在前面提到过,在最早的eccv2010的文章中,BRIEF使用的是pixel跟pixel的大小来构造描述子的每一个bit。这样的后果就是对噪声敏感。因此,在ORB的方案中,做了这样的改进,不再使用pixel-pair,而是使用9×9的patch-pair,也就是说,对比patch的像素值之和。(可以通过积分图快速计算)。
关于尺度不变性:
ORB没有试图解决尺度不变性,(因为FAST本身就不具有尺度不变性。)但是这样只求速度的特征描述子,一般都是应用在实时的视频处理中的,这样的话就可以通过跟踪还有一些启发式的策略来解决尺度不变性的问题。
关于计算速度:
ORB是sift的100倍,是surf的10倍。
关于性能:
下面是一个性能对比,ORB还是很给力。点击看大图。
参考Slides
Related posts
- ORB特征
- ORB特征
- ORB特征
- ORB特征
- ORB特征
- orb-slam中的orb特征
- ORB特征 学习笔记
- orb特征提取
- ORB特征点检测
- ORB特征点检测
- ORB特征点检测
- ORB特征点检测
- ORB特征点检测
- ORB特征原理
- 特征提取算法--ORB
- ORB特征点检测
- ORB特征点检测
- ORB特征检测
- Socket网络编程TCP、UDP示例
- nginx+php-fpm关于php.ini的文件
- 50 Android Hacks Hack7 在canvas上绘制动画
- OTG驱动分析(二)
- 以jquery插件形式获取json数据实现级联
- ORB特征
- svn常用命令
- android provider 中关于Cursor的一个问题
- Caffe + Ubuntu 14.04 64bit + CUDA 6.5 配置说明
- 软考进行时——伪代码中的约定
- PowerShell学习入门 - 5 (文件压缩与解压缩)
- 反射应用实例--根据map中的值创建对应并调用set方法给域赋值
- contentOffset,contentInset属性含义u
- AOI设备带动机器视觉行业快速发展