使用自相关函数的纹理图像周期计算

在进行纹理分析时计算纹理周期有很大作用,而自相关函数用来计算纹理周期具有很好的效果。要计算纹理图像的自相关函数值,可以使用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)
使用自相关函数的纹理图像周期计算_第1张图片

自相关函数值的计算结果如下,最后计算出的纹理周期为6个像素。

使用自相关函数的纹理图像周期计算_第2张图片

你可能感兴趣的:(织物疵点检测,纹理,自相关函数,matlab,疵点检测,图像处理)