opencv 实现傅里叶变换
时间: 2023-10-22 22:05:19 浏览: 106
傅里叶变换是一种将信号从时域转换到频域的方法,OpenCV提供了傅里叶变换的函数,可以实现对图像的傅里叶变换。
以下是一个简单的示例代码:
```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))
# 反向傅里叶变换
f_ishift = np.fft.ifftshift(fshift)
img_back = np.fft.ifft2(f_ishift)
img_back = np.abs(img_back)
# 显示结果
plt.subplot(131), plt.imshow(img, cmap='gray')
plt.title('Input Image'), plt.xticks([]), plt.yticks([])
plt.subplot(132), plt.imshow(magnitude_spectrum, cmap='gray')
plt.title('Magnitude Spectrum'), plt.xticks([]), plt.yticks([])
plt.subplot(133), plt.imshow(img_back, cmap='gray')
plt.title('Image after HPF'), plt.xticks([]), plt.yticks([])
plt.show()
```
在这个示例中,我们首先读取一张图像,然后对其进行傅里叶变换,得到它的频域表示。接着,我们对频域表示进行一些处理,比如将低频分量移到图像中心,以便于后续的滤波操作。最后,我们对处理后的频域表示进行反向傅里叶变换,得到原图像的滤波结果。
在这个示例中我们展示了三个图像:原图像、傅里叶变换后的频域表示、反向傅里叶变换后的滤波结果。您可以通过调整处理过程中的参数,来探索不同的滤波效果。
阅读全文