我的数据上有重复的条纹图案,我正在尝试通过傅立叶变换并将其删除来消除它。但是我似乎找不到找到图像空间的正确方法。
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,并非常粗略地滤除黑点。但是,返回似乎无效。我在某个地方绊倒吗?
答案 0 :(得分:4)
问题出现在以下行:
im_po = fftpack.fftshift((np.conjugate(im_fft) * im_fft).real)
这实质上是计算信号的幅度(在频域中),从而丢弃相位信息。没有相位信息,就无法唯一地重建空间域图像。
要解决此问题,只需对复杂值频域im_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