python实现空域平滑滤波:将一幅灰度图像+不同强度噪声高斯噪声和椒盐噪声然后分别使用不同模板大小335577的均值滤波器、中值滤波器进行处理提示:1加噪声使用imnoise函数help看其函数使用说明2均值、中值滤波器可利用fspecial函数、filter函数、medfilt2函数等
以下是代码实现:(以高斯噪声为例)
import cv2
import numpy as np
# 读取图像并加入高斯噪声
img = cv2.imread('lena.png', 0)
img_noise = cv2.GaussianBlur(img, (5, 5), 5) + 0.1*np.random.randn(*img.shape)*255
# 均值滤波器
img_mean_3 = cv2.filter2D(img_noise, -1, np.ones((3,3))/9)
img_mean_5 = cv2.filter2D(img_noise, -1, np.ones((5,5))/25)
img_mean_7 = cv2.filter2D(img_noise, -1, np.ones((7,7))/49)
# 中值滤波器
img_median_3 = cv2.medianBlur(img_noise, 3)
img_median_5 = cv2.medianBlur(img_noise, 5)
img_median_7 = cv2.medianBlur(img_noise, 7)
# 显示图像
cv2.imshow('original', img)
cv2.imshow('noise', img_noise.astype(np.uint8))
cv2.imshow('mean_3', img_mean_3.astype(np.uint8))
cv2.imshow('mean_5', img_mean_5.astype(np.uint8))
cv2.imshow('mean_7', img_mean_7.astype(np.uint8))
cv2.imshow('median_3', img_median_3.astype(np.uint8))
cv2.imshow('median_5', img_median_5.astype(np.uint8))
cv2.imshow('median_7', img_median_7.astype(np.uint8))
cv2.waitKey(0)
cv2.destroyAllWindows()
其中,cv2.GaussianBlur函数用于加入高斯噪声,cv2.filter2D函数用于进行均值滤波,cv2.medianBlur函数用于进行中值滤波。其他噪声和模板大小的处理方法类似
原文地址: https://www.cveoy.top/t/topic/cd7l 著作权归作者所有。请勿转载和采集!