本人初学SIFT,过程中也借鉴了很多网络资源,虽然还没有了解的太透彻,但是对于SIFT算法的大致过程有了初步认识,下面分享一下我的理解,主要参照 https://blog.csdn.net/zddblog/article/details/7521424 (网上有很多原理公式,鉴于我也看不懂,就不对公式作解释了,想看公式的可以点击上述链接,里面写得十分详细)

1、SIFT的概念

SIFT,即尺度不变特征变换(Scale-invariant feature transform,SIFT),是用于图像处理领域的一种描述,具有非常强的稳健性。那先来了解一下它的特点和作用:

SIFT算法的特点有:

  1. SIFT特征是图像的局部特征,其对旋转、尺度缩放、亮度变化保持不变性,对视角变化、仿射变换、噪声也保持一定程度的稳定性;
  2. 独特性好,信息量丰富,适用于在海量特征数据库中进行快速、准确的匹配;
  3. 多量性,即使少数的几个物体也可以产生大量的SIFT特征向量;
  4. 高速性,经优化的SIFT匹配算法甚至可以达到实时的要求;
  5. 可扩展性,可以很方便的与其他形式的特征向量进行联合。

SIFT算法可以解决的问题:
目标的自身状态、场景所处的环境和成像器材的成像特性等因素影响图像配准/目标识别跟踪的性能。而SIFT算法在一定程度上可解决:

  1. 目标的旋转、缩放、平移
  2. 图像仿射/投影变换
  3. 光照影响
  4. 目标遮挡
  5. 杂物场景
  6. 噪声

2、SIFT算法

按照参考博客所写的内容可以将SIFT算法分解为如下四步:

  1. 尺度空间极值检测:搜索所有尺度上的图像位置。通过高斯差分函数来识别潜在的对于尺度和旋转不变的兴趣点。
  2. 关键点定位:在每个候选的位置上,通过一个拟合精细的模型来确定位置和尺度。关键点的选择依据于它们的稳定程度。
  3. 方向确定:基于图像局部的梯度方向,分配给每个关键点位置一个或多个方向。所有后面的对图像数据的操作都相对于关键点的方向、尺度和位置进行变换,从而提供对于这些变换的不变性。
  4. 关键点描述:在每个关键点周围的邻域内,在选定的尺度上测量图像局部的梯度。这些梯度被变换成一种表示,这种表示允许比较大的局部形状的变形和光照变化。

2.1、高斯模糊

SIFT算法是在不同的尺度空间上定位兴趣点,而尺度空间的获取需要使用高斯模糊来实现。
个人理解的方法就是用一个矩形窗口和模糊的灰度图像进行卷积,再通过滤波去除不稳定点。按照书本概念:兴趣点是在图像位置和尺度变化结果的最大值和最小值点。

对于图像的模糊有两种方法,一种是二维高斯模糊:

一种是分离高斯模糊:

2.2、高斯金字塔

尺度空间在实现时使用高斯金字塔表示,高斯金字塔的构建分为两部分:

  1. 对图像做不同尺度的高斯模糊;
  2. 对图像做降采样(隔点采样)。


上图是什么意思呢,就是说将原始图像不断降阶采样,得到一系列大小不一的图像,将图像金字塔每层的一张图像使用不同参数做高斯模糊,使得金字塔的每层含有多张高斯模糊图像。降采样时,高斯金字塔上一组图像的初始图像(底层图像)是由前一组图像的倒数第三张图像隔点采样得到的。这样就构造出了一个高斯金字塔。在实际计算时,使用高斯金字塔每组中相邻上下两层图像相减,就得到下图的高斯差分金字塔

2.3、空间极值点检测

关键点是由DOG空间的局部极值点组成的,关键点的初步探查是通过同一组内各DoG相邻两层图像之间比较完成的。例如下图,每一个像素点要和它所有的相邻点比较,看其是否比它的图像域和尺度域的相邻点大或者小。当然光靠这样判断的极值点并不全都是稳定的兴趣点,因为某些极值点响应较弱,而且DOG算子会产生较强的边缘响应,这就需要一些算法来消除这种影响。

2.4、描述子

上面讨论的兴趣点位置描述子给出了兴趣点的位置和尺度信息,为了实现旋转不变性,基于每个点周围图像梯度的方向和大小,SIFT描述子引入参考方向,使用主方向描述参考方向,原理大致如下图。

基于位置、尺度和方向信息计算描述子。SIFT描述子在每个像素点附近选取4*4个的子区域网格,对于每个子区域计算图像的梯度方向直方图,根据米字型的8个方向向量组成区间数为8的直方图,将16个子区域直方图连接起来可以变成个一个128个区间的直方图,作为该兴趣点的特征向量。

3、SIFT的缺点

SIFT在图像的不变特征提取方面拥有无与伦比的优势,但并不完美,仍然存在:

  1. 实时性不高。

  2. 有时特征点较少。

  3. 对边缘光滑的目标无法准确提取特征点。

