转载地址:https://blog.csdn.net/vonzhoufz/article/details/46461849

主要的特征检测方法有以下几种,在一般的图像处理库中(如opencv, VLFeat, Boofcv等)都会实现。

这里主要关注SIFT,SURF,FAST,ORB的对比。

Image NO SIFT SURF ORB FAST
0 2414 4126 500 11978
1 4295 8129 500 16763
2 3404 4784 500 16191
3 1639 2802 500 7166
4 1510 1484 497 29562
5 10572 8309 500 720
6 191 187 295 16125
7 3352 4706 500 567
8 165 403 374 26701
9 4899 7523 500 12780
10 1979 4212 500 10676
11 3599 3294 500 663
12 163 168 287 7923
13 1884 2413 500 11681
14 2509 5055 500 18097
15 9177 4773 500 7224
16 3332 3217 500 20502
17 5446 6611 500 16553
18 4592 6033 500 706
19 266 509 459 9613
20 2087 2786 500 7459
21 2582 3651 500 12147
22 2509 4237 500 14890
23 1236 4545 500 6473
24 1311 2606 500 4293
25 237 387 500 657
26 968 1418 488 6609
Time Cost 21.52 17.4 0.97 0.25

可以看到FAST提取了大量的特征点,在计算时间上,比SIFT SURF快两个数量级,ORB在FAST基础上得来的,特征点的质量比较高!

下面通过通过两张图片来看这几个算法匹配的效果,1639-1311-697表示图片1,2分别提取了1639,1311个keypoints,其中匹配的有697个。

Image pair SIFT SURF ORB FAST(SURF)
eiffel-1.jpg,eiffel-13.jpg 1639-1311-697 2802-2606-1243 500-500-251 1196-1105-586

接下来是eiffel-1.jpg,eiffel-13.jpg 俩图片通过不同算法进行匹配的结果示意图。

SIFT



SURF



ORB



FAST

需要注意的地方:

* 链接的时候加上pkg-config opencv --cflags --libs可以加入所有opencv的库

* SIFT,SURF是nonfree的,使用的时候需要方法initModule_nonfree(),需要头文件opencv2/nonfree/nonfree.hpp

* FAST只是检测角点,要结合其他extractor如ORB,SIFT.

参考:

1.opencv feature2d

2.Feature Detection and Description

[转]SIFT,SURF,ORB,FAST 特征提取算法比较的更多相关文章

  1. opencv中的SIFT,SURF,ORB,FAST 特征描叙算子比较

    opencv中的SIFT,SURF,ORB,FAST 特征描叙算子比较 参考: http://wenku.baidu.com/link?url=1aDYAJBCrrK-uk2w3sSNai7h52x_ ...

  2. 第十三节、SURF特征提取算法

    上一节我们已经介绍了SIFT算法,SIFT算法对旋转.尺度缩放.亮度变化等保持不变性,对视角变换.仿射变化.噪声也保持一定程度的稳定性,是一种非常优秀的局部特征描述算法.但是其实时性相对不高. SUR ...

  3. SIFT 特征提取算法总结

    原文链接:http://www.cnblogs.com/cfantaisie/archive/2011/06/14/2080917.html   主要步骤 1).尺度空间的生成: 2).检测尺度空间极 ...

  4. opencv3.0中contrib模块的添加+实现SIFT/SURF算法

    平台:win10 x64 +VS 2015专业版 +opencv-3.x.+CMake+Anaconda3(python3.7.0) Issue说明:Opencv3.0版本已经发布了有一段时间,在这段 ...

  5. 特征提取算法(3)——SIFT特征提取算子

    目录: 前言 1.高斯尺度空间GSS 2.高斯差分DOG 用DoG检测特征点 GSS尺度选择 3.图像金字塔建立 用前一个octave中的倒数第三幅图像生成下一octave中的第一幅图像 每层octa ...

  6. 【特征检测】BRISK特征提取算法

    [特征检测]BRISK特征提取算法原创hujingshuang 发布于2015-07-24 22:59:21 阅读数 17840 收藏展开简介        BRISK算法是2011年ICCV上< ...

  7. OPENCV图像特征点检测与FAST检测算法

    前面描述角点检测的时候说到,角点其实也是一种图像特征点,对于一张图像来说,特征点分为三种形式包括边缘,焦点和斑点,在OPENCV中,加上角点检测,总共提供了以下的图像特征点检测方法 FAST SURF ...

  8. 模式匹配之常见匹配算法---SIFT/SURF、haar特征、广义hough变换的特性对比分析

    识别算法概述: SIFT/SURF基于灰度图, 一.首先建立图像金字塔,形成三维的图像空间,通过Hessian矩阵获取每一层的局部极大值,然后进行在极值点周围26个点进行NMS,从而得到粗略的特征点, ...

  9. linux/ubuntu下最简单好用的python opencv安装教程 ( 解决 imshow, SIFT, SURF, CSRT使用问题)

    希望这篇文章能彻底帮你解决python opencv安装和使用中的常见问题. 懒人请直奔这一节, 一条命令安装 opencv 使用python-opencv常用的问题 在linux中使用python版 ...

