python实现图像二维傅里叶变换的代码
时间: 2023-06-01 15:07:32 浏览: 130
以下是 Python 实现图像二维傅里叶变换的代码:
```Python
import cv2
import numpy as np
img = cv2.imread('image.jpg', cv2.IMREAD_GRAYSCALE) # 读入灰度图像
dft = cv2.dft(np.float32(img), flags = cv2.DFT_COMPLEX_OUTPUT) # DFT
dft_shift = np.fft.fftshift(dft) # 将低频分量移到中心
magnitude_spectrum = 20*np.log(cv2.magnitude(dft_shift[:, :, 0], dft_shift[:, :, 1])) # 频谱图像的幅度谱
cv2.imshow('Input Image', img)
cv2.imshow('Magnitude Spectrum', magnitude_spectrum.astype(np.uint8))
cv2.waitKey()
cv2.destroyAllWindows()
```
这段代码会读取名为 `image.jpg` 的图像,并对其进行二维傅里叶变换,然后将频谱图像的幅度谱进行对数变换并显示出来。如果要对图像进行反变换,可以使用以下代码:
```Python
idft_shift = np.fft.ifftshift(dft_shift) # 将频域图像移到左上角
idft = cv2.idft(idft_shift) # IDFT
img_back = cv2.magnitude(idft[:, :, 0], idft[:, :, 1]) # 幅度谱的反变换
cv2.imshow('Reconstructed Image', img_back.astype(np.uint8))
cv2.waitKey()
cv2.destroyAllWindows()
```
这段代码将对调整过的频域图像进行反变换,得到原图像的幅度谱。最后将其显示出来。
阅读全文