[filename,pathname]=uigetfile('*.jpg','pick a file');
jpg=strcat(pathname,filename);
a=imread(jpg);
%figure,imshow(a),title('原始图像')
HSI=rgb2hsv(a);
%figure,imshow(HSI),title('HSI彩色图像')
HSIG=rgb2gray(HSI); %hsig;灰度图像
%figure,imshow(HSIG),title('灰度图像')
%imwrite(b,'杂草灰度图像.jpg');
%计算64位灰度共生矩阵
glcmsl=graycomatrix(HSIG,'numlevels',64,'offset',[0 1;-1 1;-1 0;-1 -1]);
%纹理特征统计值(对比度、相关性、熵、平稳度、二阶矩也叫能量)
stats=graycoprops(glcmsl,{'contrast','correlation','energy','homogeneity'});
ga1=glcmsl(:,:,1); %0度
ga2=glcmsl(:,:,2); %45度
ga3=glcmsl(:,:,3); %90度
ga4=glcmsl(:,:,4); %135度
energya1=0;energya2=0;energya3=0;energya4=0;
for i=1:64
for j=1:64
energya1=energya1+sum(ga1(i,j)^2);
energya2=energya2+sum(ga2(i,j)^2);
energya3=energya3+sum(ga3(i,j)^2);
energya4=energya4+sum(ga4(i,j)^2);
j=j+1;
end
i=i+1;
end
s1=0;s2=0;s3=0;s4=0;s5=0;
for m=1:4
s1=stats.Contrast(1,m)+s1;
m=m+1;
end
for m=1:4
s2=stats.Correlation(1,m)+s2;
m=m+1;
end
for m=1:4
s3=stats.Energy(1,m)+s3;
m=m+1;
end
for m=1:4
s4=stats.Homogeneity(1,m)+s4;
m=m+1;
end
s5=0.000001*(energya1+energya2+energya3+energya4);%视情况而定前面的系数值
temp0=[s1 s2 s3 s4 s5]
plot(temp0,'b.') %b. 表示断点显示