一、SIFT(Scale Invariant Feature Transform)算法基本原理及主要特征
1、SIFT算法基本原理
SIFT算子是图像匹配算法中性能较好的算子,基于SIFT算法的特征图像配准可大致分为特征的检测、描述和匹配。特征检测是在尺度空间中进行的,首先生成图像尺度空间,然后检测尺度空间中的局部极值点,再通过剔除低对比度点和边缘响应点对局部极值点进行精确定位;在对特征进行描述时,先计算每个极值点的主方向,对极值点为中心的区域进行直方图梯度方向统计,生成特征描述子;最后,通过特征描述子寻找匹配的特征,建立图像之间的联系。
1.1关键点的检测
高斯卷积核是实现尺度变换的唯一线性变换核,一幅图像在尺度空间中可表示为图像和可变高斯核函数的卷积,采用高斯金字塔(LaplacianofGaussian,LoG)算子表示如下:
L(x,y,?)?G(x,y,?)?I(x,y)
其中,I(x,y)为输入的二维图像,G(x,y,?)?1
2??2e?(x2?y2)/2?2为可变高斯核函数,?为可
变核。
图像尺度空间的形成是通过将图像与具有可变核的高斯滤波器进行卷积,从而得到图像的高斯金字塔LoG。David指出,高斯金字塔LoG共分为O组,每组S+3层,S为?与2?之间的层数,S一般取2或3。每组的高斯金字塔的形成是通过输入图像与级联滤波器进行卷积得到,下面以S=2为例,对高斯金字塔LoG的形成过程进行详细说明。
当S=2时,每组的高斯金字塔共有5层,共由四级的级联滤波器得到。对于第一组的高斯金字塔LoG形成过程如下图所示:
图1-1 级联滤波器的构造
如图所示,输入图像I0由初始图像I经高斯核为?的滤波器得到,输出图像I(ii=1,…,4)由输入图像I0分别经级联滤波器Ⅰ、Ⅱ、Ⅲ和Ⅳ得到。第一组高斯金字塔LoG为图1中虚线包括的五幅图像Ii(i?0,1,...,4),每幅图像对应的高斯核为k?(i?0,1,...,4),表示图像i
Ii(i?0,1,...,4)可看成初始图像I经核为ki?(i?0,1,...,4)的高斯函数得到。
第二组高斯金字塔LoG的每层图像大小都是第一组高斯金字塔LoG中图像大小的1/4,其输入图像是第一组高斯金字塔LoG中第S层图像经采样率为2的采样过程得到。当S
取
2时,第二组高斯金字塔LoG的输入图像I'
0为上面提到的图像I1采样得到的。输入图像I'
再经过四级的级联滤波器得到输出图像Ii'(i?0,1,...,4),级联滤波器的结构与第一组高斯金字塔LoG一致,图像Ii'(i?0,1,...,4)构成了第二组高斯金字塔LoG。依此类推,共生成O=4组的高斯金字塔LoG。
为了有效的在尺度空间检测到稳定的关键,Lowe构造了差分金字塔DoG(DifferenceofGaussian),它是通过对相邻层的卷积结果进行差值处理获得的,其表达式如下:
D(x,y,?)?(G(x,y,k?)?G(x,y,?))?I(x,y)?L(x,y,k?)?L(x,y,?)
图1-2给出了第一组、第二组高斯金字塔LoG和差分金字塔DoG的构造过程。
图1-2 高斯金字塔LoG和差分金字塔DoG的构造过程
如图所示,差分金字塔DoG是由高斯金字塔LoG相邻层相减得到的。其中,高斯金字塔LoG共有O组,每组共有S+3层图像;差分金字塔DoG共有O组,每组共有S+2层图像。每个像素点与周围8个像素点以及相邻尺度的2×9个共26个像素点比较大小,若为极大值点或为极小值点,则该像素点是候选极值点,候选极值点在每组的中间S层中产生。当S=2时,候选极值点在差分金字塔DoG的中间2层产生,如图中红色方框所示。
1.2极值点的筛选
经过差分金字塔DoG
中的极值检测之后,需要对候选的极值点进行筛选,得到真正的
极值点。极值点的筛选包括两部分,一个是低对比度点的抑制,另一个是边缘响应点的去除。低对比度点的抑制是指剔除响应值小于给定阈值的点,边缘响应点的去除是指将候选点中的大曲率的边缘点筛选掉。
由于差分金字塔DoG检测到的极值点的位置坐标均为整数,而实际的特征点不一定位于整数坐标位置上。因此,在进行极值点筛选之前,先要通过三维二次函数对特征点的位置进行精确定位,再通过计算该位置的DoG响应值及曲率来筛选得到真正的极值点。
差分金字塔DoG在候选极值点周围的泰勒展开式如下:
2?DT1T?DD(X)?D(X0)?(X?X0)?(X?X0)(X?X0) ?X2?X2
其中,X=(x,y,σ)为特征点的位置和尺度信息的向量,