💥💥💞💞欢迎来到本博客❤️❤️💥💥
🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。
⛳️座右铭:行百里者,半于九十。
📋📋📋本文目录如下:🎁🎁🎁
目录
💥1 概述
摘要
从不同的图像中提取特征并将它们进行匹配,有着许多应用,如物体识别和机器人导航。在这个项目中,使用哈里斯角Harris 和SIFT算法来实现局部特征匹配的任务。
为了提取图像的最重要特征,采用了哈里斯角算法。该算法使用以下步骤检测角点(兴趣点):
1. 算法
1. 计算x和y方向的导数Ix,Iy。这是通过在两个方向上使用高斯滤波器和Sobel滤波器来完成的。
2. 计算每个像素点处的导数乘积Ix2,Iy2,Ixy。这是以矢量化方式进行,以加快计算速度。
3. 计算每个像素点处的导数乘积之和Sx2,Sy2,Sxy。这是通过将步骤2的输出乘以高斯滤波器来完成的。
4. 在每个像素点定义哈里斯矩阵。同样,这也是以矢量化格式进行的。
5. 计算每个像素点上检测器的响应。再次,这是通过使用矢量化代码完成的。R = Det(H) – k (Trace(H))2。其中,k设定为0.04,如SIFT算法论文中建议的。
6. 进行非极大值抑制。遍历所有点并执行以下步骤:
a. 选择当前点的R值。
b. 获取当前点周围的3×3窗口数值。
c. 如果当前点的R值大于特定阈值(超参数进行调整):
i. 如果当前点的R值是窗口中的最大值
1. 将特征向量沿x和y方向与当前行和列值进行拼接。
SIFT算法在1999年首次提出,并在2004年得到改进,被认为是最著名和鲁棒的特征提取算法。这是因为它对图像的任何变化都是不变的,例如方向、缩放、光照或其他任何因素。
在这个项目中,首先实现了Harris角点算法来获取兴趣点,然后利用SIFT算法进行描述,并最终使用NNDR进行匹配。
📚2 运行结果
v
部分代码:
%% Define image pairs
imagePair = 1;
if imagePair == 1
% Notre Dame de Paris
% Easiest
image1 = imread('../data/NotreDame/921919841_a30df938f2_o.jpg');
image2 = imread('../data/NotreDame/4191453057_c86028ce1f_o.jpg');
eval_file = '../data/NotreDame/921919841_a30df938f2_o_to_4191453057_c86028ce1f_o.mat';
elseif imagePair == 2
% Mount Rushmore
% A little harder than Notre Dame
image1 = imread('../data/MountRushmore/9021235130_7c2acd9554_o.jpg');
image2 = imread('../data/MountRushmore/9318872612_a255c874fb_o.jpg');
eval_file = '../data/MountRushmore/9021235130_7c2acd9554_o_to_9318872612_a255c874fb_o.mat';
elseif imagePair == 3
% Gaudi's Episcopal Palace
% This pair is difficult
image1 = imread('../data/EpiscopalGaudi/4386465943_8cf9776378_o.jpg');
image2 = imread('../data/EpiscopalGaudi/3743214471_1b5bbfda98_o.jpg');
eval_file = '../data/EpiscopalGaudi/4386465943_8cf9776378_o_to_3743214471_1b5bbfda98_o.mat';
end
🎉3 参考文献
文章中一些内容引自网络,会注明出处或引用为参考文献,难免有未尽之处,如有不妥,请随时联系删除。