特征描述符的比较

关于OpenCV的学习,敬请关注专栏: 一步步学习OpenCV2


=================分割线=================


原文发布时间:2011年1月28日

原文地址:https://computer-vision-talks.com/post/2011-01-28-comparison-of-feature-descriptors/

=================以下是对原文翻译部分=================


大家好!今天,我们有非常有趣的话题!我们将检查不同的特征描述符提取器。从这篇文章中,你将会知道SURF是多么的强大,缺点是有几个描述符,LAZY描述符比SURF要快多少倍。PS:如果您指出我的良好实现(C / C ++)RIFF,PCA SIFT,GLOH,LESH描述符,我将非常感激。我将把它们包含在测试套件中。所以,今天我们的豚鼠是:

  • SURF(OpenCV实现)
  • 简介(OpenCV实现)
  • SIFT(OpenCV实现)排除在测试之外 - 极其缓慢
  • LAZY(自己实施) 

五项测试:旋转,缩放,亮度变化,模糊和性能基准。这些测试应该给我们关于特征描述符的旋转,缩放和光照不变性的信息,并且也描述总描述符鲁棒性。性能基准将显示多少昂贵的描述符提取。

测试描述

在所有测试中,我使用单参考图像:



我非常喜欢这个形象。它有大量的类似的地区,在汽车上的思考,这只是很好:)。对于功能检测,我将使用OpenCV中的SurfFeatureDetector进行默认设置。在所有的测试中,我使用非常类似的程序

  1. 生成一组转换后的图像
  2. 检测每个图像上的特征并提取描述符
  3. 使用来自参考框架的描述符匹配描述符。对于匹配,我使用OpenCV中的flann匹配器(匹配参数描述符与转换,反之亦然,并返回它们的交集)
  4. 使用RANSAC(cv :: FindFundamentalMat)来过滤错误的匹配。
  5. 因此,我返回(内线数)/(总比赛)百分比。

旋转测试将对这个图像进行仿射旋转,以360度为中心,以1度为步进。缩放测试将使用比例因子在[0.25..2.25]范围内调整图像大小。照明测试将会改变图像中每个像素在[-100..100]范围内的图像亮度。模糊测试将使用不同内核大小的高斯模糊来平滑图像[1..21]。**性能测试**将根据参考图像测量[1..N]描述符的描述符提取时间。

结果


正如所料,SURF和LAZY表现出良好的旋转不变行为。简介是一个不旋转不变的描述符,因为它只是一个图像补丁。



在缩放测试中,SURF和LAZY表现出非常相似的结果 - 是的,BRIEF不是尺度不变的。局部极值区域可以解释为调整大小的副作用。



在照明测试中,所有描述符显示出良好的结果 可能是因为所有的描述符都被标准化了。



对模糊图像非常敏感(请记住 - 这只是一个补丁)。LAZY和SURF显示几乎相同的结果。

性能



由于简要描述符的非常微不足道的性质,它显示了最好的性能。LAZY描述符的提取速度也非常快,因为SURF并不使用大量计算。我无法解释SURF描述符提取时间的二次增长。可能是由OpenCV中的非最佳实现引起的。

结论

我们的研究LAZY描述符提供了几乎相同的SURF质量,但速度至少提高了2倍。但是研究还没有完成,所以我预期性能提升10-30%,质量略有提高(或许会在某个时候击败SURF)。

进一步的工作

在不久的将来,我会将PCA SIFT和RIFF描述符实现添加到所有测试中,并在其他测试图像上进行测试。

==============================END===============================




猜你喜欢

转载自blog.csdn.net/sinat_36264666/article/details/78898490