傅立叶滤波,回到图像

酷蟹

我的数据上有一个重复的条纹图案,我正在尝试通过傅立叶变换它并删除该图案来消除它。但是我似乎找不到找到图像空间的正确方法。

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_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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章