实验内容
在网上或者提前准备10张(或以上)图像,使用matlab提取图像直方图特征并进行显示;将图像特征进行保存(保存为矩阵形式.mat格式),并进行图像相似度比较(使用欧式距离)。
clear,clc
for i=1:10
b=['sce',num2str(i),'.jpg'];%
s=imread(b);
sce=rgb2gray(s);
[m,n]=size(sce);
h=imhist(sce,20);
H=['h',num2str(i),];
eval([H,'=h./(m*n);']);%对hi赋值
%save(H,'H');%存储hi.mat
end
mat=[h1,h2,h3,h4,h5,h6,h7,h8,h9,h10];
for i=1:10
for j=1:10
dis(i,j)=0;
for k=1:20
dis(i,j)=dis(i,j)+(mat(k,i)-mat(k,j))^2;
end
dis(i,j)=sqrt(dis(i,j));
if i==j
dis(i,j)=1;
end
end
end
x = input('Please input picture number:');
if x<1||x>10
disp('The number should be between 1 and 10.');
return;
end
b=['sce',num2str(x),'.jpg'];%
s=imread(b);
%figure(1);
subplot(1,2,1);
imshow(s);
title('原图');
[x,y]=min(dis(x,:));
b=['sce',num2str(y),'.jpg'];%
s=imread(b);
%figure(2);
subplot(1,2,2);
imshow(s);
title('图像检索');
%输入5效果较好