I am not sure how to apply low-pass and high-pass filters on a jpg image.
The filters are calculated by:
function [cL,cH] = getfilters(radius)
[x,y] = meshgrid(-128:127,-128:127);
z = sqrt(x.^2+y.^2);
cL = z < radius;
cH = ~cL;
end
so to filter the image, I have:
img = imread('a jpg image')
ft = fftshift(fft2(img));
[cL, cH] = getfilters(40);
l_ft = ft .* cL;
h_ft = ft .* cH;
low_filtered_image = ifft2(ifftshift(l_ft), 'symmetric');
high_filtered_image = ifft2(ifftshift(h_ft), 'symmetric');
To display the filtered inverse Fourier transform:
low_f = uint8(abs(low_filtered_image));
high_f = uint8(abs(high_filtered_image));
figure, imshow(low_f); figure, imshow(high_f);
This is the output:
If this code is wrong, what should I do to fix it?