特征点匹配——SIFT算法详解

之前在学习三维重建的过程中,了解过SIFT算法,现在老师要求详细的了解SIFT算法,看看能不能对它进行改进,于是又详细的看了一遍SIFT算法。记录一下。

一、SIFT算法综述

SIFT(Scale Invariant Feature Transform)全称尺度不变特征变换,是1999年Lowe提出的一种局部特征描述算子,在2004年得到了改善。
SIFT算子是把图像中检测到的特征点用一个128维的特征向量进行描述,因此一幅图像经过SIFT算法后表示为一个128维的特征向量集,该特征向量集具有对图像缩放,平移,旋转不变的特征,对于光照、仿射和投影变换也有一定的不变性,是一种非常优秀的局部特征描述算法。
SIFT算法的流程分别为:

  1. 尺度空间极点检测
  2. 关键点精确定位
  3. 关键点的方向确定
  4. 特征向量的生成

下面将会依次对这几步进行介绍。

二、尺度空间极点检测

2.1 尺度空间

特征点的检测就需要知道特征点的位置和尺度,需要位置的原因显而易见,而需要尺度的原因则是因为真实世界中的物体只有在一定尺度下才有意义。我们寻找的特征点就是要找到在连续的尺度空间下位置不发生改变的点。
构建尺度空间的目的就是找到在尺度变化中具有不变性的位置,可以使用连续的尺度变化,即在尺度空间中所有可能的尺度变化中找到稳定的特征点,通过这种方式找到的极点可以保证在图像缩放和旋转变化中具有不变性。
经过前人证明,尺度空间内核是高斯函数。因此假设 I(x,y) 是原始图像, G(x,y,σ) 是尺度空间可变的高斯函数,则一个图像的尺度空间可以定义为

L(x,y,σ)=G(x,y,σ)I(x,y)(1)

其中, 表示的是卷积运算, σ 表示尺度空间的大小, σ 越大则表示越模糊,表示图像的概貌, σ 越小则表示越清晰,表示图像的细节。高斯函数 G(x,y,σ) 定义为
G(x,y,σ)=12πσ2e(x2+y2)/2σ2(2)
经过一系列的尺度空间变换和二倍的下采样,最终得到高斯金字塔。
需要注意的是公式1中的图像 I(x,y) 具有无限的分辨率,也就是说他的尺度 σ=0 ,即 I(x,y)=L(x,y,0) 。也就是说公式1得到的尺度空间图像 L(x,y,σ) 是由尺度尺度空间为0的图像 L(x,y,0 生成的,但是现实生活中是不存在尺度空间为0,即具有无限分辨率的图像的。在Lowe的论文中,他们给定原图一个很小的尺度空间,为0.5。因此由一个小尺度空间图像 L(x,y,σ1) 生成一个大的尺度空间图像 L(x,y,σ2) 的过程为
L(x,y,σ2)=G(x,y,σ22σ21)L(x,y,σ1)(3)
其中,
G(x,y,σ22σ21)=12π(σ22σ21)ex2+y22(σ22σ21)(4)
由于实际中尺度为0的图像是无法得到的,因此我们得到的尺度图像的基准图像一定是由公式3得到的,这在SIFT算法的实现过程中尤为重要,不理解这里以后SIFT算法的实现看起来回比较吃力。

2.2 高斯差分

为了在尺度空间中找到稳定不变的极值点,在SIFT算法中使用了高斯差分(DOG)函数 D(x,y,σ) ,定义为

D(x,y,σ)=[G(x,y,kσ)G(x,y,σ)]I(x,y)=L(x,y,kσ)L(x,y,σ)
其中 kσ σ 是连续的两个图像的平滑尺度,所得到的差分图像再高斯差分金字塔中。
选择高斯差分函数的原因如下:
1. 计算简单,因为 L(x,y,σ) 是一定需要计算的,而 D(x,y,σ) 只需要执行减法。
2. 高斯拉普拉斯算子LoG(Laplacian of Gaussian),即图像的二阶导数,能够在不同的尺度下检测到图像的斑点特征,从而检测到图像中尺度变化下的位置不动点,但是LoG的运算效率不高。而DoG是LoG的近似。DoG和LoG的关系如下述所示:
σ2G=GσG(x,y,kσ)G(x,y,σ)kσσ(5)
因此,有
G(x,y,kσ)G(x,y,yσ)(k1)σ22G(6)
σ22G 正是尺度归一化算子的表达形式。在所有的尺度中 k1 是一个常数,当 k 趋近于1的时候误差趋近于0,但实际上这种误差对于极值的位置检测并没有什么影响
3. 通过前人的实验证明LoG提取的特征稳定性最强。

2.3 高斯金字塔与高斯差分金字塔

高斯金字塔和高斯差分金字塔如下图所示:
这里写图片描述
这里的几个参数定义如下:
1. 金字塔的组数(number of octaves):大多数情况下为4,但是实际上这个值与图像的大小有关,我在网上查到的资料大多数为

  • 63
    点赞
  • 361
    收藏
    觉得还不错? 一键收藏
  • 29
    评论
SIFT(Scale Invariant Feature Transform)是一种图像匹配算法,它能够处理图像的亮度、平移、旋转和尺度的变化。该算法通过提取特征点来生成特征描述符,并在这些特征描述符之间进行匹配SIFT算法的特点是具有尺度不变性,即对于图像的缩放、平移、旋转等变换具有不变性,同时对于光照、仿射和投影变换也有一定的不变性。SIFT算法的流程包括尺度空间点检测、关键点精确定位、关键点的方向确定和特征向量的生成。在计算特征点的方向时,根据特征点所在的高斯尺度图像中的局部特征计算出来。局部特征是指特征点的邻域区域内所有像素的梯度幅角和梯度幅值。SIFT算法通过生成一个128维的特征向量来描述每个特征点,这个特征向量具有对图像缩放、平移、旋转不变的特征。\[1\]\[2\]\[3\] #### 引用[.reference_title] - *1* [图像特征提取与匹配——SIFT算法](https://blog.csdn.net/liubing8609/article/details/85469691)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [特征点匹配——SIFT算法详解](https://blog.csdn.net/lhanchao/article/details/52345845)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 29
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值