導讀
這篇文章主要介紹如何利用opencv來對圖像添加各類噪聲,原圖
高斯噪聲
高斯噪聲就是給圖片添加一個服從高斯分布的噪聲
,可以通過調節(jié)高斯分布標準差(sigma)
的大小來控制添加噪聲程度,sigma
越大添加的噪聲越多圖片損壞的越厲害
#讀取圖片
img = cv2.imread("demo.png")
#設置高斯分布的均值和方差
mean = 0
#設置高斯分布的標準差
sigma = 25
#根據(jù)均值和標準差生成符合高斯分布的噪聲
gauss = np.random.normal(mean,sigma,(img_height,img_width,img_channels))
#給圖片添加高斯噪聲
noisy_img = image + gauss
#設置圖片添加高斯噪聲之后的像素值的范圍
noisy_img = np.clip(noisy_img,a_min=0,a_max=255)
#保存圖片
cv2.imwrite("noisy_img.png",noise_img)
椒鹽噪聲
椒鹽噪聲就是給圖片添加黑白噪點
,椒指的是黑色的噪點(0,0,0)
鹽指的是白色的噪點(255,255,255)
,通過設置amount
來控制添加噪聲的比例,值越大添加的噪聲越多,圖像損壞的更加嚴重
#讀取圖片
img = cv2.imread("demo.png")
#設置添加椒鹽噪聲的數(shù)目比例
s_vs_p = 0.5
#設置添加噪聲圖像像素的數(shù)目
amount = 0.04
noisy_img = np.copy(image)
#添加salt噪聲
num_salt = np.ceil(amount * image.size * s_vs_p)
#設置添加噪聲的坐標位置
coords = [np.random.randint(0,i - 1, int(num_salt)) for i in image.shape]
noisy_img[coords[0],coords[1],:] = [255,255,255]
#添加pepper噪聲
num_pepper = np.ceil(amount * image.size * (1. - s_vs_p))
#設置添加噪聲的坐標位置
coords = [np.random.randint(0,i - 1, int(num_pepper)) for i in image.shape]
noisy_img[coords[0],coords[1],:] = [0,0,0]
#保存圖片
cv2.imwrite("noisy_img.png",noise_img)
泊松噪聲
#讀取圖片
img = cv2.imread("demo.png")
#計算圖像像素的分布范圍
vals = len(np.unique(image))
vals = 2 ** np.ceil(np.log2(vals))
#給圖片添加泊松噪聲
noisy_img = np.random.poisson(image * vals) / float(vals)
#保存圖片
cv2.imwrite("noisy_img.png",noise_img)
文章來源:http://www.zghlxwxcb.cn/news/detail-613037.html
speckle噪聲
#讀取圖片
img = cv2.imread("demo.png")
#隨機生成一個服從分布的噪聲
gauss = np.random.randn(img_height,img_width,img_channels)
#給圖片添加speckle噪聲
noisy_img = image + image * gauss
#歸一化圖像的像素值
noisy_img = np.clip(noisy_img,a_min=0,a_max=255)
#保存圖片
cv2.imwrite("noisy_img.png",noise_img)
文章來源地址http://www.zghlxwxcb.cn/news/detail-613037.html
到了這里,關于python使用opencv對圖像添加(高斯/椒鹽/泊松/斑點)噪聲的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!