%Adapted from Hussein Aly's program by Eric Dubois 2005-05-03 % Statistical parameters computation %include mean, variance and autocorrelation close all; clear all; N=64; ux=-1/2:1/N:1/2-(1/N); uy=ux; [u v]=meshgrid(ux,uy); strin = input('Enter filename of the input grayscale image: ','s'); A = im2double(imread(strin)); [I J]=size(A); prodsize=I*J; mean=sum(sum(A))/prodsize; Az=A-mean; clear A; var=((norm(Az,'fro'))^2)/prodsize; %%%%%%%%%%Dubois' Design n=0:1:N-1; wd=zeros(N,1); a0=0.40217; a1=0.49703; a2=0.09892; a3=0.00183; wd(n+1)=a0-a1*cos(2*pi*n/N)+a2*cos(2*pi*2*n/N)-a3*cos(2*pi*3*n/N); W=wd*wd'; V=norm(W(:),2)^2; PSD=zeros(N,N); shx=N/4; % overlap shy=N/4; % overlap Mx=floor((I-N)/(N-shx)); My=floor((J-N)/(N-shy)); for i=0:1:Mx, for j=0:1:My, PSD=PSD+(abs(fft2(W.*Az(i*(N-shx)+1:i*(N-shx)+N,j*(N-shy)+1:j*(N-shy)+N))).^2); end; end; PSD=PSD/V/((Mx+1)*(My+1)); WelchPSD=[]; WelchPSD=[PSD(N/2+1:N,N/2+1:N) PSD(N/2+1:N,1:N/2);PSD(1:N/2,N/2+1:N) PSD(1:N/2,1:N/2)]; ux=-1/2:1/N:1/2-(1/N); ux=ux'; uy=ux; figure,mesh(ux,uy,WelchPSD); maxplot = max(max(WelchPSD))*1.1; axis ([-(1/2) (1/2) -(1/2) (1/2) 0 maxplot]); xlabel('u (c/px)'), ylabel('v (c/px)'); title('Power Spectrum Density,(from Welch-periodgram): S_f(u,v) ') set (gca, 'XTick',[-(1/2) -(1/4) 0 (1/4) (1/2)]); set (gca, 'XTickLabel', '-1/2|-1/4|0|1/4|1/2'); %set(gca,'Fontname','Symbol'); set (gca, 'YTick',[-(1/2) -(1/4) 0 (1/4) (1/2)]); set (gca, 'YTickLabel', '-1/2|-1/4|0|1/4|1/2'); set(gca,'ydir','reverse'); %make v axis point downward colormap([0 0 0]); % use black only; dB = 20*log10(WelchPSD); ground = -80; dB (find(dB