使用scipy.fftpack进行频域过滤,ifft2无法获得理想的结果

使用scipy.fftpack进行频域过滤,ifft2无法获得理想的结果,第1张

使用scipy.fftpack进行频域过滤,ifft2无法获得理想的结果

首先,不需要在执行IFFT之前就将FFT的结果移回去。这只是大量的转移,对结果没有影响。无论您是否同时移动两个数组,两个数组的乘积都以相同的方式发生。

您在输出中注意到的问题是四个象限已交换。发生这种情况的原因是因为滤波器的大小偏移了一半,导致输出发生了相同的偏移。

为什么要转移?好吧,因为FFT将原点放在图像的左上角。这不仅对于FFT的输出如此,对于其输入也是如此。因此,您需要生成一个内核,其起源在左上角。怎么样?只需
致电 之前 申请

ifftshift
即可: __
fft

freq = fp.fft2(im)freq_kernel = fp.fft2(fp.ifftshift(kernel))convolved = freq*freq_kernelim_out = fp.ifft2(convolved).real

请注意,

ifftshift
将原点从中心移到左上角,而
fftshift
将原点从角移到中心。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5664237.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存