图像特征检测—SIFT算法应用(Python)

目录

 

一:SIFT算法的特征原理描述

1. 尺度空间的搭建

​2. DOG局部极值检测

3. 对上一过程中得出的候选极值点进行筛选,去除边缘响应点,得到真正的特征点

4. 特征点方向匹配

5.关键特征点的描述

6. 通过特征点的两两比较,找出相互匹配的若干个特征点,建立对应的关系

二:分别运用SIFT和Harris算法,实现图像的特征提取

三:对两张图片进行SIFT特征匹配处理

四:从不同的角度拍摄集美大学,对拍摄的图像进行地理标记


一:SIFT算法的特征原理描述

    SIFT算法在图像尺度空间基础上,实现了对图像缩放、旋转保持不变性的图像局部特征的描述。实质可以归为在不同尺度空间上查找特征点(关键点)的问题。SIFT算法实现特征匹配的基本流程如下:

1. 尺度空间的搭建

      首先引入尺度空间的概念:它可以模拟人在距离目标由近到远的过程中,目标在视网膜当中形成图像的过程,尺度越大越模糊,相当于我们观察远处的物体。如果需要识别出包含不同尺寸的同一物体的两幅图像,随着物体在图像中大小发生变化,属于该物体的局部区域的大小也会发生变化。SIFT算法采用高斯图像金字塔,对图像做高斯平滑和降采样,一幅图像可以产生几组图像,一组图像包括几层图像,从而实现尺度的连续性。高斯核是唯一可以产生 多尺度空间的核,一个 图像的尺度空间,L(x, y, σ) ,定义为原始图像 I(x, y)与一个可变尺度的2 维高斯函数G(x, y, σ) 卷积运算。  

     尺度归一化的高斯拉普拉斯算子能够得到最稳定的图像特征,但因为计算量太大,所以引入了高斯差分金字塔(DOG),DoG在计算上只需相邻高斯平滑后图像相减,即高斯差分金字塔的第1组第1层是由高斯金字塔的第1组第2层减第1组第1层得到的,以此类推,逐组逐层生成每一个差分图像,所有差分图像构成差分金字塔,每一组在层数上,高斯差分金字塔比高斯金字塔少一层,从而简化了计算。


2. DOG局部极值检测

       SIFT特征点是由DOG空间的局部极值点组成的。为了寻找DoG函数的极值点, 将每一个像素点和它所有的相邻点进行比较。如图所示,将中间带叉号的检测点和它同尺度的8个相邻点和上下相邻尺度对应的9×2个点,即2*9+8=26,这26个像素点进行比较,若在这26个领域中是最大或最小值时,就认为该点是图像在该尺度下一个候选的特征点。

3. 对上一过程中得出的候选极值点进行筛选,去除边缘响应点,得到真正的特征点

        DoG函数的峰值点在边缘方向有较大的主曲率,而在垂直边缘的方向有较小的主曲率。SIFT寻找的局部图像块,期望局部块中的主梯度方向与其他方向的梯度相差不要太大,通过计算DOG的二阶导数(Hessian矩阵),得到主梯度方向和其他方向的比值,保留该比值小于一定数值的局部特征点。主曲率可以通过计算在该点位置尺度的2×2的Hessian矩 阵得到,导数由采样点相邻差来估计:

D 表示DOG金字塔中某一尺度的图像x方向求导两次

D的主曲率和H的特征值成正比。令 α ,β为特征值,则

时保留关键点,反之剔除

4. 特征点方向匹配

       为了实现旋转不变形,基于每个点周围梯度的方向和大小,SIFT算法引入了主方向描述参考方向,主方向使用方向直方图来衡量。

5.关键特征点的描述

       其中描述子由2×2×8维向量表征,也即是 2×2个8方向的方向直方图组成。左图的种子点由8×8单元组成。每一个小格 都代表了特征点邻域所在的尺度空间的一个像素,箭头方向代表了像素梯度方 向,箭头长度代表该像素的幅值。然后在4×4的窗口内计算8个方向的梯度方 向直方图。绘制每个梯度方向的累加可形成一个种子点。

6. 通过特征点的两两比较,找出相互匹配的若干个特征点,建立对应的关系

<
  • 9
    点赞
  • 46
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值