视觉算法原理-SIFT算法解析

尺度不变特征变换匹配算法详解

Scale Invarian Feature Transform

本文大量引用了文章 : https://blog.csdn.net/zddblog/article/details/7521424  ,十分感谢

数学常识链接库 :

拉格朗日乘子法 : https://www.matongxue.com/tags/47/

泰勒公式 : https://www.zhihu.com/question/21149770/answer/219143281 

以及  https://blog.csdn.net/xm961217/article/details/101021153

泰勒近似 : https://www.zhihu.com/question/52124268

子像素插值 : https://www.cnblogs.com/ronny/p/4028776.html

差分 : https://zhuanlan.zhihu.com/p/46699931

1. 介绍

SIFT 算法主要是对局部特征进行提取的算法 ,不受亮度 ,旋转 ,缩放的影响 ,对放射变换,透视变换 ,视角变换也有一定的稳定性 。

只需要检测到三个 SIFT 特征点 ,就可以检测物体 。

 

2. 实现步骤

    ① 尺度空间极值检测

    ② 关键点定位

    ③ 方向确定

    ④ 关键点描述

注意 :尺度空间为 观察物体的窗口大小

   而 SIFT 对图片所做的高斯模糊处理 ,是采取了对高斯模糊分离的办法 ,将矩阵分为一行与一列 ,将会使高斯模糊的 时间复杂度从 O(n * m * M * N) 降低到 O( n * M *N ) + O(m * M * N) ,在边缘上的一维矩阵会忽略图片外的因素 。

并消除黑边问题 。

由 来决定尺度空间的大小 。值越小表示被平滑的空间越小 ,越注重细节 ,值越大表示平滑的空间越大 ,越注重大轮廓 。

尺度空间实现时用高斯金字塔来表示 ,

3. 高斯金字塔的构建

1. 对图片做不同尺度的高斯模糊处理

2. 对图片进行降采样 (隔点采样)

图像的金字塔模型是指,将原始图像不断缩小 ,从大到小 ,从下到上 ,构成金字塔 。

一般上一层比下一层长和宽各缩小一倍 。

而在特征提取函数上 ,尺度归一化的高斯拉普拉斯函数 与 高斯差分函数(DOG) 十分的近似 ,但 DOG 函数更加的高效 ,简洁 。

因此引用 DOG 来进行极值的检测 

在高斯金字塔中通过上下相邻的图像相减 ,得到高斯差分图像 ,(注意:这里是对每一层中大小相同的图片 ,但使用了不同的参数做了高斯模糊)

4. 极值点检测(关键点的初步检测)

关键点的检测是在相同尺寸之间的图像之间比较得到 ,每个像素点要和他相邻的点比较 ,( 8 邻域 + 9 * 2 =26 个像素) ,看是不是比他的邻域与尺度域的点大或者小 ,确保在 尺度空间和二维空间上都能检测到极值点 。

这样就能找到大部分极值点 ,包括响应弱的极值点 。

(注意 : 由于要在相邻尺度进行比较,如每组含4层的高斯差分金子塔,只能在中间两层中进行两个尺度的极值点检测,其它尺度则只能在不同组中进行。为了在每组中检测S个尺度的极值点,则DOG金字塔每组需S+2层图像,而DOG金字塔由高斯金字塔相邻两层相减得到,则高斯金字塔每组需S+3层图像,实际计算时S在3到5之间。)

5. 构建尺度空间所需要的参数

在最开始建立高斯金字塔时,要预先模糊输入图像来作为第0个组的第0层的图像,这时相当于丢弃了最高的空域的采样率。因此通常的做法是先将图像的尺度扩大一倍来生成第-1组。我们假定初始的输入图像为了抗击混淆现象,已经对其进行的高斯模糊,如果输入图像的尺寸用双线性插值扩大一倍,那么相当于

  —尺度空间坐标

    O—组(octave)数

    S— 组内层数

在上述尺度空间中,O和S,的关系如下:

 (3-5)

其中是基准层尺度,o为组octave的索引,s为组内层的索引。关键点的尺度坐标就是按关键点所在的组和组内的层,利用公式(3-5)计算而来。

取式(3-4)中的k为组内总层数的倒数,即

   (3-6)

在构建高斯金字塔时,组内每层的尺度坐标按如下公式计算:

(3-7)

其中初始尺度,lowe取,s为组内的层索引,不同组相同层的组内尺度坐标相同。组内下一层图像是由前一层图像按进行高斯模糊所得。式(3-7)用于一次生成组内不同尺度的高斯图像,而在计算组内某一层图像的尺度时,直接使用如下公式进行计算:

(3-8)

该组内尺度在方向分配和特征描述时确定采样窗口的大小。

由上,式(3-4)可记为

(3-9)

图3.5为构建DOG金字塔的示意图,原图采用128*128的jobs图像,扩大一倍后构建金字塔。

 

6. 关键点精确定位

以上方法检测到的极值点是离散空间的极值点,以下通过拟合三维二次函数来精确确定关键点的位置和尺度,同时去除低对比度的关键点和不稳定的边缘响应点(因为DoG算子会产生较强的边缘响应),以增强匹配稳定性、提高抗噪声能力。

 

而离散空间的极值点与连续空间的极值点是不一样的 ,获取连续空间的极值点的方法叫做 子像素插值(Sub-pixel Interpolation)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值