我已經通過代碼試圖下面,高斯噪聲添加到RGB或灰度圖像,但是到現在爲止我有同樣的問題,結果總是如下:如何爲圖像添加噪點?
那麼,我寫的代碼有問題嗎?
def gauss(mean,sigma):
from random import uniform
from math import sqrt,log,pi,cos
a=uniform(0,1)
b=uniform(0,1)
x=sqrt(-2*log(a))*cos(2*pi*b)
return(x)
def bruiter(image):
from matplotlib.pyplot import imread
if len(image.shape)==3 :
a,b,c=image.shape
for i in range(a):
for j in range(b):
image[i][j] += [gauss(0.5,0.01),gauss(0.5,0.01),gauss(0.5,0.01)]
elif len(image.shape)==2 :
a,b= image.shape
for i in range(a):
for j in range(b):
image[i][j] += gauss(0.01)*(1/255)
return(image)
預期結果是什麼?這也可以更加簡潔地用numpy向量添加 – user3080953
您的代碼不會爲圖像添加噪點,它會有效地用噪音替代它。你需要使每個'image [i] [j]'的結果成爲已經在該位置和'gauss()'的值的函數,而不是如圖所示完全獨立於它。我也懷疑'elif len(image.shape)== 2:'應該是'elif len(image.shape)== 1:'用於灰度圖像。 – martineau
P.S. Python包含['random.gauss()'](https://docs.python.org/3/library/random.html#random.gauss)高斯分佈隨機數函數。 – martineau