SIFT算法简介

news2024/9/30 9:25:13

参考资料

  • SIFT文献-David-UBC: 《Distinctive Image Features from Scale-Invariant Keypoints》
  • SIFT算法介绍: SIFT特征详解 - Brook_icv - 博客园 (cnblogs.com)

简介

Scale-invariant feature transform 尺度不变特征变换

SIFT算法不仅只有尺度不变性,当旋转图像,改变图像亮度,移动拍摄位置时,仍可得到较好的检测效果.

特点如下

  • 具有较好的稳定性和不变形,能够适当旋转、尺度缩放、亮度的变化,能在一定程度上不受视角变化、仿射变换、噪声的干扰。
  • 区分性好,能够在海量特征数据库中进行快速准确的区分信息进行匹配
  • 多属性,就算只有单个物体,也能产生大量特征向量
  • 高速性,能够快速的进行特征向量匹配
  • 可扩展性,能够与其它形式的特征向量进行联合

主要流程

  1. 提取关键点:关键点是一些十分突出的不会因光照、尺度、旋转等因素而消失的点,比如角点、边缘点、暗区域的亮点以及亮区域的暗点。此步骤是搜索所有尺度空间上的图像位置。通过高斯微分函数来识别潜在的具有尺度和旋转不变的兴趣点。
  2. 特征方向赋值 基于图像局部的梯度方向,分配给每个关键点位置一个或多个方向,后续的所有操作都是对于关键点的方向、尺度和位置进行变换,从而提供这些特征的不变性。
  3. 特征点描述 在每个特征点周围的邻域内,在选定的尺度上测量图像的局部梯度,这些梯度被变换成一种表示,这种表示允许比较大的局部形状的变形和光照变换。
  4. (可选)特征点匹配

关键点提取采用的是图像金字塔,高斯模糊算法构建多分辨率图像,然后用高斯差分定位到极值点,剔除不好的特征点之后得到关键点。

在这里插入图片描述

效果如下

特征方向的确定采用的是如下公式,通过特征点的坐标(x,y)与L函数,取得梯度的模值(大小)和方向
在这里插入图片描述

然后根据特征方向进行加权得到关键点描述符

在这里插入图片描述

后续根据关键点描述符来进行图像匹配(可选),效果如下

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/670492.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

腾讯安全杨光夫:企业需改变“头痛医头”现状,构建持续进化的安全免疫力

6月13日,腾讯安全联合IDC发布“数字安全免疫力”模型框架,主张将守护企业数据和数字业务两大资产作为企业安全建设的核心目标。腾讯安全副总裁杨光夫在《助力企业持续进化安全免疫力》的主题演讲中表示,在新业态、新威胁、新场景、强监管下&a…

【MySQL】MVCC是如何解决快照读下的幻读问题的

文章目录 LBCC当前读 MVCC隐藏列undo logRead View 总结 我们从上文中了解到InnoDB默认的事务隔离级别是repeatable read(后文中用简称RR),它为了解决该隔离级别下的幻读的并发问题,提出了LBCC和MVCC两种方案。其中LBCC解决的是当…

StarRocks 统一 OLAP 引擎在滴滴的探索实践

作者:余辉,滴滴出行 OLAP 团队负责人/专家工程师;李明皇,滴滴出行高级软件开发工程师 发展历程 滴滴的 OLAP 系统早期由用于实时监控系统的 Apache Druid (以下简称 Druid)和离线加速使用的 Apache Kylin&a…

随风摇曳的她——美蕨(matlab实现)

目录 1 随风摇曳的她 2 摇曳带来的哲思 3 Matlab代码实现 1 随风摇曳的她 梦幻的场景、浪漫的气息,带上心爱的人,拥抱在这片花海之下,便有了电影男女主角的氛围感; 就算阅尽了世间风貌,也抵不上和她在一起时锦短情长&a…

Idea批量删除空行

1.在编辑框中使用快捷键ctrl f 打开替换框 2.勾选正则模式 Regex 3.在条件框中输入正则^\s*\n 正则解释,匹配以0个或n个\s空白符起首的换行\n 输入正则后可以看到效果,可以看到单行和多行都被选中了 。 如果想只删除连续多行的空行,就需要…

fl studio for window 21.0.3.3517 官方中文版免费下载及新功能介绍

FL Studio 21 for Mac官方中文版免费下载是一款功能强大的音乐编曲制作软件。尽管你可能没有接触过音乐制作,也能通过fl Studio 21,撰写,整理,录制,编辑,混合,掌握和制作出专业的品质音乐。 fl…

每隔一段时间重试,重试n次 java 工具类

