日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

【图像处理】——Python实现图像加噪(随机噪声、椒盐噪声、高斯噪声等)

發布時間:2023/12/10 python 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【图像处理】——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分 布。
?????? 必須區分高斯噪聲和白噪聲兩個不同的概念。高斯噪聲是指噪聲的概率密度函數服從高斯分布,白噪聲是指噪聲的任意兩個采樣樣本之間不相關,兩者描述的角度不同。白噪聲不必服從高斯分布,高斯分布的噪聲不一定是白噪聲。當然,實際系統中的熱噪聲是我們一般所說的白噪聲的主要來源,它是服從高斯分布的,但一般具有有限的帶寬,即常說的窄帶白噪聲,嚴格意義上它不是白噪聲。

def gasuss_noise(image, mean=0, var=0.001):''' 添加高斯噪聲image:原始圖像mean : 均值 var : 方差,越大,噪聲越大'''image = cv2.imread(image)image = np.array(image/255, dtype=float)#將原始圖像的像素值進行歸一化,除以255使得像素值在0-1之間noise = np.random.normal(mean, var ** 0.5, image.shape)#創建一個均值為mean,方差為var呈高斯分布的圖像矩陣out = image + noise#將噪聲和原始圖像進行相加得到加噪后的圖像if out.min() < 0:low_clip = -1.else:low_clip = 0.out = np.clip(out, low_clip, 1.0)#clip函數將元素的大小限制在了low_clip和1之間了,小于的用low_clip代替,大于1的用1代替out = np.uint8(out*255)#解除歸一化,乘以255將加噪后的圖像的像素值恢復#cv.imshow("gasuss", out)noise = noise*255return [noise,out] noise,out = gasuss_noise("colorful_lena.jpg", mean=0, var=0.003) cv2.imshow('noise',noise) cv2.imshow('out',out) cv2.waitKey(0)

?

參考: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实现图像加噪(随机噪声、椒盐噪声、高斯噪声等)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。