python实现对一副带有噪声的图像采用两种以上频域的滤波方法实现平滑处理
时间: 2024-05-15 10:16:24 浏览: 157
对噪声图像进行处理
以下是Python实现对一副带有噪声的图像采用两种以上频域的滤波方法实现平滑处理的示例代码:
```python
import cv2
import numpy as np
from matplotlib import pyplot as plt
# 读取带有噪声的图像
img = cv2.imread('noisy_img.jpg', 0)
# 傅里叶变换
f = np.fft.fft2(img)
fshift = np.fft.fftshift(f)
# 高斯滤波
rows, cols = img.shape
crow, ccol = rows//2, cols//2
mask = np.zeros((rows, cols), np.uint8)
mask[crow-30:crow+30, ccol-30:ccol+30] = 1
fshift = fshift * mask
f_ishift = np.fft.ifftshift(fshift)
img_back = np.fft.ifft2(f_ishift)
img_back = np.abs(img_back)
# 中值滤波
img_median = cv2.medianBlur(img, 5)
# 绘制结果
plt.subplot(131), plt.imshow(img, cmap='gray')
plt.title('Original Image'), plt.xticks([]), plt.yticks([])
plt.subplot(132), plt.imshow(img_back, cmap='gray')
plt.title('Gaussian Filter'), plt.xticks([]), plt.yticks([])
plt.subplot(133), plt.imshow(img_median, cmap='gray')
plt.title('Median Filter'), plt.xticks([]), plt.yticks([])
plt.show()
```
解释:
首先读取带有噪声的图像。然后使用傅里叶变换将图像转换到频域。接着,采用高斯滤波和中值滤波两种不同的频域滤波方法进行平滑处理。高斯滤波是利用高斯函数对图像进行平滑处理,可以有效地去除高斯噪声。中值滤波是将每个像素周围的像素值排序,取中间值作为该像素的值,可以有效地去除椒盐噪声。最后,将处理后的图像绘制出来,便于对比分析不同滤波方法的效果。
阅读全文