Jpg 添加高斯、椒盐、泊松噪声,实现中值滤波的完整python 代码
时间: 2024-05-15 20:17:41 浏览: 22
好的,以下是代码:
```
import cv2
import numpy as np
# 读取图片
img = cv2.imread('example.jpg', cv2.IMREAD_GRAYSCALE)
# 添加高斯噪声
mean = 0
var = 100
sigma = var ** 0.5
gauss = np.random.normal(mean, sigma, img.shape)
gauss = gauss.reshape(img.shape)
img_gauss = img + gauss
# 添加椒盐噪声
s_vs_p = 0.5
amount = 0.04
salt = np.ceil(amount * img.size * s_vs_p)
coords = [np.random.randint(0, i - 1, int(salt)) for i in img.shape]
img_salt = img.copy()
for coord in coords:
img_salt[coord[0], coord[1]] = 255
pepper = np.ceil(amount * img.size * (1 - s_vs_p))
coords = [np.random.randint(0, i - 1, int(pepper)) for i in img.shape]
img_saltpepper = img_salt.copy()
for coord in coords:
img_saltpepper[coord[0], coord[1]] = 0
# 添加泊松噪声
lam = 10
poisson = np.random.poisson(lam, img.shape)
img_poisson = img + poisson
# 中值滤波
kernel_size = 3
img_gauss_median = cv2.medianBlur(img_gauss, kernel_size)
img_salt_median = cv2.medianBlur(img_salt, kernel_size)
img_saltpepper_median = cv2.medianBlur(img_saltpepper, kernel_size)
img_poisson_median = cv2.medianBlur(img_poisson, kernel_size)
# 显示图片
cv2.imshow('Original Image', img)
cv2.imshow('Gauss Noise Image', img_gauss)
cv2.imshow('Salt Noise Image', img_salt)
cv2.imshow('Salt & Pepper Noise Image', img_saltpepper)
cv2.imshow('Poisson Noise Image', img_poisson)
cv2.imshow('Gauss Noise Median Filter Image', img_gauss_median)
cv2.imshow('Salt Noise Median Filter Image', img_salt_median)
cv2.imshow('Salt & Pepper Noise Median Filter Image', img_saltpepper_median)
cv2.imshow('Poisson Noise Median Filter Image', img_poisson_median)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
这段代码实现了对一个灰度图像添加高斯、椒盐、泊松噪声,并对这些噪声图像进行了中值滤波处理。