图像进行平滑滤波之前需要添加噪声,以探究不同滤波函数对于不同噪声的滤除效果。 本次试验添加三种噪声:椒盐噪声、高斯噪声、泊松噪声

In [ ]:
# 引用相关库
import cv2
import random
import numpy as np
In [ ]:
# 椒盐噪声
# 1.读取图像
image = cv2.imread('./lena.png')
w, h, c = image.shape
# 2.设置添加噪声比例
prob_salt = 0.01
prob_pepper = 0.01
# 3.依据比例逐点添加噪声
image_sp = image.copy()
for i in range(w):
    for j in range(h):
        p = random.random() # 随机数生成
        if p < prob_salt:
            image_sp[i, j, :] = image_sp[i, j, :]*0 + 255
        elif p > (1-prob_pepper):
            image_sp[i, j, :] = image_sp[i, j, :]*0
cv2.imwrite('image_sp.png', image_sp)
In [ ]:
# 高斯噪声
# 1.读取图像
image = cv2.imread('./lena.png')
w, h, c = image.shape
# 2.生成高斯噪声
mean = 0
sigma = 10.0
gauss = np.random.normal(mean,sigma,(w,h,c))
# 3.合成含噪声图像
image_gau = image.copy() + gauss
# 4.设置图片添加高斯噪声之后的像素值的范围
image_gau = np.clip(image_gau, a_min=0, a_max=255)
cv2.imwrite('image_gau.png', image_gau)
In [ ]:
# 泊松噪声
# 1.读取图像
image = cv2.imread('./lena.png')
w, h, c = image.shape
# 2.给图片添加泊松噪声
image_pos = np.random.poisson(image.copy())
cv2.imwrite('image_pos.png', image_pos)