加高斯噪声的图像平均
from skimage import io
import random
import numpy as np
import cv2 as cv
#高斯噪声
def gauss_noise(image):
img = image.astype(np.int16) # 此步是为了避免像素点小于0,大于255的情况
mu = 0
sigma =10
for i in range(img.shape[0]):
for j in range(img.shape[1]):
for k in range(img.shape[2]):
img[i, j, k] = img[i, j, k] + random.gauss(mu=mu, sigma=sigma)
img[img > 255] = 255
img[img < 0] = 0
img = img.astype(np.uint8)
return img
#多图像平均去噪声
def image_average(src,M):
dst = np.zeros_like(src).astype(np.float32)
for i in range(M):
dst += np.float32(gauss_noise(src))
dst = dst / M
dst = np.clip(dst,0,255).astype(np.uint8)
return dst
if __name__ == '__main__':
img = io.imread("E:/pythontupian/3.jpg")
# noise_img = salt_and_pepper_noise(img)
gauss_img = gauss_noise(img)
image_average1=image_average(gauss_img,2)
cv.imshow("image", img)
cv.imshow("gauss_noise", gauss_img)
cv.imshow(" image_average1", image_average1)
cv.waitKey(0)
当M=2时的结果
当M=10的结果
当M=20的结果