clc,close all,clear
for i =4:4
str = ['..\检测图片\布匹5.6\' num2str(i) '-1.bmp'];
I=imread(str);
% J=rgb2gray(I);
% figure,imshow(J)
H=histeq(I);
% figure,imshow(H)
[X,map]=gray2ind(H,256);
figure,subplot(4,4,1);
image(I);
colormap(map);
title('原始图像');
subplot(4,4,2);
image(H);
colormap(map);
title('灰度均衡化图像');
%使用db4对X进行尺度为3的分解
[c,s]=wavedec2(X,2,'db8');
%从小波分解结构[c,s]进行尺度为2的高频重构
hd3=wrcoef2('h',c,s,'db8',1);
vd3=wrcoef2('v',c,s,'db8',1);
subplot(4,4,5);
image(hd3);
colormap(map);
title('尺度为2时的水平高频图像');
subplot(4,4,6);
image(vd3);
colormap(map);
title('尺度为2时的垂直高频图像');
%水平方向高频图像的特征值
for i=1:64
dwin(:,:,i)=hd3((4*i-3):4*i,1:256);
%计算四个特征值:能量、方差、熵、极差
energy(i)=mean(mean(dwin(:,:,i)));
std(i)=std2(dwin(:,:,i));
ent(i)=entropy(dwin(:,:,i));
M(i)=sum(range(dwin(:,:,i)));
end
% for i=1:32
% dwin(:,:,i)=hd3((8*i-7):8*i,1:256);
% %计算四个特征值:能量、方差、熵、极差
% energy(i)=mean(mean(dwin(:,:,i)));
% std(i)=std2(dwin(:,:,i));
% ent(i)=entropy(dwin(:,:,i));
% M(i)=sum(range(dwin(:,:,i)));
% end
subplot(4,4,9);
plot((energy-mean(energy))/(max(energy-min(energy))));
axis([0 64 (-1) 1]);
title('水平 能量');
subplot(4,4,10);
plot((std-mean(std))/(max(std)-min(std)));
axis([0 64 (-1) 1]);
title('水平 方差');
subplot(4,4,11);
plot((ent-mean(ent))/(max(ent)-min(ent)));
axis([0 64 (-1) 1]);
title('水平 熵');
subplot(4,4,12);
plot((M-mean(M))/(max(M)-min(M)));
axis([0 64 (-1) 1]);
title('水平 极差');
%垂直方向高频图像的特征值
for k=1:64
dwin1(:,:,k)=vd3(1:256,(4*k-3):4*k);
%计算四个特征值:能量、方差、熵、极差
energy1(k)=mean(mean(dwin1(:,:,k)));
std1(k)=std2(dwin1(:,:,k));
ent1(k)=entropy(dwin1(:,:,k));
M1(k)=sum(range(dwin1(:,:,k)));
end
% for k=1:32
% dwin1(:,:,k)=vd3(1:256,(8*k-7):8*k);
% %计算四个特征值:能量、方差、熵、极差
% energy1(k)=mean(mean(dwin1(:,:,k)));
% std1(k)=std2(dwin1(:,:,k));
% ent1(k)=entropy(dwin1(:,:,k));
% M1(k)=sum(range(dwin1(:,:,k)));
% end
subplot(4,4,13);
plot((energy1-mean(energy1))/(max(energy1-min(energy1))));
axis([0 64 (-1) 1]);
title('垂直 能量');
subplot(4,4,14);
plot((std1-mean(std1))/(max(std1)-min(std1)));
axis([0 64 (-1) 1]);
title('垂直 方差');
subplot(4,4,15);
plot(( ent1-mean( ent1))/(max( ent1)-min( ent1)));
axis([0 64 (-1) 1]);
title('垂直 熵');
subplot(4,4,16);
plot((M1-mean(M1))/(max(M1)-min(M1)));
axis([0 64 (-1) 1]);
title('垂直 极差');
end