尺度不变特征变换(SIFT, Scale Invariant Feature Transform)算法用于提取图像中的SIFT特征,该特征对旋转、尺度缩放、亮度变化等保持不变性,是非常稳定的局部特征,因为具有非常广泛的应用。
SIFT算法的主要思路是:首先构造图像的尺度空间表示,然后在尺度空间中搜索图像的极值点,由极值点再建立特征描述向量,最后用特征描述向量进行相似度匹配。本文将通过MATLAB代码来演示SIFT特征描述算法的原理。如果需要了解该算法的更多细节,推荐参考《数字图像处理原理与实践(MATLAB版)》一书。
首先给出一个测试用的主程序,它调用了SIFT的相关实现函数,然后在两幅图像中搜索特征点并进行匹配。
I1=imreadbw('box.png');
I2=imreadbw('box_in_scene.png');
I1=I1-min(I1(:));
I1=I1/max(I1(:));
I2=I2-min(I2(:));
I2=I2/max(I2(:));
%SIFT特征检测
[frames1,descr1,gss1,dogss1] = do_sift(I1, 'Verbosity', 1, ...
'NumOctaves', 4, 'Threshold', 0.1/3/2);
[frames2,descr2,gss2,dog