共同点:

SIFT/SURF为了实现不同图像中相同场景的匹配,主要包括三个步骤:

1、尺度空间的建立;

2、特征点的提取;

3、利用特征点周围邻域的信息生成特征描述子

4、特征点匹配

从博客上看到一片文章,http://blog.csdn.net/cy513/archive/2009/08/05/4414352.aspx,这一段的大部分内容源于这篇文章,推荐大家去看看。

如果两幅图像中的物体一般只是旋转和缩放的关系,加上图像的亮度及对比度的不同,要在这些条件下要实现物体之间的匹配,SIFT算法的先驱及其发明者想到只要找到多于三对物体间的匹配点就可以通过射影几何的理论建立它们的一一对应。

如何找到这样的匹配点呢?SIFT/SURF作者的想法是首先找到图像中的一些“稳定点”,这些点是一些特殊的点,不会因为视角的改变、光照的变化、噪音的干扰而消失,比如角点、边缘点、暗区域的亮点以及亮区域的暗点。这样如果两幅图像中有相同的景物,那么这些稳定点就会在两幅图像的相同景物上同时出现,这样就能实现匹配。因此,SIFT/SURF算法的基础是稳定点。

SIFT/SURF提取的稳定点,首先都要求是局部极值。但是,当两个物体的大小比例不一样时,大图像的局部极值点在小图像的对应位置上有可能不是极值点。于是SIFT/SURF都采用图像金字塔的方法,每一个截面与原图像相似,这样两个金字塔中就有可能包含大小最近似的两个截面了。

这样找到的特征点会比较多,经过一些处理后滤掉一些相对不稳定的点。

接下来如何去匹配相同物体上对应的点呢?SIFT/SURF的作者都想到以特征点为中心,在周围邻域内统计特征,将特征附加到稳定点上,生成特征描述子。在遇到旋转的情况下,作者们都决定找出一个主方向,然后以这个方向为参考坐标进行后面的特征统计,就解决了旋转的问题。

共同的大问题有以下几个:

1、为什么选用高斯金字塔来作特征提取?

为什么是DOG的金字塔?因为它接近LOG,而LOG的极值点提供了最稳定的特征,而且DOG方便计算(只要做减法。)

为什么LOG的极值点提供的特征最稳定,有参考文献,未看。

但是直观上怎么理解?如果相邻Octave的sigma不是两倍关系还好理解:如果两幅图像只是缩放的关系,那么假设第一个Octave找到了小一倍图像的极值点,那么大一倍图像的极值点会在下一个Octave找到相似的。但是现在,如果把大一倍图像进行一次下采样(这样和小的图像就完全一样了),进行Gauss滤波时,两个图像滤波系数(sigma)是不一样的,不就找不到一样的极值点了么?不理解。

2、Hessian矩阵为什么能用来筛选极值点?

SIFT先利用非极大抑制,再用到Hessian矩阵进行滤除。SURF先用Hessian矩阵,再进行非极大抑制。SURF的顺序可以加快筛选速度么?(Hessian矩阵滤除的点更多?)

3、为什么采用梯度特征作为局部不变特征?

这与人的视觉神经相关。采用梯度作为描述子的原因是,人的视觉皮层上的神经元对特定方向和空间频率的梯度相应很敏感,经过SIFT作者的一些实验验证,用梯度的方法进行匹配效果很好。

4、为什么可以采用某些特征点的局部不变特征进行整幅图像的匹配?

