【发布时间】:2017-05-25 20:28:40
【问题描述】:
我尝试通过下面的代码,将高斯噪声添加到 RGB 或 GRAYSCALE 图像,但直到现在我遇到同样的问题,结果始终如下:
那么我写的代码有问题吗?
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 向量相加更简洁
-
您的代码不会向图像添加噪点,它会有效地将其替换为噪点。您需要使每个
image[i][j]的结果成为已经在该位置和gauss()的值的函数,而不是完全独立于它,如图所示。我还怀疑对于灰度图像,elif len(image.shape)==2:应该是elif len(image.shape)==1:。 -
P.S. Python包含
random.gauss()高斯分布随机数函数。 -
希望我现在给你一个更合适的答案。