Is there an accurate way to create an aliased image from the Fourier transform of the original image?
in other words, i have the Fourier coefficients of an image and i want to make down-sample in frequency domain.
I am trying to construct an aliasing image.
I=rgb2gray(imread('Liver.png')); % a 512*512 image
subplot(1,2,1),imshow(I),title('Original image') % shown on the left side of figure below
when you implement F=fftshift(fft2(I));
, the corresponding axis represent the frequency range of [-255:256]/512;
and the cut-off frequency U = V = 256/512 = 0.5;
based on Nyquist Sampling Theorem, the sampling periods in spatial domain should satisfy
delta_x<=1/(2*U)=1;
delta_y<=1/(2*V)=1;
to avoid the aliasing.
So if your bandwidth of recorder is 64 * 64
, the corresponding point interval in spatial domain is 1 / (64/256) = 4. Thus,
Ia=imresize(I(1:4:end,1:4:end),[512 512]);
subplot(1,2,2),imshow(Ia),title('Aliased image') % shown on the right side of the figure below
You can observe the aliasing effect at the edge.
Yes, there is a (simple) way to do this.
Aliasing comes from the fact that the bandwidth of the recording device is smaller than the bandwidth of the signal. Out-of-bandwidth frequencies are not zeroed-out however, but injected into the captured part of the frequency domain.
You can find into which frequency coefficient they are injected without any computation by using the periodicity of the DFT. If you suppose that the bandwidth of the recorder is some rectangle in the frequency domain, then this rectangle is replicated (translated) in each direction. So, you just have to translate mentally this rectangle to see which (in-bandwidth) position corresponds to an aliased frequency.