在进行纹理分析时计算纹理周期有很大作用,而自相关函数用来计算纹理周期具有很好的效果。要计算纹理图像的自相关函数值,可以使用matlab里面的xcorr2函数。具体代码如下:
clear;clc;
I = imread('1.jpg');
GRAY=rgb2gray(I);
LENGTH=40;
WIDTH=size(I,2);
HEIGHT=size(I,1);
MED=medfilt2(GRAY);
corr=xcorr2(MED);
for i=0:LENGTH
rho(i+1)=WIDTH*corr(HEIGHT,WIDTH-i)/(corr(HEIGHT,WIDTH)*(WIDTH-i));
end
subplot(1,2,1);plot(linspace(0,LENGTH,LENGTH+1),rho, '-*');
[peaks,location]=findpeaks(rho);
count=size(peaks,2);
diff=zeros(1,count);
diff(1)=location(1)-1;
for i=1:count-1
diff(i+1)=location(i+1)-location(i);
end
subplot(1,2,2);plot(linspace(1,count,count),diff, '-*');
period=round(sum(diff)/count)