首先读入图片,然后将图片做水平和垂直分解,接着将水平和垂直纹理进行累加积分,得到水平和垂直纹理的密度、宽度等。本程序不太完善,对简单的纹理可以进行提取,对复杂的,比如经纬纱粗细差别很大,布面放置不正等情况,效果不好。有兴趣的通知可以改进一下。
clc
close all
clear all
I=imread('骑兵斜9-1.jpg');
N=1:512;
I=I(N,N);
if(size(I,3)>1)
I=rgb2gray(I);
end
I=histeq(I);
[coef,scf]=swt2(I,3,'db1');
Ioutshuiping=coef{9};
Ioutchuizhi=coef{8};
figure;
subplot(221); imshow(uint8(Ioutshuiping));title('水平方向投影');
subplot(222); imshow(uint8(Ioutchuizhi));title('垂直方向投影');
[r,c]=size(Ioutchuizhi);
for i=1:r
shuiping(i)=sum(Ioutshuiping(i,:));
end
for j=1:c
chuizhi(j)=sum(Ioutchuizhi(:,j));
end
subplot(223);plot(shuiping); title('水平方向');
subplot(224);plot(chuizhi); title('垂直方向');