随机推荐

  1. shell (颜色输出)

    摘自https://www.cnblogs.com/t-road/p/10257296.html #!/bin/bash # #下面是字体输出颜色及终端格式控制 #字体色范围:30-37 echo - ...

  2. xss原理及简单介绍

    XSS简单介绍-Web攻击 一 ·基础介绍 xss表示Cross Site Scripting(跨站脚本攻击),它与SQL注入攻击类似,SQL注入攻击中以SQL语句作为用户输入,从而达到查询/修改/删 ...

  3. git submodule添加、更新和删除

    添加 git submodule add <url> <path> url:替换为自己要引入的子模块仓库地址 path:要存放的本地路径 执行添加命令成功后,可以在当前路径中看 ...

  4. Python 字符串指定位置替换字符

    指定位置替换字符 def replace_char(old_string, char, index): ''' 字符串按索引位置替换字符 ''' old_string = str(old_string ...

  5. Codeforces Round #631 (Div. 2)

    Contest Info Practice Link Solved A B C D E F 4/6 O O Ø       O 在比赛中通过 Ø 赛后通过 ! 尝试了但是失败了 - 没有尝试 Solu ...

  6. 【noi 2.6_9275】&【bzoj 3398】Bullcow(DP){Usaco2009 Feb}

    题意:一共有N只牡牛(公牛)和牝牛(母牛),每2只牡牛间至少要有K只牝牛才不会斗殴.问无斗殴发生的方案数. 解法:f[i][j]表示一共i只牛,最后一只是j(0为牝牛,1为牡牛)的方案数.f[i][0 ...

  7. UVA-257 哈希算法

    UVA-257 题意: 给你很多串,你需要找到这个串内有没有两个长度大于3的回文字符串,且要保证这两个回文字符串不相同,也不能完全覆盖,但可以重合一部分 题解: 首先判断回文的话可以通过马拉车算法(M ...

  8. Spring Cloud实战 | 第十一篇:Spring Cloud Gateway 网关实现对RESTful接口权限控制和按钮权限控制

    一. 前言 hi,大家好,这应该是农历年前的关于开源项目 的最后一篇文章了. 有来商城 是基于 Spring Cloud OAuth2 + Spring Cloud Gateway + JWT实现的统 ...

  9. ansible的Ad-hoc命令

    本文主要介绍了ansible的Ad-hoc命令. Ansible提供两种方式去完成任务,一是 ad-hoc 命令,一是写 Ansible playbook.前者可以解决一些简单的任务, 后者解决较复杂 ...

  10. docker-理论题01

    1.什么是docker?答:docker是开源的应用容器引擎:开发人员把他们的应用及依赖包打包发布到容器当中. 2.docker和VMware的区别? 答:docker是半解耦,VMware是解耦:d ...