目前我正在尝试理解二维傅里叶变换。我想将一个图像进行傅里叶变换,然后返回仅包含幅度谱的结果,就像这个网站上的话题所示:
https://dsp.stackexchange.com/questions/16995/image-reconstructionphase-vs-magnitude
但是,使用Spyder IDE时,我的图像(使用上面链接中的相同图像)会出现一些奇怪的伪影,如下所示:
原始图像:
幅度谱:
我使用的代码是Python中使用Numpy(np)、OpenCV和Matplotlib:
import numpy as np
import cv2
from matplotlib import pyplot as plt
from os import listdir
from os.path import isfile, join
image1 = cv2.imread("Images/test2.png", 0)
fourier = np.fft.fft2(image1)
magnitude = abs(fourier)
inverse = np.fft.ifftshift(np.fft.ifft2(magnitude))
plt.subplot(), plt.imshow(np.uint8(inverse), cmap='gray')
plt.title(''), plt.xticks([]), plt.yticks([])
plt.show()
我做错了什么?
更新:添加了导入
uint8
? - MB-Finverse
的值是否适合8字节整数吗?(我敢打赌它们不适合。)试着让自己的生活更轻松,转换为np.float64
类型。同时考虑一下你是否真的想要丢弃虚部。 - MB-F