介绍

匹配不同图片的特征是计算机视觉常见的问题. 当所有要匹配的图片很相似的时候(大小,方位),简单的角点检测算子就可以匹配,但是,当你的图片大小,方位不同的时候,你就要用到尺度不变特征变换(scale invariant feature transform).

为什么是SIFT?

SIFT算子不仅仅具有尺度不变特性,你可以改变以下的内容,还可以得到很好的结果:

  • scale尺度
  • rotation旋转
  • Illumination亮度
  • Viewpoint视角

下面是一个例子:

我们要查找这些内容:

我们在下面这张图片中查找以上目标

这是结果:

可以看出上面的图片匹配非常鲁棒。大长方形圈出了匹配对象; 小正方形是这些区域内的特征. 注意看大长方形的形状,它和你要匹配的目标在场景图片中的方向和视角是一致的.

SIFT是一个非常复杂的算法. 它涉及到很多处理过程,也很容易让人糊涂. 因此我将整个算法分为以下几个部分, 下面是SIFT算法的主要部分:

  • 构建尺度空间
  • LOG近似
  • 角点匹配
  • 去除低质量角点
  • 给角点加上方位
  • 生成SIFT特征

我可以用SIFT算子做什么?

当你实现了整个算法之后,你就可以得到你图片的SIFT特征. 一旦你有了这些,你可以做任何你想做的:
图片查找,目标检测/识别, 或者你想到的任何东西,这些我们后面会谈到.

但是问题是这个算法是有专利的!

因此,对于学术目的而言,SIFT还是很好的. 如果你在找一些能应用到商业的算法,还是换个方法吧!

这个系列接下来的内容

  • 1. 介绍
  • 2. 尺度空间
  • 3. LOG 近似
  • 4. 角点匹配
  • 5. 去除低分辨率角点
  • 6. 角点的方向
  • 7. 生成特征

原文地址:http://aishack.in/tutorials/sift-scale-invariant-feature-transform-introduction/  作者:Utkarsh Sinha

实现地址:https://github.com/kassol/SIFT/tree/master/src

参考资料:http://www.inf.fu-berlin.de/lehre/SS09/CV/uebungen/uebung09/SIFT.pdf

     http://web.eecs.umich.edu/~silvio/teaching/EECS598/lectures/lecture10_1.pdf

        http://www.cs.ubc.ca/~lowe/papers/iccv99.pdf

     https://stackoverflow.com/questions/19815732/what-is-gradient-orientation-and-gradient-magnitude

【技术翻译】SIFT算子原理及其实现 (一)介绍的更多相关文章

  1. 2018-2019-2 网络对抗技术 20165325 Exp2 后门原理与实践

    2018-2019-2 网络对抗技术 20165325 Exp2 后门原理与实践 实验内容(概要): (1)使用netcat获取主机Shell,cron启动 首先两个电脑(虚拟机)都得有netcat, ...

  2. 2018-2019-2 网络对抗技术 20165318 Exp2 后门原理与实践

    2018-2019-2 网络对抗技术 20165318 Exp2 后门原理与实践 后门的基本概念及基础问题回答 常用后门工具 netcat Win获得Linux Shell Linux获得Win Sh ...

  3. 2018-2019-2 20165212《网络对抗技术》Exp2 后门原理与实践

    2018-2019-2 20165212<网络对抗技术>Exp2 后门原理与实践 1.实验内容 (1)使用netcat获取主机操作Shell,cron启动 (2)使用socat获取主机操作 ...

  4. 2017-2018-2 20155314《网络对抗技术》Exp2 后门原理与实践

    2017-2018-2 20155314<网络对抗技术>Exp2 后门原理与实践 目录 实验要求 实验内容 实验环境 预备知识 1.后门概念 2.常用后门工具 实验步骤 1 用nc或net ...

  5. 20155204 王昊《网络对抗技术》EXP2 后门原理与实践

    20155204 王昊<网络对抗技术>EXP2 后门原理与实践 一.实验内容 准备工作(试用ncat.socat) 1. 使用netcat获取主机操作Shell,cron启动. 明确目标: ...

  6. 2018-2019-2 网络对抗技术 20165322 Exp2 后门原理与实践

    2018-2019-2 网络对抗技术 20165322 Exp2 后门原理与实践 目录 实验准备 后门概念 常用后门工具 实验内容与步骤 使用netcat获取主机操作Shell,cron启动 使用so ...

  7. SIFT算法原理(3)-确定关键点的主方位,构建关键点描述符

    介绍官网:https://docs.opencv.org/3.0-beta/doc/py_tutorials/py_feature2d/py_sift_intro/py_sift_intro.html ...

  8. sobel算子原理及opencv源码实现

    sobel算子原理及opencv源码实现 简要描述 sobel算子主要用于获得数字图像的一阶梯度,常见的应用和物理意义是边缘检测. 原理 算子使用两个33的矩阵(图1)算子使用两个33的矩阵(图1)去 ...

  9. 以正确的方式开源 Python 项目 - 技术翻译 - 开源中国社区

    以正确的方式开源 Python 项目 - 技术翻译 - 开源中国社区 以正确的方式开源 Python 项目 英文原文:Open Sourcing a Python Project the Right ...

随机推荐

  1. WEBGL学习【九】立方体贴不同的纹理

    <html> <!--开始实现一个三维街景的渲染效果--> <head> <meta http-equiv="Content-Type" ...

  2. WEBGL学习【一】初识WEBGL

    <html lang="zh-CN"> <head> <title>NeHe's WebGL</title> <meta ch ...

  3. 3.3、Ansible命令参数详解

    0.ansible 命令参数详解: [root@localhost ~]# ansible Usage: ansible <host-pattern> [options] Options: ...

  4. 基于Tags的简单内容推荐的实现

    原来为了简单方便,自己小网站上的文章页的相关内容推荐就是从数据库里随机抽取数据来填充一个列表,所以一点相关性都没有,更本没有办法引导用户去访问推荐内容. 算法选择 如何能做到相似内容的推荐呢,碍于小网 ...

  5. c++之vector使用

    Vector是向量模板,C++ STL之一(本质上是一个动态数组).vector是一个动态生长的数组,一开始vector为空时,会给一个初始化的容量 (就是允许的添加个数并申请好内存),当往添加的元素 ...

  6. 0x41 并查集

    太菜了才做到并查集啊啊啊啊啊啊啊啊啊啊啊 还是很有收获的说 水 bzoj4195: [Noi2015]程序自动分析 好题 poj1456 感受到并查集传递性的美妙啊!对于一个商品,去找他过期前那天的集 ...

  7. iOS 判断是否有权限访问相机,相册

    1.判断用户是否有权限访问相册 #import <AssetsLibrary/AssetsLibrary.h> ALAuthorizationStatus author =[ALAsset ...

  8. elasticsearch源码分析之search模块(client端)

    elasticsearch源码分析之search模块(client端) 注意,我这里所说的都是通过rest api来做的搜索,所以对于接收到请求的节点,我姑且将之称之为client端,其主要的功能我们 ...

  9. 【转】iOS 设置APP的名称(浅述APP版本国际化与本地化)

    原文网址:http://www.jianshu.com/p/a3a70f0398c4 前言 App的名字设置方式有很多种,如果在App打包上线时不做修改,最终App的名字就是Xcode在建立工程时的名 ...

  10. 2017-3-3 leetcod 1 35 448

    ACM退役了,接下来是考研的准备,刷刷leetcode保证不会生手,也算是调剂生活,初步计划是每天三题吧,希望可以坚持下去. 打算按照专题来做,先是Array....本来以为特别水,结果.... == ...