gpt4 book ai didi

python - 使用 1D 变换实现 2D 傅里叶逆变换

转载 作者:行者123 更新时间:2023-11-30 22:46:39 26 4
gpt4 key购买 nike

我正在尝试在 Python 中实现一些将图像转换到傅里叶域的函数,反之亦然,以完成图像处理任务。

我使用重复的 1D-DFT 实现了 2D-DFT,并且工作正常,但是当我尝试使用重复的逆 1D-DFT 实现 2D 逆 DFT 时,出现了一些奇怪的问题:当我将图像变换到其傅立叶域时然后回到图像域,看起来图像被反射并与其反射合并,如下所示:

这是输入:

img

这是输出

img

这是造成困惑的函数:

def IDFT2(fourier_image):
image = np.zeros(fourier_image.shape)
for col in range(image.shape[1]):
image[:, col] = IDFT1(fourier_image[:, col])

for row in range(image.shape[0]):
image[row, :] = IDFT1(image[row,:])

return image

我做错了什么?我非常确定 IDFT1 工作正常,常规 2D-DFT 也是如此。

最佳答案

我不使用Python,所以我没有信心分析你的代码,但我敢打赌,你很可能忘记在某个阶段实现复杂的值......

应该是:

  1. 从真实域到复杂域的DFT
  2. DFT 从复杂域到复杂域的结果列
  3. 如果需要,应用标准化
  4. 任何处理或不处理...
  5. iDFT 从复杂域到复杂域的行
  6. iDFT 从复杂域到实域的结果列
  7. 如果需要,应用标准化

如果您在第二遍中仅使用实数域到复数域DFT/iDFT(项目符号#2,#6),那么它将创建镜像,因为实数值的 DFT 是一个镜像序列......顺便说一句。如果您先处理行或列并不重要...您也可以在DFT中先处理行,在iDFT中先处理列,结果应该是相同的+/- float 错误...

更多信息请参见

以及其中的所有子链接,尤其是2D FFT 和包装示例,以便您可以将结果与有效的结果进行比较

关于python - 使用 1D 变换实现 2D 傅里叶逆变换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40813454/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com