SIFT算法

来源:https://blog.csdn.net/jaccen2012/article/details/78643286

SIFT算子是一种图像的局部描述子,具有尺度、旋转、平移的不变性,而且对光照变化、仿射变换和三维投影变换具有一定的鲁棒性。

其主要思想是在尺度空间寻找极值点,然后对极值点进行过滤,找出稳定的特征点。最后在每个稳定的特征点周围提取图像的局部特性,形成局部描述子并将其应用在以后的模板匹配中。解决了尺度不变性的问题。

SIFT算法包括四个步骤:

1.检测尺度空间的极值点。
2.抽取稳定的关键点。
3.为每个关键点指定一个或者多个方向
4.生成特征点描述子

简单说明下这四个步骤:

首先介绍一下尺度空间,所谓尺度空间就相当于对一幅图片做一次高斯滤波,生成的图片就是一个尺度空间下的,再对这幅滤波后的图片进行循环往复的滤波,就会让图片变得越来越模糊,这样就形成了不同的“尺度”。就是由清楚到模糊的一系列图片就是一系列的尺度,这些尺度放在一起就形成了一个尺度空间。尺度空间的实现一般使用高斯模糊。

提取尺度不变的特征点,其主要思想就是提取的特征点可以出现在任何一个尺度上,这样不论图像的尺度如何变化,总能够提取出这种特征点。检测尺度无关的特征点可以通过搜索所有可能的尺度,这可以基于尺度空间理论来解决。一般都是在高斯差分函数与图像卷积得到的空间中寻找极值点。每一幅高斯差分图像中的一个像素点,要和它所在图像的八邻域像素比较,而且要和它所在图像的上一层和下一层的各九个邻近的像素点比较。这样才能找出真正的极值点。

2.抽取稳定的关键点,那么哪些是稳定的?哪些又是不稳定的?论文中说低对比度和边缘上的点都是不稳定的,我们只要把这些不稳定的点排除,那么剩下的点就是稳定的。对于低对比度的点,参考文献1中给出了一个公式来进行判断。对于边缘上的点,我们采取法曲率这个东西,如果极值点分布在边缘上,该点的法曲率最大值和最小值之比 (即两个主曲率之比),一般情况下要比非边缘点的比值大。根据这种思想,我们可以设一个比值的阈值,当比值大于这个阈值就认为极值点在边缘上。

3.以关键点为中心,划定一个邻域,利用所有在此区域内的点的梯度形成一个方向直方图。从直方图中选出纵坐标值最大的一项的方向作为该关键点的主方向。如果存在其他方向,纵坐标的大小大于主方向纵坐标大小的80%,也将其作为该关键点的方向。特征点有多个方向的情况下,实际上是在此位置上有多个关键点,他们的方向不同。直方图的横坐标是梯度方向,共36 项,每项代表了 10 度的范围;纵坐标是梯度大小,对于归到横坐标上任一项内所有的点,将其梯度大小相加,其和作为纵坐标。
在这里插入图片描述

4.生成局部描述子:在关键点周围取一个邻域,并对其中点的梯度做高斯加权。这个邻域分为四个子区域,每个子区域取八个方向。假如采用8x8 的像素矩阵,以及圆形的邻域,邻域被划分为2x2 个子区域,那么描述子的维数就是2x2x8=32维,如果采用16x16的像素矩阵,那么很明显就是128维了。为了对光线变化更具鲁棒性,描述子都被归一化到单位长度。如果图像的对比度发生变化,每个像素值都会乘上一个数值,归一化后,对比度的影响被消除了。对于图像亮度的变化,每 个像素值都会加上一个数值,然而这对计算的梯度是没有影响的。因此,该描述子对亮度的仿 射变换是鲁棒的。对于非线性的光线变化,梯度大小会受影响,但是梯度的方向不会有大的变化,我们可以根据前面描述的生物学原理解决此问题。
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值