使用python读出一幅灰度图像("lena_ill.png"),对其进行快速傅里叶变换,分别显示其幅度图像和相位图像。仅对相位部分进行傅里叶逆变换后查看结果图像。
时间: 2023-06-04 17:07:40 浏览: 108
好的,这个问题可以回答。以下是使用Python实现的代码:
```python
import cv2
import numpy as np
from matplotlib import pyplot as plt
# 读取灰度图像
img = cv2.imread('lena_ill.png', cv2.IMREAD_GRAYSCALE)
# 快速傅里叶变换
f = np.fft.fft2(img)
# 获取幅度和相位部分
fshift = np.fft.fftshift(f)
magnitude_spectrum = 20 * np.log(np.abs(fshift))
phase_spectrum = np.angle(fshift)
# 显示幅度和相位图像
plt.subplot(121), plt.imshow(magnitude_spectrum, cmap='gray')
plt.title('Magnitude Spectrum'), plt.xticks([]), plt.yticks([])
plt.subplot(122), plt.imshow(phase_spectrum, cmap='gray')
plt.title('Phase Spectrum'), plt.xticks([]), plt.yticks([])
plt.show()
# 对相位部分进行傅里叶逆变换
fshift_new = np.exp(1j*phase_spectrum)
f_new = np.fft.ifft2(np.fft.ifftshift(fshift_new))
img_new = np.abs(f_new)
# 显示结果图像
plt.imshow(img_new, cmap='gray')
plt.title('Inverted Image'), plt.xticks([]), plt.yticks([])
plt.show()
```
运行该代码后,首先显示出输入图像的幅度和相位图像,然后对相位部分进行傅里叶逆变换,最后显示结果图像。其中,幅度图像表示图像中每个点的强度,相位图像表示每个点的相位。
阅读全文