需求: 若代码出现异常,则每隔一段时间重试一下,重试n次 import org.slf4j.Logger; import org.slf4j.LoggerFactory;import java.util.function.Supplier;public class RetryUtils {private static final Logger log LoggerFactory.getLogg…

ASP.NET Core 依赖注入系列一

什么是ASP.NET Core 依赖注入? 依赖注入也称DI是一项技术用来实现对象松耦合以至于应用程序更容易维护,ASP.NET Core通过控制器的构造函数自动注入依赖的对象,我们创建ASP.NET Core MVC应用程序演示依赖注入特性是如何工作, 在这节中我们讲解该特性 1 …

剑指offer45 把数组排成最小的数

剑指offer45 把数组排成最小的数 文章目录 剑指offer45 把数组排成最小的数题目描述思路实现参考文献 题目描述 输入一个非负整数数组,把数组里的所有数字拼接起来排成一个数,打印能拼接出来的所有数字中最小的一个。 思路 此题求拼接起来的最小数字&…

Selenium教程__使用switch_to.window方法处理窗口切换(12)

想一下这样的场景,打开页面A点击一个链接,在一个新的窗口打开页面B,由于之前的driver实例对象在页面A,但是你接下来操作的元素在页面B中,此时脚本就会报错找不到元素。该场景需要使用到selenium的switch_to.window&…

CMake 编译并链接动态库

问题描述 目录结构如下: |---CMP|---mmath|---mmath.h|---mmath.cpp|---CMakeLists.txt|---CMP.cpp|---CMakeLists.txt需要把mmath子项目编译成动态链接库并被CMP.cpp调用 代码如下: //mmath.h namespace mmath { int __declspec(dllexport) add(int…

Python基础(20)——Python函数讲解二

Python基础(20)——Python函数讲解二 文章目录 Python基础(20)——Python函数讲解二目标一. 变量作用域二. 多函数程序执行流程三. 函数的返回值四. 函数的参数4.1 位置参数4.2 关键字参数4.3 缺省参数4.4 不定长参数 五. 拆包和交…

pytest和ValueError: Expect x to not have duplicates(个人笔记)

1.项目在新环境报错为没有pytest 解决办法: 在设置里面的Tools里面的某个选项改为(如下图) 2.同一个项目在旧电脑正常运行,到了新电脑新环境莫名报错 报错为 interpolate.interp1d里面的某个函数报错 具体报错为:Valu…

Bean属性校验

Servlet是一个规范,Tomcat实现的 JDBC是一个规范,各个厂商实现的 JSR303也是一个规范,有人提供实现 我们只需要面向接口编程即可。 一般来说,以javax开头的groupId,都是规范 JSR303提供规范,其余框架实现规…

软考A计划-系统集成项目管理工程师-信息化系统的生命周期-下

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例点击跳转>软考全系列 👉关于作者 专注于Android/Unity和各种游戏开发技巧&#xff…

Mysql数据库操作总结

文章目录 1. DDL(Data Definition Language - 数据定义语言)1.1 数据库1.2 数据表(创建查询删除)1.3 数据表(修改) 2. 数据类型2.1 数值2.2 字符2.3 日期 3. 字段约束3.1 约束3.2 主键约束修改3.3 主键自增 联合主键 4. DML(Data Manipulation Language - 数据操作语言)4.1 添…

本地搭建svn仓库 + 调试svn hooks

本地搭建SVN仓库 调试svn hooks : 文章目录 本地搭建SVN仓库 调试svn hooks :1. 环境准备:2. 搭建本地仓库的过程:3. 将写好的svn hooks pre-commit.bat放到hooks目录内。4. 创建仓库的本地working copy: 1. 环境准备: 需要安装TortoiseSV…

APP专项测试之——网络测试

软件网络测试考虑四种状态下的测试 1、正常网络 wifi:无线网络情况下,软件可正常使用 流量:手机数据情况下,软件可正常使用 2、弱网 概念:在厕所,电梯,停车场,地下商场等封闭性的…

python 包(模块)制作

文档:Quickstart - setuptools 68.0.0.post20230619 documentation 目录结构 sdk目录里面存放源码 在setup.py所在层级目录下执行如下命令既可生成wheel文件 python setup.py sdist bdist_wheel 上传: 需要把生成的.wheel文件上传到 pypi上,才能使用pi…

优秀的测试用例是如何设计的?

这篇文章我们主要聊一下测试工程师最通用的也是最根本的技能,测试用例的设计能力。 测试用例 测试用例是通过使用在测试计划中确定的测试技术,对于已确定的测试条件进行逐步推敲,精炼而设计出来的重点说明如何具体操作产生何种结果的文档。…