2006年Herbert Bay提出了SURF算法,该算法是对SIFT算法的改进,不仅继承了SIFT算法的优点,而且比SIFT算法速度快。下面是SURF算法的步骤。
(1)建立积分图像
(2)构建尺度空间
(3)筛选特征点
(4)计算特征点主方向
(5)特征描述子生成
%% 读取图像
I1= imread('baby1.JPG');
I1=imresize(I1,0.6);
I1=rgb2gray(I1);
I2= imread('baby2.JPG');
I2=imresize(I2,0.6);
I2=rgb2gray(I2);?
%% 寻找特征点
points1 = detectSURFFeatures(I1);
points2 = detectSURFFeatures(I2); ?
%% 计算描述向量
[f1, vpts1] = extractFeatures(I1, points1);
[f2, vpts2] = extractFeatures(I2, points2);
%% 进行匹配
indexPairs = matchFeatures(f1, f2, 'Prenormalized', true) ;
matched_pts1 = vpts1(indexPairs(:, 1));
matched_pts2 = vpts2(indexPairs(:, 2));
?%% 显示
figure;
showMatchedFeatures(I1,I2,matched_pts1,matched_pts2,'montage');
legend('matched points 1','matched points 2');
输出图像