我在一份博客上找到这样一句话:(http://apps.hi.baidu.com/share/detail/32318290,大家可以看看这篇文章。)

从直观的人类视觉印象来看,人类视觉对物体的描述也是局部化的,基于局部不变特征的图像识别方法十分接近于人类视觉机理,通过局部化的特征组合,形成对目标物体的整体印象,这就为局部不变特征提取方法提供了生物学上的解释,因此局部不变特征也得到了广泛应用。

还有:

图像中的每个局部区域的重要性和影响范围并非同等重要,即特征不是同等显著的,其主要理论来源是Marr的计算机视觉理论和Treisman的特征整合理论,一般也称为“原子论”。该理论认为视觉的过程开始于对物体的特征性质和简单组成部分的分析,是从局部性质到大范围性质。

SIFT/SURF都是对特征点的局部区域的描述,这些特征点应该是影响重要的点,对这些点的分析更加重要。所以在局部不变特征的提取和描述时也遵循与人眼视觉注意选择原理相类似的机制,所以SIFT/SURF用于匹配有效果。

不同点的比较:

从博客上看到一个总结,我修改了一些内容。大家可以参看以下链接:

http://blog.csdn.net/ijuliet/archive/2009/10/07/4640624.aspx

SIFT

SURF

尺度空间

DOG与不同尺度的图片卷积

不同尺度的box filters与原图片卷积

特征点检测

先进行非极大抑制,再去除低对比度的点。再通过Hessian矩阵去除边缘的点

先利用Hessian矩阵确定候选点,然后进行非极大抑制

方向

在正方形区域内统计梯度的幅值的直方图,找max对应的方向。可以有多个方向。

在圆形区域内,计算各个扇形范围内x、y方向的haar小波响应,找模最大的扇形方向

特征描述子

16*16的采样点划分为4*4的区域,计算每个区域的采样点的梯度方向和幅值,统计成8bin直方图,一共4*4*8=128维

20*20s的区域划分为4*4的子区域,每个子区域找5*5个采样点,计算采样点的haar小波响应,记录∑dx, ∑dy, ∑|dx|,∑|dy|,一共4*4*4=64维

性能的比较:

论文:A comparison of SIFT, PCA-SIFT and SURF 对三种方法给出了性能上的比较,源图片来源于Graffiti dataset,对原图像进行尺度、旋转、模糊、亮度变化、仿射变换等变化后,再与原图像进行匹配,统计匹配的效果。效果以可重复出现性为评价指标。

比较的结果如下:

method

Time

Scale

Rotation

Blur

Illumination

Affine

Sift

common

best

best

common

common

good

Pca-sift

good

good

good

best

good

best

Surf

best

common

common

good

best

good

由此可见,SIFT在尺度和旋转变换的情况下效果最好,SURF在亮度变化下匹配效果最好,在模糊方面优于SIFT,而尺度和旋转的变化不及SIFT,旋转不变上比SIFT差很多。速度上看,SURF是SIFT速度的3倍。

SURF与SIFT比较相关推荐

  1. SURF与SIFT比较分析

    opencv3.2 SURF实现特征点匹配 opencv3.2中SurfFeatureDetector.SurfDescriptorExtractor.BruteForceMatcher这三个的使用方 ...

  2. SURF 与 SIFT的共同点与区别

    共同点: SIFT/SURF为了实现不同图像中相同场景的匹配,主要包括三个步骤: 1.尺度空间的建立: 2.特征点的提取: 3.利用特征点周围邻域的信息生成特征描述子 4.特征点匹配. 从博客上看到一 ...

  3. ORB、SURF、SIFT特征点提取方法和ICP匹配方法

    在进行编译视觉SLAM时,书中提到了ORB.SURF.SIFT提取方法,以及特征提取方法暴力匹配(Brute-Force Matcher)和快速近邻匹配(FLANN).以及7.9讲述的3D-3D:迭代 ...

  4. surf和sift算法被申请专利后部分opencv版本无法使用后的安装pycharm+opencv使用surf和sift算法教程

    安装pycharm+opencv教程使用surf和sift算法 surf和sift算法在pycharm中的问题 安装过程 使用的软件版本 安装步骤 一.pycharm的安装 二.尝试打开pycharm ...

  5. OpenCV用FAST、SURF、SIFT、BRISK、ORB等进行特征点提取与匹配

    特征检测属于 opencv_contrib 库,在编译 OpenCV 时包含了附加模块才能使用,具体如何编译这里就不再作说明了 一.创建检测器 首先读取要建立提取特征的图像与存放特征点的数组 cv:: ...

  6. Surf和SIFT特征对比总结

  7. SURF算法与SIFT算法的性能比较——图像特征点检测与提取算法分析

    图像特征点提取算法的算法研究(SURF和SIFT算法) 1. 摘要 计算机视觉中,很大一部分研究集中在图像特征提取和特征生成算法上.对图像的优化,不同于一般数学问题的优化方法,图像的优化是对像素点,在 ...

  8. SIFT和SURF的替换算法——ORB (Oriented FAST and Rotated BRIEF 快速定向和旋转)

    SIFT和SURF的替代算法--ORB (Oriented FAST and Rotated BRIEF 快速定向和旋转 1. 效果图 2. 源码 参考 1. 用于关键点检测和描述的SIFT(Scal ...

  9. 机器视觉特征提取:HOG、SIFT、SURF、ORB、LBP、HAAR

    来源:机器学习AI算法工程 本文约6200字,建议阅读10+分钟 本文为你介绍不同的机器视觉特征提取方法及其区别. 目录 一.SIFT(尺度不变特征变换) 二.HOG(方向梯度直方图) 三.SIFT和 ...

最新文章

  1. 刚出炉!程序员人才补贴:单项目最高补贴1000万元
  2. 用C#实现RSS的生成和解析,支持RSS2.0和Atom格式
  3. Java Spring Data Redis实战与配置参数详解 application.properties...
  4. 2016/09/16面试资料汇总
  5. AE CreateFeatureClass 创建shp. 删除shp. 向shp中添加要素
  6. pytorch dropout_PyTorch初探MNIST数据集
  7. 《在你彷徨时候,总有人在前行》
  8. 重拾Java Network Programming(一)IO流
  9. html去空格函数,trimleft_js trim函数 js去空格函数与正则
  10. 桌面计算机主流硬盘接口,M.2和U.2谁更好?主流硬盘接口大扫盲
  11. 分块矩阵的逆矩阵的公式记忆方法
  12. Togaf业务架构-《企业级业务架构设计方法论与实践》解读
  13. cpptraj对于轨迹的浓缩
  14. 用一个开关,控制LEP灯的亮和灭
  15. 飞机下滑波束导引系统设计
  16. dell管理工具OMSA
  17. 关于自动化安装离线补丁包更新
  18. STM32嵌入式FLASH擦除与写入
  19. react视频播放组件Griffith的基本使用
  20. 求整数1-100的累加值,要求跳过所有个位为3的数

热门文章

  1. 中国金融科技50强之“财付通”第三方支付体系
  2. [学习笔记]设计模式之Command
  3. 古代名句精选 version 2
  4. EasyDSS高性能RTMP、HLS(m3u8)、HTTP-FLV、RTSP流媒体服务器前端源码重构(四)- webpack + video.js 打造流媒体服务器前端
  5. D15 企业网三层架构和VLAN
  6. TensorFlow中ModuleNotFoundError: No module named ‘xxx‘解决方案
  7. python随机生成密码字符串_Python随机生成带特殊字符的密码
  8. FANUC机器人的连续回转功能使用说明
  9. WIN 10 未关闭浏览器的情况下关机,再次开机Windows会自动打开浏览器并打开上次的网页修复方法
  10. 巧用CSS3之进击的青豆