SIFT尺度不变特征变换匹配算法

来源:互联网 发布:初学电钢琴推荐 知乎 编辑:程序博客网 时间:2024/06/08 16:44

目录

  • 目录
  • SIFT概述
  • 特点
  • 应用
    • 方向
    • 典型应用
  • 流程
    • 预处理
    • 高斯金字塔
      • 1概念
      • 2 构建过程
    • 高斯差分金字塔
    • 空间极值点检测
    • 关键点定位
    • 关键点方向分配
    • 关键点特征描述

SIFT概述

SIFT的全称是Scale Invariant Feature Transform,尺度不变特征变换,由加拿大教授David G.Lowe提出的。SIFT特征对旋转、尺度缩放、亮度变化等保持不变性,是一种非常稳定的局部特征。

特点

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

应用

方向

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

典型应用

物体识别
机器人定位与导航
图像拼接
三维建模
手势识别
视频跟踪
笔记鉴定
指纹与人脸识别
犯罪现场特征提取
… …

流程

这里写图片描述

0.预处理

1.高斯金字塔

1.1概念:

高斯金字塔由若干组(Octave)金字塔构成,并且每组金字塔都包含若干层(Interval)。
图像和高斯函数进行卷积运算能够对图像进行模糊,使用不同的“高斯核”可得到不同模糊程度的图像。一副图像其高斯尺度空间可由其和不同的高斯卷积得到:
L(x,y,σ)=G(x,y,σ)I(x,y)

1.2 构建过程:

  1. 先将原图像扩大一倍之后作为高斯金字塔的第1组第1层,将第1组第1层图像经高斯卷积(其实就是高斯平滑或称高斯滤波)之后作为第1组金字塔的第2层,高斯卷积函数为:G(x,y,σ)=12πσ2e(xm/2)2+(yn/2)22σ2在Sift算子中参数σ=1.6。如图:这里写图片描述
  2. 将σ乘以一个比例系数k,等到一个新的平滑因子σ=k*σ,用它来平滑第1组第2层图像,结果图像作为第3层。
  3. 如此这般重复,最后得到L层图像,在同一组中,每一层图像的尺寸都是一样的,只是平滑系数不一样。它们对应的平滑系数分别为:0σkσ,k2σk3σkL2σ
  4. 将第1组倒数第三层图像作比例因子为2的降采样,得到的图像作为第2组的第1层,然后对第2组的第1层图像做平滑因子为σ的高斯平滑,得到第2组的第2层,就像步骤2中一样,如此得到第2组的L层图像,同组内它们的尺寸是一样的,对应的平滑系数分别为:0σkσk2σ,k3σkL2σ。但是在尺寸方面第2组是第1组图像的一半。
    这样反复执行,就可以得到一共O组,每组L层,共计O*L个图像,这些图像一起就构成了高斯金字塔,结构如下:
    这里写图片描述在同一组内,不同层图像的尺寸是一样的,后一层图像的高斯平滑因子σ是前一层图像平滑因子的k倍;
    在不同组内,后一组第一个图像是前一组倒数第三个图像的二分之一采样,图像大小是前一组的一半;

2.高斯差分金字塔

使用LoG虽然能较好的检测到图像中的特征点,但是其运算量过大,通常可使用DoG(差分高斯,Difference of Gaussina)来近似计算LoG。设k为相邻两个高斯尺度空间的比例因子,则DoG的定义:
D(x,y,σ)=[G(x,y,kσ)G(x,y,σ)]I(x,y) =L(x,y,kσ)L(x,y,σ)
这里写图片描述

3.空间极值点检测

检测DOG中一点和它同尺度的8个相邻点和上下相邻尺度对应的9×2个点共26个点比较,看是否比26个点都大或者都小,则该点将作为一个局部极值点,记下它的位置和对应尺度.
这里写图片描述

4.关键点定位

检测到的极值点是离散空间的极值点,
通过拟合三维二次函数来精确确定关键点的位置和尺度;
由于DOG算子会产生较强的边缘响应还需去除低对比度的关键点和不稳定的边缘响应点,以增强匹配稳定性、提高抗噪声能力。
关键点尺度:
σ=σ0pow(2.0,s/S)
式中: σ为关键点的尺度,
s 为关键点在高斯差分金字塔中所处于的层数
S 为每组的层数

5.关键点方向分配

对于在DOG金字塔中检测出的关键点,采集其所在高斯金字塔图像3σ邻域窗口内像素的梯度和方向分布特征。
模值:m(x,y)=[L(x+1,y)L(x1,y)]2+[L(x,y+1)L(x,y1)]2
方向:θ(x,y)=arctan((L(x+1,y)L(x1,y))((x,y+1)L(x,y1)))
直方图统计邻域内像素的梯度和方向。梯度直方图将0~360度的方向范围分为8个柱(bins),其中每柱45度。
每个关键点有三个信息:位置、所处尺度、方向。
一般保留峰值大于主方向峰值80%的方向作为该关键点的辅方向。
这里写图片描述

6.关键点特征描述

这里写图片描述
这里写图片描述

原创粉丝点击