SIFT算法步骤梳理

简介:SIFT算法是检测和描述局部特征的一种方法,具有尺度不变性,对于光线,噪声等的容忍度相当高。即便少数几个物体也可以产生大量SIFT特征。

SIFT算法实质上是在不同尺度空间上查找关键点,并计算出关键点的方向。

算法步骤:

1.构建尺度空间

  •  利用高斯核来构建
    • 高斯核是唯一可以产生多尺度空间的核,也是唯一线性核,利用高斯核对图像模糊处理不会引入其他噪声。
    • 高斯核函数:

SIFT算法步骤梳理_第1张图片

  • 输入图像通过高斯核函数连续的对尺度进行参数变换,最终得到多尺度空间序列。图像中某一尺度的空间函数由高斯函数和原输入图像I(x,y)卷积得出:

  • 高斯金字塔
    • 模仿图像的不同尺度
    • 生成步骤:高斯平滑-->对图像做下采样(一般先将图像扩大一倍,在扩大的图像基础上构建高斯金字塔,然后您对该尺寸下图像进行高斯模糊,几幅模糊的图像集合构成了一个八度,然后对该八度下倒数第三张图片进行下采样,长和宽分别缩短一倍,图像面积变为原来的四分之一。以此类推)
    • 为什么选倒数第三张进行下采样?为了保持尺度空间的连续性,根据下图公式可以计算得出第o组第S层的图像尺度,可以发现下一组的第o层图像恰好和上一组倒数第三张图一致,所以每一组的第0张图像只需要用上一层的倒数第三张进行下采样即可。

SIFT算法步骤梳理_第2张图片

2.DoG

  • Laplace operator:二阶导

SIFT算法步骤梳理_第3张图片

  • LoG(Laplace of Gaussian)
    • 把拉普拉斯算子和高斯函数联合到了一个步骤
    • 等价于先对高斯函数求二阶导,再与原图进行卷积

将高斯拉普拉斯算子展开:

又有:

SIFT算法步骤梳理_第4张图片

  • DoG:对不同尺度下的高斯函数的差分

DoG算子为

DoG算子和LoG算子具有类似的波形,且计算复杂度低,所以一般用DoG代替LoG算子。

  • DoG vs LoG

SIFT算法步骤梳理_第5张图片

  • 高斯差分图像

SIFT算法步骤梳理_第6张图片

3.DoG定位极值点

  • 特征点是由DoG空间的局部极值点组成的。
  • 每一个像素要和他所有的相邻点比较(中间的监测点和它同尺度的8个相邻点和上下相邻尺度对应的9*2个,共26个点比较,以确保在尺度空间和二维图像空间都检测到极值点)
  1. 确定潜在特征点
  • 检测到的局部极值点A(x,y,σ)是离散情况下的一个极值点,如果考虑连续情况,则极值点可能落在了A点的附近(Δx,Δy,Δσ)(如下图所示),而真正的极值点B可以表示为在点A处的泰勒展开。

SIFT算法步骤梳理_第7张图片

令上面D(x)的一阶导数为0,可以得到

  • 对以上过程进行多次迭代(最多5次)得到最终候选点的精确位置.(偏移超过0.5时更新当前像素点,若没有超过0.5,则当前像素加上偏移就是精确点)

4.边缘和低对比度响应(移除某些特征点)

  • 移除低对比度的点:D(X')小于0.03的点
  • 移除边缘点:利用hessian矩阵

SIFT算法步骤梳理_第8张图片

5.确定关键点方向

  • 利用特征点领域像素的梯度来确定其方向参数
    • 对于已经检测到的特征点,已知其尺度σ,可以确定该尺度下的高斯图像

  • 梯度方向

  • 梯度幅值

  • 利用图像的梯度直方图求取关键点局部结构的稳定方向
    • 以关键点为原点,一定区域内的图像像素点对关键点方向生成所做的贡献。
    • 构建梯度直方图,梯度方向决定位于直方图的哪个槽(共36个槽,每10度划分一个),幅值加权更新槽内幅值的和。

SIFT算法步骤梳理_第9张图片

6.构建关键点描述子(keypoints descriptor)

  • 校正主方向,确保旋转不变性
    • 以特征点为中心,将坐标轴旋转到特征点的主方向
  • 生成描述子,形成128维的特征向量
    • 基于梯度方向直方图,每45度一个划分,共划分8个槽
    • 在每个4*4的小方块内绘制8个方向的梯度直方图,计算幅值,即形成一个种子点
    • 对每个关键点使用16个种子点来描述,每个种子点有8个方向的信息,即形成了128为特征向量

SIFT算法步骤梳理_第10张图片

SIFT算法步骤梳理_第11张图片

SIFT算法步骤梳理_第12张图片

  • 归一化处理特征向量的长度,进一步去除光照的影响。

参考博文:

SIFT特征详解 - Brook_icv - 博客园

SIFT解析(二)特征点位置确定 - DreamFaquir - 博客园

SIFT解析(三)生成特征描述子_honpey爱编程-CSDN博客

SIFT定位算法关键步骤的说明 - ☆Ronny丶 - 博客园

你可能感兴趣的:(算法,计算机视觉,图像处理)