%this program is written at 1995, and modified at 1380/4/5 and calculate the angular power spectrum function [theta,ang_ps]=angpwr2 %ANGPWR Angular power spectrum. % [ANGLE ANG_PS]=ANGPWR(sizem,FIN,FOUT) returns angular % power spectrum of an (image) matrix with sizem sizem x sizem % which exists in FIN file and stores it into FOUT file. % % EXAMPLE: % % [beta pwr]=angpwr(256,'c:\par.val','c:\par.ang'); [filen,pathf]=uigetfile('New Folder\*.jpg','Choose a fabric image'); if filen==0 % Choose Cancel return end value=imread([pathf,filen]); %value=value./mean2(value); [r,c]=size(value); if r >c r=c; end value=value(1:r,1:r); F=fft2(value); %F=F./mean2(F); sizem=r; clear value ps=F(1:sizem/2,1:sizem/2).*conj(F(1:sizem/2,1:sizem/2)); clear F ps_ave=sum(sum(ps))/((sizem/2)*(sizem/2)); r=0:1:(sizem/2)-1; for theta=0:1:200, th_rad=(90-abs(90-abs(180-theta)))*pi/180.0;%Convert to Radian x=round(r*cos(th_rad)); y=round(r*sin(th_rad)); pwr=0.0; for i=1:length(r), pwr=pwr+ps(x(i)+1,y(i)+1); end pwr=pwr-ps(1,1); ang_ps(theta+1)=pwr/ps_ave; end theta=0:1:200; if nargout==0 figure('numbertitle','off','name',[pathf,filen]);plot(theta,ang_ps); end;