我在opencv中看到几个文档对此进行了解释,但是我的目标是使用numpy&卑鄙的
我想我必须用某种圆形来遮盖频谱的外部区域,因为我用60×60矩形遮盖了频谱的中心以进行低频滤波.但我不知道如何.
我想学习在使用numpy数组进行傅立叶逆变换之前,如何从幅度谱中去除高频分量.
我提供了傅里叶变换和傅里叶逆变换(用于去除低频分量)的代码.我的目标是做类似的事情,但是这次我想删除高频分量,以便能够观察重构图像的变化-就像我在删除低频后对逆FT所做的一样.
import numpy as np
import scipy
import scipy.misc
import matplotlib.pyplot as plt
from scipy import ndimage
from PIL import Image
img = Image.open('gorkem.png').convert('L')
img.save('output_file.jpg')
f = np.fft.fft2(img)
fshift = np.fft.fftshift(f) ## shift for centering 0.0 (x,y)
magnitude_spectrum = 20*np.log(np.abs(fshift))
plt.subplot(121),plt.imshow(img, cmap = 'gray')
plt.title('Input Image'), plt.xticks([]), plt.yticks([])
plt.subplot(122),plt.imshow(magnitude_spectrum, cmap = 'gray')