【图像处理】——Python实现图像加噪(随机噪声、椒盐噪声、高斯噪声等)
目錄
1、隨機噪聲
2、椒鹽噪聲
3、高斯噪聲
補充:numpy.clip函數
4、其他噪聲
1、隨機噪聲
隨機噪聲就是通過隨機函數在圖像上隨機地添加噪聲點
隨機函數random模塊參考:https://blog.csdn.net/qq_45769063/article/details/107136319
def random_noise(image,noise_num):'''添加隨機噪點(實際上就是隨機在圖像上將像素點的灰度值變為255即白色):param image: 需要加噪的圖片:param noise_num: 添加的噪音點數目,一般是上千級別的:return: img_noise'''## 參數image:,noise_num:img = cv2.imread(image)img_noise = img# cv2.imshow("src", img)rows, cols, chn = img_noise.shape# 加噪聲for i in range(noise_num):x = np.random.randint(0, rows)#隨機生成指定范圍的整數y = np.random.randint(0, cols)img_noise[x, y, :] = 255return img_noise img_noise = random_noise("colorful_lena.jpg",3000) cv2.imshow('random_noise',img_noise) cv2.waitKey(0)?
?
2、椒鹽噪聲
椒鹽噪聲(salt-and-pepper noise)是指兩種噪聲,一種是鹽噪聲(salt noise),另一種是胡椒噪聲(pepper noise)。鹽=白色(0),椒=黑色(255)。前者是高灰度噪聲,后者屬于低灰度噪聲。一般兩種噪聲同時出現,呈現在圖像上就是黑白雜點
以下使用的是一個閾值(prob、thres)進行的噪聲分布,也可以用其他方法進行
def sp_noise(image,prob):'''添加椒鹽噪聲image:原始圖片prob:噪聲比例'''image = cv2.imread(image)output = np.zeros(image.shape,np.uint8)noise_out = np.zeros(image.shape,np.uint8)thres = 1 - probfor i in range(image.shape[0]):for j in range(image.shape[1]):rdn = random.random()#隨機生成0-1之間的數字if rdn < prob:#如果生成的隨機數小于噪聲比例則將該像素點添加黑點,即椒噪聲output[i][j] = 0noise_out[i][j] = 0elif rdn > thres:#如果生成的隨機數大于(1-噪聲比例)則將該像素點添加白點,即鹽噪聲output[i][j] = 255noise_out[i][j] = 255else:output[i][j] = image[i][j]#其他情況像素點不變noise_out[i][j] = 100result = [noise_out,output]#返回椒鹽噪聲和加噪圖像return result sp_noise,img_noise = sp_noise("colorful_lena.jpg",0.1) cv2.imshow('sp_noise',sp_noise) cv2.imshow('sp_noise_img',img_noise) cv2.waitKey(0)?
?
3、高斯噪聲
高斯噪聲(Gaussian noise)是指它的概率密度函數服從高斯分布的一類噪聲。如果一個噪聲,它的幅度分布服從高斯分布,而它的功率譜密度又是均勻分布的,則稱它為高斯白噪聲。
?????? 注意:“高斯白噪聲的幅度服從高斯分布”的說法是錯誤的,高斯噪聲的幅度服從瑞利分布。即使是一維的高斯白噪聲,其幅度也不會服從高斯分布,而應該服從瑞利分布。二維不相關的復高斯白噪聲包絡服從指數分布(x2分布的自由度為2的特例)。n個不相關的復高斯白噪聲序列疊加后的復信號包絡服從自由度為2n的x2分 布。
?????? 必須區分高斯噪聲和白噪聲兩個不同的概念。高斯噪聲是指噪聲的概率密度函數服從高斯分布,白噪聲是指噪聲的任意兩個采樣樣本之間不相關,兩者描述的角度不同。白噪聲不必服從高斯分布,高斯分布的噪聲不一定是白噪聲。當然,實際系統中的熱噪聲是我們一般所說的白噪聲的主要來源,它是服從高斯分布的,但一般具有有限的帶寬,即常說的窄帶白噪聲,嚴格意義上它不是白噪聲。
?
參考:https://blog.csdn.net/qq1483661204/article/details/78150203
補充:numpy.clip函數
numpy.clip(a, a_min, a_max, out=None)[source]clip這個函數將將數組中的元素限制在a_min, a_max之間,大于a_max的就使得它等于 a_max,小于a_min,的就使得它等于a_min
import numpy as np x=np.array([1,2,3,5,6,7,8,9]) np.clip(x,3,8) Out[88]: array([3, 3, 3, 5, 6, 7, 8, 8])4、其他噪聲
?其他噪聲參考:《Python-圖像加噪實現(Gaussian noise+salt and pepper noise)》
總結
以上是生活随笔為你收集整理的【图像处理】——Python实现图像加噪(随机噪声、椒盐噪声、高斯噪声等)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Oracle的to_char()函数使用
- 下一篇: uds协议之can总线程序升级