我想在python中实现一些将图像转换为其傅立叶域的功能,反之亦然,以实现图像处理任务。
我使用重复的1D-DFT实现了2D-DFT,并且它工作得很好,但是当我试图使用重复的反向1D-DFT实现2D反向DFT时,出现了一些奇怪的问题 - 当我将图像转换为其傅里叶域时,然后再返回到图像域,它看起来像图像被反射,并与它的反射合并,如在这里可以看到:使用1D变换实现二维逆傅里叶变换
这是输入:
这就是输出
这是负责乱七八糟的功能:
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也是如此。
为什么你有你的结果IDFT1(fourier_image [:,col])列和IDFT1(图像[行,:])行而不是IDFT1(fourier_image [row,:])?请为IDFT1提供您的代码。 – DimKoim
据我所知,在第二阶段(行),我需要操作上一阶段的输出(colums通过)。我错了吗? –
@montecarlo您可能错误地编辑了图像(我将它们添加回来)。在标记代码中,'![bla bla] [1]'意味着从链接列表中首次链接到图像。 '!'表示没有它的图像只是链接 – Spektre