💥💥💞💞欢迎来到本博客❤️❤️💥💥
🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。
⛳️座右铭:行百里者,半于九十。
📋📋📋本文目录如下:🎁🎁🎁
目录
💥1 概述
本研究旨在利用Harris角点检测与SIFT特征分类方法来提取图像中的有效特征,并对这些特征进行分类分析。随着计算机视觉和图像处理领域的迅速发展,自动化图像分析和识别成为了热门的研究领域。为了更好地理解和处理图像中的信息,寻找并提取图像中的关键点和特征成为了重要的任务。
Harris角点检测算法是基于图像局部灰度变化的方式来寻找关键点的一种算法。它通过计算每个像素点周围的灰度梯度和二阶矩阵的特征值,来判断该点是否为角点。这个算法具有高效和鲁棒的特点,能够准确地找到图像中的关键点,并计算得分以反映其重要性。
而SIFT特征分类算法则是一种基于局部图像补丁的特征提取与描述方法。它通过在关键点周围构建尺度空间,并计算每个尺度下图像梯度的方向直方图来表示关键点的特征。这种方法能够有效地描述关键点的局部特征,对于旋转、尺度和光照变化具有高度的不变性。
在本研究中,我们针对Harris角点检测与SIFT特征分类算法进行了深入研究,并将它们结合起来,构建了一个脚本进行实验。通过在多张图像上运行该脚本,我们可以同时提取这两种算法所能捕获的关键点和特征,并通过分类分析来理解图像中的内容。我们使用了多组图像数据集,并对每个图像都进行了详细的特征提取和分类结果分析。通过实验结果,我们发现这种算法组合可以有效地提取并分类图像的特征,为图像处理和计算机视觉领域的相关研究工作提供了有益的启示和帮助。
进一步地,这项研究还为未来的工作提供了多个方向和启示。例如,我们可以探索更多的特征提取和描述算法,以进一步提高图像分类的准确性和鲁棒性。另外,我们可以将这些算法应用于更广泛的领域,如目标识别、图像检索等,以解决实际生活中的问题。此外,我们还可以研究如何对这些算法进行进一步优化,以提高它们的运行效率和性能表现。
总而言之,本研究通过探索Harris角点检测与SIFT特征分类方法的组合应用,为图像处理和计算机视觉领域的研究提供了有益的实证结果和启示。这将有助于推动图像分析与识别技术的发展,并为解决实际应用中的问题提供了新的思路和方法。
📚2 运行结果
部分代码:
%%%%%%%%%%% (1) Pittsburgh.png %%%%%%%%%%%%%
image = imread('pittsburgh.png');
image = imresize(image, 0.75);
[ x, y, scores, Ix, Iy ] = extract_keypoints( image );
figure; imshow(image)
hold on
for i = 1:size(scores,2)
%plot(x(i), y(i), 'ro', 'MarkerSize', scores(i) / 1000000000);
plot(x(i), y(i), 'ro', 'MarkerSize', scores(i) * 5);
end
saveas(gcf,'hw04_pittsburgh_corners.png');
hold off
% get the feature descriptors via SIFT
[ pgh_features, x, y, scores ] = compute_features( x, y, scores, Ix, Iy );
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%% (2) Rainbow.jpg %%%%%%%%%%%%
image = imread('Rainbow.jpg');
image = imresize(image, 0.5);
[ x, y, scores, Ix, Iy ] = extract_keypoints( image );
figure; imshow(image)
hold on
for i = 1:size(scores,2)
plot(x(i), y(i), 'ro', 'MarkerSize', scores(i) * 5 );
end
saveas(gcf,'hw04_rainbow_corners.png');
hold off
% get the feature descriptors via SIFT
[ rainbow_features, x, y, scores ] = compute_features( x, y, scores, Ix, Iy );
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%% (3) leopard2.jpg %%%%%%%%%%
image = imread('leopard2.jpg');
image = imresize(image, 0.5);
[ x, y, scores, Ix, Iy ] = extract_keypoints( image );
figure; imshow(image)
hold on
for i = 1:size(scores,2)
plot(x(i), y(i), 'ro', 'MarkerSize', scores(i) * 5);
end
saveas(gcf,'hw04_leopard2_earing_corners.png');
hold off
% get the feature descriptors via SIFT
[ leopard2_features, x, y, scores ] = compute_features( x, y, scores, Ix, Iy );
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%% (4) Prague.jpg %%%%%%%%%%%%
image = imread('prague.jpg');
image = imresize(image, 0.75);
[ x, y, scores, Ix, Iy ] = extract_keypoints( image );
figure; imshow(image)
hold on
for i = 1:size(scores,2)
plot(x(i), y(i), 'ro', 'MarkerSize', scores(i) );
end
saveas(gcf,'hw04_prague_corners.png');
hold off
% get the feature descriptors via SIFT
[ prague_features, x, y, scores ] = compute_features( x, y, scores, Ix, Iy );
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%% (5) Provence.jpg %%%%%%%%%%%%
image = imread('Provence.jpg');
image = imresize(image, 0.5);
[ x, y, scores, Ix, Iy ] = extract_keypoints( image );
figure; imshow(image)
hold on
for i = 1:size(scores,2)
plot(x(i), y(i), 'ro', 'MarkerSize', scores(i) *5 );
end
saveas(gcf,'hw04_provence_corners.png');
hold off
% get the feature descriptors via SIFT
[ provence_features, x, y, scores ] = compute_features( x, y, scores, Ix, Iy );
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%% (6) circuit_board.jpg %%%%%%%%%%%%%
image = imread('circuit_board.JPG');
image = imresize(image, 0.7);
[ x, y, scores, Ix, Iy ] = extract_keypoints( image );
figure; imshow(image)
hold on
for i = 1:size(scores,2)
plot(x(i), y(i), 'ro', 'MarkerSize', scores(i) *5);
end
saveas(gcf,'hw04_circuit_corners.png');
hold off
% get the feature descriptors via SIFT
[ circuit_features, x, y, scores ] = compute_features( x, y, scores, Ix, Iy );
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%% (7) vermeer.jpg %%%%%%%%%%%%%%%%
image = imread('vermeer.jpg');
image = imresize(image, 0.25);
[ x, y, scores, Ix, Iy ] = extract_keypoints( image );
figure; imshow(image)
hold on
for i = 1:size(scores,2)
plot(x(i), y(i), 'ro', 'MarkerSize', scores(i) *5);
end
saveas(gcf,'hw04_vermeer_corners.png');
hold off
% get the feature descriptors via SIFT
[ vermeer_features, x, y, scores ] = compute_features( x, y, scores, Ix, Iy );
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%% (8) eiffel.jpg %%%%%%%%%%%%%%
image = imread('eiffel.jpg');
image = imresize(image, 1);
[ x, y, scores, Ix, Iy ] = extract_keypoints( image );
figure; imshow(image)
hold on
for i = 1:size(scores,2)
plot(x(i), y(i), 'ro', 'MarkerSize', scores(i) *5 );
end
saveas(gcf,'hw04_eiffel_corners.png');
hold off
% get the feature descriptors via SIFT
[ eiffel_features, x, y, scores ] = compute_features( x, y, scores, Ix, Iy );
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%% (9) leopard1.jpg %%%%%%%%%%%%%%%%
image = imread('leopard1.jpg');
image = imresize(image, 0.75);
[ x, y, scores, Ix, Iy ] = extract_keypoints( image );
figure; imshow(image)
hold on
for i = 1:size(scores,2)
plot(x(i), y(i), 'ro', 'MarkerSize', scores(i) *5);
end
saveas(gcf,'hw04_leopard1_corners.png');
hold off
% get the feature descriptors via SIFT
[ leopard1_features, x, y, scores ] = compute_features( x, y, scores, Ix, Iy );
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%% (10) panda1.jpg %%%%%%%%%%%%%%
image = imread('panda1.jpg');
image = imresize(image, 0.66);
[ x, y, scores, Ix, Iy ] = extract_keypoints( image );
figure; imshow(image)
hold on
for i = 1:size(scores,2)
plot(x(i), y(i), 'ro', 'MarkerSize', scores(i) *5 );
end
saveas(gcf,'hw04_panda1_corners.png');
🎉3 参考文献
文章中一些内容引自网络,会注明出处或引用为参考文献,难免有未尽之处,如有不妥,请随时联系删除。
[1]赵小强,张源峰.基于Harris角点与SIFT的快速图像匹配算法[J].兰州理工大学学报, 2019, 45(1):6.DOI:CNKI:SUN:GSGY.0.2019-01-019.
[2]邱建国,张建国,李凯.基于 Harris 与 Sift 算法的图像匹配方法[J].测试技术学报, 2009.DOI:JournalArticle/5af15a2fc095d718d8e18c52.