ORB算法分析(草稿)
2016-04-26 15:53
239 查看
ORB算法的论文来自”ORB: an efficient alternative to SIFT or SURF”,作者是OpenCV维护和开发的公司willowgarage的,论文名字起的很牛气,摘要里说,ORB算法比sift算法效率高两个数量级。江湖上流传的说法是ORB算法综合性能在各种测评里是最好的。
ORB算法是在FAST关键点检测+BRIEF特征上做的。
假设给定一副图。
论文第3节:先用oFAST算法,检测关键点的位置。所谓oFAST,就是orientation的FAST,增加了计算关键点的角点方向。
2. 对这个图,用FAST算法,找出关键点的位置。
3. 对于关键点,用Harris角点检测,选取前N个最好的点。
4. FAST算法不能处理多尺度图像,如果需要处理多尺度的话,就对原来的图像作金字塔,然后对每个图都进行步骤2和3的处理。
5. 对于每个角点,根据Intensity Centroid算法,计算角点的方向。
论文第4节:rBRIEF,旋转敏感的BRIEF,Rotation-Aware Brief
6. brief算法是无向的。
7. 将5中计算出来的角点方向作为brief的方向,进行旋转,就得到了有向的brief,也就是steered brief。steered brief导致区分性能有所下降。这一块,作者在4.2节中说,brief特征的每个bit的值或者是0,或者是1,因此均值是0.5,variance大。从图3可以看出,brief特征的均值在0很多,距离均值0.5比较远,而steered brief特征,加入角点的方向之后,特征均值的分布就比较平均了,也就是说,相对均值0.5来说,variance变小了。variance越大,区分性能越好,这很好理解,差异性越大,表明特征之间的差别越大,越好分类,如果都特征都差不多,接近均值,就不好分了。因此,steered brief的性能肯定不如brief。那么,为什么呢steered brief会导致variance变小呢,也许是图像的角点的方向,在统计学上存在某种性质使得variance变小。另一个是特征之间的相关性。对brief和steered brief作pca,它们的主要能量都在前10~15个主成份上。
用一种贪婪学习算法筛选具有高variance和高不相关的steered brief,结果称之为rBRIEF。
ORB特征,就是oFAST和rBRIEF的组合。
在我看来,ORB论文并没有对算法做一个严密的流程设计,算法的参数选择,多尺度,提取特征的细节过程,匹配特征策略等等。如果从头实现代码,还有很多需要考虑的地方,有鉴与此,也许不同的实现会带来不同的性能上差别。实现ORB算法的时候,要实现相关的算法,FAST, Harris角点,Intensity Centroid,BRIEF等等,涉及的还是比较多的,性能非常诱人,非常期望能有好的开源实现可以发布。
ORB算法是在FAST关键点检测+BRIEF特征上做的。
假设给定一副图。
论文第3节:先用oFAST算法,检测关键点的位置。所谓oFAST,就是orientation的FAST,增加了计算关键点的角点方向。
2. 对这个图,用FAST算法,找出关键点的位置。
3. 对于关键点,用Harris角点检测,选取前N个最好的点。
4. FAST算法不能处理多尺度图像,如果需要处理多尺度的话,就对原来的图像作金字塔,然后对每个图都进行步骤2和3的处理。
5. 对于每个角点,根据Intensity Centroid算法,计算角点的方向。
论文第4节:rBRIEF,旋转敏感的BRIEF,Rotation-Aware Brief
6. brief算法是无向的。
7. 将5中计算出来的角点方向作为brief的方向,进行旋转,就得到了有向的brief,也就是steered brief。steered brief导致区分性能有所下降。这一块,作者在4.2节中说,brief特征的每个bit的值或者是0,或者是1,因此均值是0.5,variance大。从图3可以看出,brief特征的均值在0很多,距离均值0.5比较远,而steered brief特征,加入角点的方向之后,特征均值的分布就比较平均了,也就是说,相对均值0.5来说,variance变小了。variance越大,区分性能越好,这很好理解,差异性越大,表明特征之间的差别越大,越好分类,如果都特征都差不多,接近均值,就不好分了。因此,steered brief的性能肯定不如brief。那么,为什么呢steered brief会导致variance变小呢,也许是图像的角点的方向,在统计学上存在某种性质使得variance变小。另一个是特征之间的相关性。对brief和steered brief作pca,它们的主要能量都在前10~15个主成份上。
用一种贪婪学习算法筛选具有高variance和高不相关的steered brief,结果称之为rBRIEF。
ORB特征,就是oFAST和rBRIEF的组合。
在我看来,ORB论文并没有对算法做一个严密的流程设计,算法的参数选择,多尺度,提取特征的细节过程,匹配特征策略等等。如果从头实现代码,还有很多需要考虑的地方,有鉴与此,也许不同的实现会带来不同的性能上差别。实现ORB算法的时候,要实现相关的算法,FAST, Harris角点,Intensity Centroid,BRIEF等等,涉及的还是比较多的,性能非常诱人,非常期望能有好的开源实现可以发布。
相关文章推荐
- File java的文件重命名
- 第二个面试整理
- UIView 动画
- A Simple Problem with Integers(100棵树状数组)
- int转string
- C/C++复习:字符串的逆序输出(结合字符串的长度)
- HDU-5673-Robot(卡特兰数+逆元 / 默慈金数)
- Android MVP 模式的使用
- 《剑指offer》java实现 输入n个数,找到其中最小的K个数
- 读书时间《JavaScript高级程序设计》五:DOM
- Android 调用系统联系人界面的添加联系人,添加已有联系人,编辑和修改。
- TFS客户端登录用户修改
- c++实验4-百钱百鸡问题
- Memcached 及 Redis 架构分析和比较
- 使用pip安装tensorflow 0.80,python 使用tensorflow 0.80遇到的问题及处理方法
- FreeMarker在使用#include和#import时,路径问题
- 【杭电-oj】-4505-小Q系列故事——电梯里的爱情
- Maven学习总结(二)——Maven项目构建过程练习
- python_笔记9_条件过滤
- JAVA使用JDBC批量插入SQL