1,读入原始图像I 2,进行FFT并且显示其频谱(要求做频谱中心化并采用log函数做对比度调整)。
时间: 2024-05-07 11:23:26 浏览: 48
用FFT进行频谱分析
4星 · 用户满意度95%
以下是Python代码实现:
```python
import cv2
import numpy as np
from matplotlib import pyplot as plt
# 读入原始图像
img = cv2.imread('lena.jpg', 0)
# 进行傅里叶变换
f = np.fft.fft2(img)
# 将频谱中心化
fshift = np.fft.fftshift(f)
# 取绝对值
magnitude_spectrum = 20 * np.log(np.abs(fshift))
# 显示频谱
plt.subplot(121), plt.imshow(img, cmap='gray')
plt.title('Input Image'), plt.xticks([]), plt.yticks([])
plt.subplot(122), plt.imshow(magnitude_spectrum, cmap='gray')
plt.title('Magnitude Spectrum'), plt.xticks([]), plt.yticks([])
plt.show()
```
其中,`cv2.imread('lena.jpg', 0)` 读入了一张灰度图像。通过 `np.fft.fft2()` 函数进行傅里叶变换,得到频谱 `f`。然后通过 `np.fft.fftshift()` 将频谱中心化。最后,取绝对值并采用log函数做对比度调整,得到 `magnitude_spectrum`。最终,通过 `plt.subplot()` 函数将原始图像和频谱显示出来。
阅读全文