又用python做了FFT看起来结果一致
附上代码,仅供参考
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.colors import LogNorm
from scipy.fft import fft2, fftshift
# 读取图像
image = plt.imread('path_to_your_image.jpg') # 替换为你的图像路径
# 将图像转换为灰度(如果需要)
if len(image.shape) == 3: # 如果是彩色图像
image = np.dot(image[...,:3], [0.2989, 0.5870, 0.1140])
# 执行快速傅里叶变换
f = fft2(image)
fshift = fftshift(f)
# 计算幅度谱
magnitude_spectrum = 20 * np.log(np.abs(fshift))
# 显示FFT结果
plt.figure(figsize=(10, 5))
# 显示幅度谱
plt.subplot(121)
plt.imshow(magnitude_spectrum, cmap='gray')
plt.title('Magnitude Spectrum')
plt.axis('off')
# 显示中心化后的FFT结果
plt.subplot(122)
plt.imshow(np.abs(fshift), cmap='gray')
plt.title('FFT Shifted')
plt.axis('off')
plt.show()
|