SIFT算法为解决在图像大小改变,发生旋转后的特征点匹配问题。
主要方法如下:
- 创建不同尺度的图像,组成图像的尺度空间。
利用不同的 σ 值得高斯函数创建逐步高斯模糊的图像集合。
对在同一尺度内的相邻图像间求差,得到差分高斯金字塔。(差分高斯函数DoG是对拉普拉斯高斯函数LoG的很好的近似)。
- 在尺度空间中找到局部极值值,这去除了尺度的不确定性。从极值中选择关键点。
- 对每个关键点,在16*16的窗口中找到梯度方向的直方图。
- 建立特征向量。
LoG滤波器得到的极值定位了图像中的“斑点”,“斑点”的大小取决于LoG滤波器的
σ
大小,拥有与
σ
值相近大小的斑点会有最好的响应。
利用二次曲面拟合来得到最精确的最大值位置。
在关键点的某一个大小的邻域内计算梯度方向,统计后组成直方图,选择最主要的方向作为该关键点的主导方向。这样,我们就获得了某一个关键点的坐标,尺度以及方向信息。
利用DoG的峰值和主曲率的比率作为阈值来保留最稳定的关键点。
对某一个关键点,用关键点尺度空间内4
×
4的窗口中计算的8个方向的梯度信息,共4
×4
×
8=128维向量表征。