图像处理之SIFT特征匹配算法详解

SIFT特征匹配

本文着重介绍局部特征不变特征点方面的SIFT算法。SIFT算法具有较为不错的鲁棒性,同时,能够适应在不同尺度,不同旋转角度以及具有较高的匹配精度。本文主要介绍SIFT算法的每个步骤。

SIFT算法四个步骤

  1. 构造高分差分金字塔
  2. 在尺度空间内进行极值点的检测。
  3. 对候选极值点进行检查,删除不满足要求的极值点。
  4. 确定关键点的方向。
  5. 生成关键点的描述子。

`

步骤一:构造高斯差分金字塔

对图像进行下采样后得到图像金字塔,对图像金字塔的每一种大小做不同规格( σ \sigma σ 不同)的高斯滤波得到高斯金字塔。在这里为了方便,规格大小一样的我们称它为一组,在组内利用不同 σ \sigma σ高斯核模糊的我们称它为层。通过对高斯金字塔中每一组内的相邻层进行相减从而得到差分高斯金字塔
根据David Lowe作者的经验值,构造的金字塔组数由 l o g 2 ( m i n ( M , N ) ) − 3 log_2(min(M,N))-3 log2(min(M,N))3来进行确定。其中,M,N代表原图像的长和宽。层数可以由 S = n + 3 S=n+3 S=n+3来得到,其中,n表示希望提取特征的图片数量。这里的原因在下面的极值点检测中会提及。

步骤二:进行候选极值点的选取

在这里,在尺度空间内寻找极值点,也就是通过比较与空间中相邻的26个点的大小来确定。在这里,由于边缘的两层缺少了一层来进行比较,因此,在差分金字塔中要加上两层,这也是步骤一中层数加三的原因(2+1)。

步骤三:对候选极值点来进行筛选

在这里为什么要进行筛选呢?答案是由于这个都是一个一个离散的点,而离散点则是由连续函数采样得到,因此,离散域上的极值点并不一定是真正意义上的极值点,因此需要通过一些筛选机制来把这些不符合要求的极值点来筛选掉。
主要是去除掉低对比度的点和不稳定的边缘响应点。低对比度的点可以利用在极值点处的泰勒三元二阶展开,求导令导等于零解出原函数,再根据对比度筛选条件进行筛选即可。不稳定的边缘响应点则可以通过海森矩阵来进行判定筛选。

确定关键点主方向

在这里,以特征点为圆心,以高斯金字塔里面的图像上的1.5倍的尺度为半径做圆。以1.5倍 σ \sigma σ进行高斯滤波后(主要是因为要实现离特征点近的权重大,距离特征点远的权重小)统计圆内梯度的方向以及权重。根据权重确定主方向。
在这里插入图片描述

构造关键点描述符

首先,将坐标系旋转到主方向上进行区域的划分。
在这里插入图片描述
进行区域的划分,共需要16个区域,每个区域含有16个子区域,之后对子区域进行梯度权值的统计统计完之后对每个区域含有一个8维向量,所以16个区域共构成了128维向量。之后根据在向量空间哪两个向量近即匹配的原则完成匹配。匹配算法可以用k近邻算法来进行匹配。
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_45919032/article/details/127945214