【技术翻译】SIFT算子原理及其实现 (一)介绍
介绍
匹配不同图片的特征是计算机视觉常见的问题. 当所有要匹配的图片很相似的时候(大小,方位),简单的角点检测算子就可以匹配,但是,当你的图片大小,方位不同的时候,你就要用到尺度不变特征变换(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算子原理及其实现 (一)介绍的更多相关文章
- 2018-2019-2 网络对抗技术 20165325 Exp2 后门原理与实践
2018-2019-2 网络对抗技术 20165325 Exp2 后门原理与实践 实验内容(概要): (1)使用netcat获取主机Shell,cron启动 首先两个电脑(虚拟机)都得有netcat, ...
- 2018-2019-2 网络对抗技术 20165318 Exp2 后门原理与实践
2018-2019-2 网络对抗技术 20165318 Exp2 后门原理与实践 后门的基本概念及基础问题回答 常用后门工具 netcat Win获得Linux Shell Linux获得Win Sh ...
- 2018-2019-2 20165212《网络对抗技术》Exp2 后门原理与实践
2018-2019-2 20165212<网络对抗技术>Exp2 后门原理与实践 1.实验内容 (1)使用netcat获取主机操作Shell,cron启动 (2)使用socat获取主机操作 ...
- 2017-2018-2 20155314《网络对抗技术》Exp2 后门原理与实践
2017-2018-2 20155314<网络对抗技术>Exp2 后门原理与实践 目录 实验要求 实验内容 实验环境 预备知识 1.后门概念 2.常用后门工具 实验步骤 1 用nc或net ...
- 20155204 王昊《网络对抗技术》EXP2 后门原理与实践
20155204 王昊<网络对抗技术>EXP2 后门原理与实践 一.实验内容 准备工作(试用ncat.socat) 1. 使用netcat获取主机操作Shell,cron启动. 明确目标: ...
- 2018-2019-2 网络对抗技术 20165322 Exp2 后门原理与实践
2018-2019-2 网络对抗技术 20165322 Exp2 后门原理与实践 目录 实验准备 后门概念 常用后门工具 实验内容与步骤 使用netcat获取主机操作Shell,cron启动 使用so ...
- SIFT算法原理(3)-确定关键点的主方位,构建关键点描述符
介绍官网:https://docs.opencv.org/3.0-beta/doc/py_tutorials/py_feature2d/py_sift_intro/py_sift_intro.html ...
- sobel算子原理及opencv源码实现
sobel算子原理及opencv源码实现 简要描述 sobel算子主要用于获得数字图像的一阶梯度,常见的应用和物理意义是边缘检测. 原理 算子使用两个33的矩阵(图1)算子使用两个33的矩阵(图1)去 ...
- 以正确的方式开源 Python 项目 - 技术翻译 - 开源中国社区
以正确的方式开源 Python 项目 - 技术翻译 - 开源中国社区 以正确的方式开源 Python 项目 英文原文:Open Sourcing a Python Project the Right ...
随机推荐
- 【JavaScript框架封装】数据类型检测模块功能封装
数据类型检测封装后的最终模块代码如下: /*数据类型检验*/ xframe.extend(xframe, { // 鸭子类型(duck typing)如果它走起路来像鸭子,叫起来也是鸭子,那么它就是鸭 ...
- JavaScript进阶【二】JavaScript 严格模式(use strict)的使用
/*** *使用严格模式的原因: * ①:消除Javascript语法的一些不合理.不严谨之处,减少一些怪异行为; ②:消除代码运行的一些不安全之处,保证代码运行的安全: ③:提高编译器效率,增加运行 ...
- BZOJ 2333 [SCOI2011]棘手的操作 (可并堆)
码农题.. 很显然除了两个全局操作都能用可并堆完成 全局最大值用个multiset记录,每次合并时搞一搞就行了 注意使用multiset删除元素时 如果直接delete一个值,会把和这个值相同的所有元 ...
- OpenStack 发行版本
2010年7月,Rackspace和美国宇航局联合其他25家公司启动了OpenStack项目 OpenStack的发行版本时间表和核心项目 OpenStack发行版本 名称 日期 ...
- 《你又怎么了我错了行了吧》【Alpha】Scrum meeting 3
第三天 日期:2019/6/16 前言: 第3次会议在女生宿舍召开 讨论了项目功能改进问题,继续代码完善和安排 1.1 今日完成任务情况以及明天任务安排 姓名 当前阶段任务 下一阶段任务 刘 佳 对已 ...
- 《代码敲不队》第八次团队作业:Alpha冲刺 第五天
项目 内容 这个作业属于哪个课程 任课教师博客主页链接 这个作业的要求在哪里 作业链接地址 团队名称 代码敲不队 作业学习目标 掌握软件编码实现的工程要求. 团队项目github仓库地址链接 GitH ...
- C++调用C#编写的DLL【转】
1.打开VS新建项目 2.在新建项目窗口中选择其他语言->Visual C++->Win 32控制台应用程序,设置名称:MathCon,设置解决方案名:MathCon,这个名字随便你自己取 ...
- C#--二维码生成代码
需要用到ThoughtWorks.QRCode.dll文件 string str = Server.UrlDecode(Request.QueryString["id"]); QR ...
- 使用angularjs的$http.post异步提交数据时,服务器接收不了的问题
一,在正常情况下,使用表单的post方法提交数据,默认请求头的Content-Type:application/x-www-form-urlencoded类型, 提交数据格式如下: 二,使用angul ...
- 在Eclipse中创建Maven多模块项目
在Eclipse中创建Maven多模块项目1,创建多模块项目选择File>New>Project,打开New Project窗口,选择Maven>Maven Project,选择下一 ...