function w=fourfilter(im,a,b)


% Filtr oparty na dwuwymiarowej transformacie fouriera
% Funkcja tworzy dwuwymiarowa transformate fouriera z macierzy im,
% nastepnie wyzerowuje wszystkie czestotliwosci mniejsze od a i wieksze od b
% i liczona jest odwrotna transformata fouriera.
% parametry a i b sa unormowane i moga przyjmowac wartosci od 0 do 1.

im=double(im(:,:,1));

%pole wspolrzednych
[n,m]=size(im);


x=[-floor(m/2):ceil(m/2)-1];
x=x(ones(n,1),:);
y=[-floor(n/2):ceil(n/2)-1];
y=(y(ones(m,1),:))';

x=x/floor(m/2);
y=y/floor(n/2);

r=sqrt(x.^2+y.^2);

%fg=abs(y./(r+(r==0)));
%figure
%imagesc(fg)
%fg=abs(sin(abs(fg*pi)));
r=((r>a).*(r<b));

%size(r)
%r=r.*fg;
%figure
%imagesc(r)



f=fft2(im);
f=fftshift(f);

%size(f)

f=f.*r;
f=ifftshift(f);
w=real(ifft2(f));

