一. 椒盐噪声
在噪声的概念中,通常采用信噪比(Signal-Noise Rate, SNR)衡量图像噪声。通俗的讲就是信号占多少,噪声占多少,SNR越小,噪声占比越大。
在信号系统中,计量单位为dB,为10lg(PS/PN), PS和PN分别代表信号和噪声的有效功率。在这里,采用信号像素点的占比充当SNR,以衡量所添加噪声的多少。
椒盐噪声又称为脉冲噪声,它是一种随机出现的白点(盐噪声)或者黑点(椒噪声)。
高斯噪声是指它的概率密度函数服从高斯分布(即正态分布)的一类噪声。
二. python实现给图像添加椒盐噪声和高斯噪声
import numpy as np
import random
import cv2
from matplotlib import pyplot as plt
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 gasuss_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)
#cv.imshow("gasuss", out)
return out
# Read image
img = cv2.imread("../paojie.jpg")
# 添加椒盐噪声,噪声比例为 0.02
out1 = sp_noise(img, prob=0.02)
# 添加高斯噪声,均值为0,方差为0.001
out2 = gasuss_noise(img, mean=0, var=0.001)
# 显示图像
plt.figure(1)
plt.subplot(131)
plt.axis('off') # 关闭坐标轴
plt.title('Original')
plt.imshow(img)
plt.subplot(132)
plt.axis('off')
plt.title('Add Salt and Pepper noise')
plt.imshow(out1)
plt.subplot(133)
plt.axis('off')
plt.title('Add Gaussian noise')
plt.imshow(out2)
plt.show()
三. 实验结果
四. 参考内容
https://www.cnblogs.com/wojianxin/p/12499928.html