傅里叶图像去噪 python
时间: 2023-09-16 07:01:06 浏览: 128
DFT的matlab源代码-FFTApp:从零开始的快速傅立叶变换的Python实现,提供了压缩和去噪图像的功能
傅里叶图像去噪是一种常用的图像处理方法,其基本思想是利用傅里叶变换将图像从空域转换到频域,然后进行滤波处理,再进行逆傅里叶变换将图像恢复到空域。
在Python中,我们可以使用NumPy库来进行傅里叶变换和逆变换,以及进行频域滤波处理。
首先,我们需要导入必要的库:
```
import cv2
import numpy as np
from matplotlib import pyplot as plt
```
然后,读取待去噪的图像并转换为灰度图像:
```
image = cv2.imread('image.jpg', 0)
```
接下来,我们可以使用傅里叶变换将图像转换到频域:
```
f = np.fft.fft2(image)
fshift = np.fft.fftshift(f)
```
然后,我们可以构建一个滤波器,将高频噪声滤除:
```
rows, cols = image.shape
crow, ccol = rows // 2, cols // 2
fshift[crow - 30:crow + 30, ccol - 30:ccol + 30] = 0
```
接下来,我们可以进行逆傅里叶变换将图像恢复到空域:
```
ishift = np.fft.ifftshift(fshift)
image_denoised = np.fft.ifft2(ishift)
image_denoised = np.abs(image_denoised)
```
最后,我们可以可视化去噪后的图像:
```
plt.subplot(121), plt.imshow(image, cmap='gray')
plt.title('Original Image'), plt.xticks([]), plt.yticks([])
plt.subplot(122), plt.imshow(image_denoised, cmap='gray')
plt.title('Denoised Image'), plt.xticks([]), plt.yticks([])
plt.show()
```
通过调整滤波器的大小和位置,我们可以根据实际需要对图像进行去噪处理。
阅读全文