用快速傅里叶函数编程画出灰度图像的频谱图
时间: 2024-05-03 18:22:20 浏览: 126
Python读取图像并显示灰度图的实现
由于快速傅里叶变换(FFT)是一个非常常见的算法,因此可以使用许多编程语言中已经实现的库函数来实现。以下是使用Python中的numpy和matplotlib库来生成图像频谱的示例代码:
```python
import numpy as np
import matplotlib.pyplot as plt
import cv2
# 读取图像
img = cv2.imread('lena.png', 0)
# 对图像进行FFT变换
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()
```
在这个例子中,我们使用OpenCV库读取了一张灰度图像,然后使用快速傅里叶变换将其转换为频域。我们计算了频谱图像,并使用matplotlib库绘制了它。在绘制频谱图像时,我们使用20 * log来缩放频谱幅度以便更好地可视化。
阅读全文