SIFT(尺度不变特征变换)的原理分析相关推荐

  1. OPENCV学习笔记 - SIFT 尺度不变特征变换 Python

    OPENCV学习笔记 - SIFT 尺度不变特征变换 Python 为什么我们需要SIFT尺度不变特征变换? 第一,建立高斯差分金字塔 第二,极值点的精确定位 第三,确定关键点的主方向 第四,构建关键 ...

  2. [转载]SIFT(尺度不变特征变换)算法小结

    原文地址:SIFT(尺度不变特征变换)算法小结[转]作者:慕容天峰 最近一直在看SIFT算法.Sift是David Lowe于1999年提出的局部特征描述子,并于2004年进行了更深入的发展和完善.S ...

  3. SIFT(尺度不变特征变换)原理与简单应用

    目录 1.SIFT(Scale Invariant Feature Transform)简介 1.1.SIFT算法的操作步骤 兴趣点的检测: 特征方向的赋值: 特征点描述: 1.2.SIFT算法的适用 ...

  4. OpenCV系列之SIFT尺度不变特征变换 | 三十九

    目标 在这一章当中, 我们将学习SIFT算法的概念 我们将学习找到SIFT关键点和描述算符. 理论 在前两章中,我们看到了一些像Harris这样的拐角检测器.它们是旋转不变的,这意味着即使图像旋转了, ...

  5. OpenCV(22)SIFT尺度不变特征变换(纯理论)

    SIFT算法(纯理论) 1.引言 前面介绍了Harris和Shi-Tomasi角点检测算法,这两种算法具有旋转不变性,但不具有尺度不变性.以下图为例,在左侧小图中可以检测到角点,但是图像被放大后,在使 ...

  6. python-opencv图像处理之SIFT尺度不变特征变换

    在这一章当中,我们将学习SIFT算法的概念,找到SIFT关键点和描述算符. 一.概念 在前面,我们看到了一些像Harris这样的拐角检测器.它们是旋转不变的,这意味着即使图像旋转了,我们也可以找到相同 ...

  7. OpenCV中的尺度不变特征变换(SIFT Scale-Invariant Feature Transform)

    OpenCV中的尺度不变特征变换(SIFT Scale-Invariant Feature Transform) 1. 效果图 2. 原理 2.1 步骤 2.2 opencv实现方法 2.3 SIFT ...

  8. 数字图像处理学习笔记(二):SIFT(尺度不变特征变换)算法

    数字图像处理学习笔记(二):SIFT(尺度不变特征变换)算法 一.概述: 提到特征点算法,首先就是大名鼎鼎的SIFT算法了.SIFT的全称是Scale Invariant Feature Transf ...

  9. 尺度不变特征变换(SIFT算法)Matlab程序代码测试例子的说明(Lowe的代码)

    目前网络上可以找到的关于SIFT算法Matlab测试代码的资源就是: 1 加拿大University of British Columbia 大学计算机科学系教授 David G. Lowe发表于20 ...

最新文章

  1. 博士后小姐姐把“二次元老婆生成器”升级了:这一次可以指定画风
  2. C语言之prinf的用法
  3. Yii学习笔记:利用setFlash和runController打造个性化的提示信息页面
  4. vc++ 隐式链接dll
  5. route map应用策略路由(下)
  6. android 4.4 屏幕方向,Android4.4屏幕旋转功能
  7. ThinkPHP实现支付宝接口功能
  8. DeepFaceLab报错,CUDA driver is insufficient 解决方法!
  9. 电流感应电阻器行业调研报告 - 市场现状分析与发展前景预测(2021-2027年)
  10. Xamarin.Android 使用 SQLite 出现 Couldn't read row 0, col -1 from CursorWindow. 异常
  11. mysql innobackupex 备份及恢复
  12. Qt Windows 制作圆形头像
  13. jupyter更改默认浏览器的方法
  14. 将yolov4的权重文件转换为wts文件
  15. java短视频开发技术_看Java学员如何用前后端分离技术搭建短视频健身APP
  16. 解读:机器学习预测收益模型应该采取哪种度量指标
  17. ASM管理命令行三工具:KFOD、KFED和AMDU
  18. 深度学习巨头—杨立昆
  19. matlab-基础 复数 实部、虚部、模、共轭、辐角
  20. 喜欢上Cinnamon的10个理由

热门文章

  1. java 读取hdfs上的文件内容
  2. cpu、内存、硬盘之间的关系
  3. 数据链路层 ,数据链路层的主要功能,数据链路层的协议,数据链路层的设备。
  4. Node.js下载安装与配置淘宝加速器cnpm
  5. 关于不同操作系统下浏览器兼容问题
  6. 查找SCI期刊的影响因子
  7. r相机采集的图片转化为halcon识别的图像源码_直播系统开发:关于直播源码中美颜SDK的作用...
  8. dubbo-admin的下载与安装
  9. dism 错误 14
  10. 关系型数据库篇(MSSQL)