SIFT的步骤如下:

(1) 尺度空间极值检测(Scale-space Extrema Detection)
也就是在多尺度高斯差分(Difference of Gauss)空间中检测极值点(3x3x3 区域极值),
作为候选的关键点(Potential keypoints)。 (2) 定位关键点(Keypoint Localization),舍弃低对比度关键点和高边缘响应的关键点。
确定候选关键点后,使用泰勒级数展开来精确定位极值点。舍弃亮度值较低(对比度较低)的极值点。
同时由于DoG空间是差分空间,对边缘有较高响应的同时也对噪声敏感。因此使用 2x2 的
Hassian 矩阵计算其特征值的比率,舍弃比值较大的极值点。 (3) 方向赋值(Orientation Assignment)
在关键点周围一定区域内计算梯度方向和幅度累计直方图。使用高斯窗函数(sigma=1.5 x Scale)加权。
取所有 bin 峰值大于最大值 80% 的峰的朝向作为关键点的方向。
(也就是说,可能存在同一尺度空间同一位置不同朝向的关键点们)。 (4) 构建关键点描述子(Keypoint descriptor)
取关键点周围 16x16 的邻域,划分为 16 个 4x4 的子块,每个子块构建 8 方向 朝向直方图,
构成 16 x 8 = 128 维度特征向量。 (5) 关键点匹配(Keypoint matching)和测试
对场景图和目标物体图都提取 SIFT 关键点,然后使用 KNN 以计算匹配最匹配的两个点。
如果到最匹配距离和到次匹配距离之间比值大于一定阈值(如0.9)则说明是噪声点,舍弃。 (6) 获取仿射变换矩阵,几何变换查找物体
从获取到的匹配关键点对使用随机抽样一致性(RANSAC, Random Sample consensus algorithm)
计算放射变换矩阵,然后变换后即可获取带查找目标在场景图中的位置。

SIFT特征点检测与匹配的更多相关文章

  1. SIFT特征点检测学习一(转载)

    新手上路,先转载学习tornadomeet的博客:http://www.cnblogs.com/tornadomeet/archive/2012/08/16/2643168.html 特征点检测学习_ ...

  2. Surf算法特征点检测与匹配

    Speeded Up Robust Features(SURF,加速稳健特征),是一种稳健的局部特征点检测和描述算法.最初由Herbert Bay发表在2006年的欧洲计算机视觉国际会议(Europe ...

  3. 使用OpenCV对图片进行特征点检测和匹配(C++)

    背景 最近从不同网站下载了非常多的动漫壁纸,其中有一些内容相同,但是大小.背景颜色.色调.主人公的位置不同(例子如下).正因为如此,基础的均方误差.直方图检测等方法很难识别出这些相似的图片. 思路 O ...

  4. VLFeat中SIFT特征点检测

    本代码使用VLFeat库中的函数对一幅图像进行了SIFT检测 需要事先配置好VLFeat和OpenCV,VLFeat的配置参考前一篇博文,OpenCV的配置网上一大堆,自己去百度 #include & ...

  5. sift特征点检测和特征数据库的建立

    类似于ORBSLAM中的ORB.txt数据库. https://blog.csdn.net/lingyunxianhe/article/details/79063547   ORBvoc.txt是怎么 ...

  6. OpenCV计算机视觉学习(13)——图像特征点检测(Harris角点检测,sift算法)

    如果需要处理的原图及代码,请移步小编的GitHub地址 传送门:请点击我 如果点击有误:https://github.com/LeBron-Jian/ComputerVisionPractice 前言 ...

  7. python+OpenCV 特征点检测

    1.Harris角点检测 Harris角点检测算法是一个极为简单的角点检测算法,该算法在1988年就被发明了,算法的主要思想是如果像素周围显示存在多于一个方向的边,我们认为该点为兴趣点.基本原理是根据 ...

  8. OpenCV特征点检测匹配图像-----添加包围盒

    最终效果: 其实这个小功能非常有用,甚至加上只有给人感觉好像人脸检测,目标检测直接成了demo了,主要代码如下: // localize the object std::vector<Point ...

  9. opencv学习之路(34)、SIFT特征匹配(二)

    一.特征匹配简介 二.暴力匹配 1.nth_element筛选 #include "opencv2/opencv.hpp" #include <opencv2/nonfree ...

随机推荐

  1. 阅读《Android 从入门到精通》(33)——Intent 分类

    Intent 分类 显式 Intent:Intent("android.intent.action.CALL", Uri.parse("tel:" + stri ...

  2. Mac下Git项目使用的.gitignore文件

    https://www.gitignore.io/ 这个网站可以搜索特定项目.系统所需要的.gitignore 我现在主要是在Mac上用Visual Studio Code进行开发,所以直接搜索Mac ...

  3. Selenium 工具介绍、安装、配置及使用

    概念 selenium是一款跨平台开源工具,用于web的功能完整性測试,想做压力測试的能够换软件了 先看一眼官方站 http://docs.seleniumhq.org/download/ 首先要FQ ...

  4. HTML5_路径

    <!DOCTYPE html> <hmtl> <html  lang="zh-cn"> <head> <meta charse ...

  5. BZOJ 2460: [BeiJing2011]元素 线性基

    2460: [BeiJing2011]元素 Description 相传,在远古时期,位于西方大陆的 Magic Land 上,人们已经掌握了用魔法矿石炼制法杖的技术.那时人们就认识到,一个法杖的法力 ...

  6. Spring如何实现IOC和AOP的,说出实现原理。

    用过spring的朋友都知道spring的强大和高深,都觉得深不可测,其实当你真正花些时间读一读源码就知道它的一些技术实现其实是建立在一些最基本的技术之上而已:例如AOP(面向方面编程)的实现是建立在 ...

  7. B2C

    B2C是Business-to-Customer的缩写,而其中文简称为"商对客"."商对客"是电子商务的一种模式,也就是通常说的直接面向消费者销售产品和服务商业 ...

  8. Tyvj:1729 文艺平衡树(saply练习)

    您需要写一种数据结构(可参考题目标题),来维护一个有序数列,其中需要提供以下操作:翻转一个区间,例如原有序序列是5 4 3 2 1,翻转区间是[2,4]的话,结果是5 2 3 4 1 Input 第一 ...

  9. OC:基础总结

    OC面向对象的编程语言思想 类与对象.继承与实例化.属性点语法.内存管理.字符串.可见度. 类是一组具有相同特征和行为的事物的抽象 OC的与C相比所具有的新的特点: 定义新的类.类的实例和方法.方法的 ...

  10. Linux 系统管理命令 - vmstat - 虚拟内存统计

    命令详解 重要星级: ★★★★☆ 功能说明: vmstat 是 Virtual Memory Statistics ( 虚拟内存统计 ) 的缩写,利用 vmstat 命令可以对操作系统的内存信息.进程 ...