I am new to image processing. Using python, I have constructed a 1D wiener filter from the power spectrum of a Noisy Image, with Noise as a function of k. They both have the same dimension which is 512 x 512. The way I construct this filter is as follows:
wiener1d = (NoisyImgPS-NoisyPS)/NoisyImgPS
- This results in a 1D matrix with a size of 256.
- Then I construct an other 1D matrix, which is the sum of the original matrix flipped and the original 1D matrix centered at pixel freq 256
I want to apply this filter radially to my 2D image in the frequency space. I use
meshgrid to create a radially symmetric matrix:
then I apply it as:
Imagefft=np.fft.fft2(NoisyImage)(fast Fourier transform)(figure 3)
ImagefftShifted=np.fft.fftshift(Imagefft)(This shifts the edges to center,figure 4)
restored=ImagefftShifted*r(Apply the filter)
restored=np.fft.ifftshift(restored)(Shift the middle part to back to edges)
restored=np.fft.ifft2(restored)(Inverse Fourier transform)
As you can see from the result, the resulting image has bunch of artifacts due to the filter not being apply radially. How should I apply this filter correctly? Thank you advance for any help!