I'm trying to remove what looks like a checkered noise pattern that has been added to an image. Comparing the 2D FFTs
The one on the left is the original, while the middle one is the corrupted one. I've been trying to remove the added bright spots on the diagonals. The far right FFT is my attempt at isolating the diagonals, which I did with an X shaped filter.
[f1,f2] = freqspace(300,'meshgrid');
Hd = zeros(300);
d = f1 + f2 == 2 * f1;
f = f1 + f2 == 0;
d = f | d;
d = logical(d);
Hd(d) = 0.75;
h = fsamp2(Hd);
However I seem to be unable to isolate the features. Are there any known algorithms for such a process? Isolating directions or points on an FFT.
The MSE of the middle image is 0.0084 and the lowest I have gotten it to is 0.0031. With a combination of a low pass filter and a median filter. However the image was quite blurry and I don't think it would be possible to get it very close to the original after that much information loss.
This is a HW question, so please only give hints.
Here are the two images, noisy and original in that order