欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

什么是ORB

发布时间:2025/7/25 编程问答 35 豆豆
生活随笔 收集整理的这篇文章主要介绍了 什么是ORB 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

FROM:http://www.cvchina.info/2011/07/04/whats-orb/

什么是ORB

2011年7月4日cvchina 发表评论阅读评论

ORB是是ORiented Brief的简称。ORB的描述在下面文章中:

Ethan Rublee and Vincent Rabaud and Kurt Konolige and Gary Bradski, ORB: an efficient 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应用的很多了,是出名的快,以防有人不知道,请看这里:

在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

分类: 新闻 标签: BRIEF, epfl, FAST, opencv2.3, orb, 特征描述子 评论 (25)Trackbacks (3)发表评论Trackback
  • gccheng 2011年7月4日10:58 | #1 回复 | 引用

    关注,希望继续跟踪更新啊

  • foelin 2011年7月4日11:14 | #2 回复 | 引用

    不完全统计了一下ICCV11和feature相关的文章
    75 CARD: Compact And Real-time Descriptors
    344 Robust Consistent Correspondence Between 3D Non-Rigid Shapes Based On “Dual Shape-DNA”
    350 Local Intensity Order Pattern for Feature Description
    929 Gradient-based learning of higher-order image features
    951 Latent Low-Rank Representation for Subspace Segmentation and Feature Extraction
    971 Speeded-up, relaxed spatial matching
    1456 Evaluation of Image Features Using a Photorealistic Virtual World
    1630 Robust Topological Features for Deformation Invariant Image Matching
    1655 RISK: Binary Robust Invariant Scalable Keypoints
    1673 ORB: an efficient alternative to SIFT or SURF

  • lootel 2011年7月4日22:34 | #3 回复 | 引用

    这个信息要关注,好像很强,要持续跟踪

  • kongxd 2011年7月5日13:11 | #4 回复 | 引用

    持续关注~~~~

  • zjucyp 2011年7月13日09:03 | #5 回复 | 引用

    用过作者的brief,的确很强大,而且实现很简单

  • zjucyp 2011年7月13日09:07 | #6 回复 | 引用

    当初看了brief之后,发现和<>的思想蛮像的,也想把fast9与brief结合一下,这样才是快快联合啊,原来作者已完成了。不过我在高清的交通视频上实验,fast9不是理想,提取的位置并不是我想要的。

  • www 2011年8月26日17:19 | #7 回复 | 引用

    07年有个论文:Fast Keypoint Recognition in Ten Lines of Code,就是叫 Fua的这帮人,Fern嘛。再有就是剑桥Tom Drummond的Multiple Target Localisation at over 100 FPS,都是这个路子

  • Noodles 2012年1月10日12:12 | #8 回复 | 引用

    http://www6.in.tum.de/Main/ResearchAgast
    比FAST还快的角点检测~

  • cvchina 2012年1月10日23:55 | #9 回复 | 引用

    有试过么?

  • Noodles 2012年1月11日16:15 | #10 回复 | 引用

    测试过了,确实快些。@cvchina

  • Noodles 2012年1月11日16:22 | #11 回复 | 引用

    粗劣的比较下:在我的机器上,测试opencv自带的 box.png图,release模式下,都进行non-maximum suppression,测试时间:
    FAST9 : 1.01025ms
    FAST10: 1.14422ms
    FAST11: 1.310358ms
    FAST12:0.951357ms

    OAST9_16: 0.450199ms
    Agast7_12d: 0.367425ms
    Agast7_12s: 0.424219ms
    Agast5_8: 0.31986ms

  • cvchina 2012年1月11日20:15 | #12 回复 | 引用

    想当牛逼。

  • cvchina 2012年1月13日10:31 | #13 回复 | 引用

    Noodles :

    粗劣的比较下:在我的机器上,测试opencv自带的 box.png图,release模式下,都进行non-maximum suppression,测试时间:
    FAST9 : 1.01025ms
    FAST10: 1.14422ms
    FAST11: 1.310358ms
    FAST12:0.951357ms

    OAST9_16: 0.450199ms
    Agast7_12d: 0.367425ms
    Agast7_12s: 0.424219ms
    Agast5_8: 0.31986ms

    Noodles, opencv的svn里面提交了对FAST的加速改进,使用了sse2. 你可以再次比较一下么?

  • Noodles 2012年1月13日17:30 | #14 回复 | 引用

    好@cvchina

  • Noodles 2012年1月16日11:39 | #15 回复 | 引用

    @cvchina
    同样的条件:opencv 最新的FAST角点检测实时性能:
    FAST : 0.554308ms

  • Noodles 2012年1月16日11:41 | #16 回复 | 引用

    之前的opencv2.3.1为:2.22326ms

  • 乌贼大王 2012年2月12日22:37 | #17 回复 | 引用

    粗看了下,也是点对特征。这个和随机森林随机蕨算法的区别作者能介绍下吗?
    另外,这个的算法对内存的需求怎么样?

  • cvchina 2012年2月12日22:45 | #18 回复 | 引用

    Ferns存储的实际上一个多类分类器吧,并没有一个显示的描述子,而且对内存要求很高。
    Orb每个特征点只需32Byte,可以说非常小了。

  • isis 2012年10月18日17:55 | #19 回复 | 引用

    Agast的源代码是linux平台的么?

  • 匿名 2013年2月28日11:22 | #20 回复 | 引用

    这些时间是指纯检测的时间,还是也包括load图像等其它操作的时间@Noodles

  • lazydao 2013年8月30日10:29 | #21 回复 | 引用

    “但是由此带来的问题是,由于主方向会发生变化,随机点对的相关性会比较大,从而降低描述子的判别性。”
    博主可以帮忙解释下这句话的意思么,看不懂啊~

  • 千里之行 2013年12月19日19:41 | #22 回复 | 引用

    按照博主的博客来说的话,那个ORB是在BRIEF的基础上进行的改进吗?还有博文中在ORB部分提到了启发式策略改进,我想知道您说的这个启发式究竟是什么意思?期待您的答复,谢谢!

  • Robotic Neuron 2014年11月26日16:41 | #23 回复 | 引用

    这写的也太简单扼要了~~~

  • 匿名 2015年2月3日15:28 | #24 回复 | 引用

    匹配对是5*5吧 我看论文上这么写的 ?

  • 匿名 2015年2月4日15:13 | #25 回复 | 引用

    Noodles :
    好@cvchina


  • 总结

    以上是生活随笔为你收集整理的什么是ORB的全部内容,希望文章能够帮你解决所遇到的问题。

    如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。