1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
| percent=[];%正确率数组 for n=1:10 train=[];test=[]; index=0;%测试集下标 for i=1:8 P=randperm(8);%随机序列 for j=1:4 train{i,j}=strcat(int2str(i),int2str(P(j)),'.jpg');%训练集 end for j=5:8 index=index+1; test{index}=strcat(int2str(i),int2str(P(j)),'.jpg'); %测试集 end end [M,N]=size(train);%训练集大小 X=[]; for i=1:M for j=1:N name=char(train(i,j)); img_train=imread(name);%读取训练集图片 glcm=graycomatrix(img_train,'Offset',[-1 -1],'NumLevels',4);%计算灰度共生矩阵,135度方向,d=1,量化级数4 stats = graycoprops(glcm, 'all');%对比度、相关、能量、均匀度 out= entropy(img_train); %整幅图的熵 X(i,j,:)=[stats.Contrast,stats.Correlation,stats.Energy,stats.Homogeneity,out];%训练集特征向量 end end truenum=0; for i=1:index x=[]; name=char(test(i)); img_test=imread(name);%读取测试集图片 glcm=graycomatrix(img_test,'Offset',[-1 -1],'NumLevels',4);%计算灰度共生矩阵,135度方向,d=1,量化级数4 stats = graycoprops(glcm, 'all');%对比度、相关、能量、均匀度 out= entropy(img_train); %整幅图的熵 x=[stats.Contrast,stats.Correlation,stats.Energy,stats.Homogeneity,out];%测试集特征向量 gix=[]; for j=1:M odist=[];%第j类的欧式距离数组 for k=1:N a=X(j,k,:); a=a(:)';%训练集特征向量 odist(k)=norm(a-x);%求欧氏距离 end gix(j)=min(odist);%第j类中最小欧氏距离 end [gjx,mindex]=min(gix);%最小欧氏距离及其类别 fprintf('%s属于第%d类 ',name,mindex); if mod(i,4)==0 fprintf('\n');%每四个换一次行 end num=str2num(name(1));%正确的类别 if num==mindex truenum=truenum+1;%求分类正确的数量 end end percent(n)=truenum/32;%求分类正确率 fprintf('正确率为:%f\n',percent(n)); end fprintf('10次平均正确率为:%f\n',mean(percent));%求平均分类正确率
|