椒盐噪声代码:
import os
import cv2
import numpy as np
import cv2
import numpy as np
import random
def sp_noise(image, prob):
# 添加椒盐噪声
# prob:噪声比例
output = np.zeros(image.shape, np.uint8)
thres = 1 - prob
for i in range(image.shape[0]):
for j in range(image.shape[1]):
rdn = random.random()
if rdn < prob:
output[i][j] = 0
elif rdn > thres:
output[i][j] = 255
else:
output[i][j] = image[i][j]
return output
def gaussian_noise(image, mean=0, var=0.001):
# 添加高斯噪声
# mean : 均值
# var : 方差
image = np.array(image / 255, dtype=float)
noise = np.random.normal(mean, var ** 0.5, image.shape)
out = image + noise
if out.min() < 0:
low_clip = -1.
else:
low_clip = 0.
out = np.clip(out, low_clip, 1.0)
out = np.uint8(out * 255)
return out
def sharpen(image):
# 锐化
kernel = np.array([[0, -1, 0], [-1, 5, -1], [0, -1, 0]], np.float32)
out = cv2.filter2D(image, -1, kernel=kernel)
return out
src = cv2.imread('./cat/cat1.png')
img_sp = sp_noise(src, 0.05)
img_gaussian = gaussian_noise(src, 0.1, 0.03)
cv2.imshow('src', src)
cv2.imshow('img_sp', img_sp)
cv2.imshow('img_gaussian', img_gaussian)
cv2.waitKey(0)
高斯噪声代码:
import numpy as np
import cv2
def gasuss_noise(image, mu=0.0, sigma=0.1):
"""
添加高斯噪声
:param image: 输入的图像
:param mu: 均值
:param sigma: 标准差
:return: 含有高斯噪声的图像
"""
image = np.array(image / 255, dtype=float)
noise = np.random.normal(mu, sigma, image.shape)
gauss_noise = image + noise
if gauss_noise.min() < 0:
low_clip = -1.
else:
low_clip = 0.
gauss_noise = np.clip(gauss_noise, low_clip, 1.0)
gauss_noise = np.uint8(gauss_noise * 255)
return gauss_noise
if __name__ == '__main__':
# ----------------------读取图片-----------------------------
img = cv2.imread("./cat/cat1.png")
# --------------------添加高斯噪声---------------------------
out2 = gasuss_noise(img, mu=0.0, sigma=0.1)
# ----------------------显示结果-----------------------------
cv2.imshow('origion_pic', img)
cv2.imshow('gauss_noise', out2)
cv2.waitKey(0)