Python 傅里叶滤波,返回图像

Python 傅里叶滤波,返回图像,python,filtering,fft,Python,Filtering,Fft,我的数据上有一个重复的条纹图案,我正试图通过傅里叶变换并删除该图案来得到它。然而,我似乎找不到返回图像空间的正确方法 red_cube_array = (cube_array - np.median(cube_array)) * taper im_fft = (fftpack.fft2(red_cube_array)) im_po = fftpack.fftshift((np.conjugate(im_fft) * im_fft).real) mask = np.empty_like(

我的数据上有一个重复的条纹图案,我正试图通过傅里叶变换并删除该图案来得到它。然而,我似乎找不到返回图像空间的正确方法

red_cube_array = (cube_array - np.median(cube_array)) * taper

im_fft  = (fftpack.fft2(red_cube_array))
im_po   = fftpack.fftshift((np.conjugate(im_fft) * im_fft).real)

mask = np.empty_like(im_po[0])*0 + 1
mask[417:430, 410:421] = 0
mask[430:443, 438:450] = 0

im_po_mask = im_po * mask

im_ifft = fftpack.ifft2(fftpack.ifftshift(im_po_mask))

taper
只是一个阵列,它在进行FFT时平滑边缘以消除边缘效应。然后,我对阵列进行FFT运算,并粗略地过滤掉粘液。然而,回去似乎不起作用。我是不是在什么地方绊倒了

问题出现在以下行:

im_po = fftpack.fftshift((np.conjugate(im_fft) * im_fft).real)
这实质上是计算信号的幅度(在频域),丢弃相位信息。如果没有相位信息,空间域图像无法唯一地重建

要解决此问题,只需在复值频域
im\u fft
数据上应用掩码:

im_po = fftpack.fftshift(im_fft)

mask = np.empty_like(im_po[0])*0 + 1
mask[417:430, 410:421] = 0
mask[430:443, 438:450] = 0

im_po_mask = im_po * mask

啊,好的,然后我可以做结果的ifft?我会给你一个惠斯勒斯是对的。在进行逆变换后,如果存在虚部,您可能也必须放弃它。