欢迎光临散文网 会员登陆 & 注册

用MATLAB实现基于灰度共生矩阵的图片识别

2020-11-27 18:41 作者:奈奈k0  | 我要投稿

代码主要实现了用灰度共生矩阵的特征值判断一系列图像中与某一图像最相似的5张图

clc;clear;str='F:\xmf\download\RS_Dataset/';files=dir(strcat(str,'*.tif'));tzjzdl=zeros(1,8);y=zeros(1,1);for i=1:length(files)    imagename=files(i).name;    wjdz=[str,imagename];    imagedata=imread(wjdz);    Igray=rgb2gray(imagedata);    [glcm, SI] = graycomatrix(Igray, 'N', 16, 'G', [],'O',[0,1;-1,1;-1,0;-1,-1]);
%%这一步是在求灰度共生矩阵,具体的原理你感兴趣的话我再解释,不感兴趣就直接复制粘贴就ok了
stats = graycoprops(glcm,{'contrast','homogeneity','correlation','energy'});
%%这一步是在求特征值

a1=mean(stats.Contrast,2);
a2=mean(stats.Homogeneity,2);
a3=mean(stats.Correlation,2);
a4=mean(stats.Energy,2);                   %%这一步是在求均值
b1=std(stats.Contrast,0,2)^2;
b2=std(stats.Homogeneity,0,2)^2;
b3=std(stats.Correlation,0,2)^2;
b4=std(stats.Energy,0,2)^2;      %%这一步是在求方差
te=[a1,a2,a3,a4,b1,b2,b3,b4];    %%终于,我们构造出来了特征向量,欧耶
tzjzdl=[tzjzdl;te];                %构造特征矩阵的转置

end

tzjz1=tzjzdl';                       %转置回来得到特征矩阵

[tzjz,PS]=mapminmax(tzjz1);

%下面计算相似性,以第5张图片为例,计算和第5张图片最相似的五张图

for i=2:61

x1=tzjz(:,6);    %编号-1表明你想拿哪张图作为原始图

xi=tzjz(:,i);

deltax=x1-xi;

x=norm(deltax,2);

y=[y;x];

end

y([1],:)=[];

[b,k]=sort(y);

for i=1:6

d=k(i,1);

tpdz=[str,files(d).name];

h=imread(tpdz);

subplot(2,3,i)

imshow(h);

title(['和原图相比第',num2str(i),'像']);

end


原图贴在这里了


下面是在众多图片中识别出来的最相似的五幅图:


注:因为原图也在文件夹里面,所以原图和原图最像。


不足之处:这串代码识别出来的情况有时候会反常识。。。。。希望得到大家的意见。

用MATLAB实现基于灰度共生矩阵的图片识别的评论 (共 条)

分享到微博请遵守国家法律