一. 椒鹽噪聲
在噪聲的概念中,通常采用信噪比(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()
三. 實驗結果

四. 參考內容