答案 0 :(得分:-1)
我要感谢Martineau先生指出我应该回答噪音而不是模糊。我将再次回答Pillow,因为我觉得它变得更简单了。
我打开一张麝鼠爪的图片,并在位置(50,50)显示图像大小和像素值。这是一个RGB图像,我们可以相当确定每种颜色的范围是0到255.
我认为你想要添加高斯噪音。为了省去编写和调试生成器的麻烦,我正在使用一个随时可用的生成器,normalvariate
。你会想要改变噪音的水平和传播;因此,我制作了均值和比例参数。由于颜色值的范围有限制,我使用max
和min
。为方便起见,我在add_noise
中打包了三个add_noise_one_pixel
的调用,以便后一个例程可以为图像中的每个像素调用一次。
您已经注意到,可以使用图像大小和getpixel
方法的相关知识来处理图像中的所有像素。
我没有检查过这段代码。这更像是对原则的一种说明。
>>> from PIL import Image, ImageFilter
>>> im = Image.open('muskrat.png')
>>> im.size
(100, 117)
>>> im.getpixel((50,50))
(121, 130, 116)
>>> import random
>>> def add_noise(x, mean, stddev):
... return min(max(0, x+random.normalvariate(mean,stddev)), 255)
...
>>> def add_noise_one_pixel(im, x, y, mean=10, stddev=5):
... x, y, z = im.getpixel((x,y))
... im.putpixel((x,y), add_noise(x, mean, stddev), add_noise(y, mean, stddev), add_noise(z, mean, stddev))
...
旧答案:
如果您只是想做到而不是关心自己的详细信息,那么请看看Pillow。就这么简单。
>>> from PIL import Image, ImageFilter
>>> im = Image.open('GENES.png')
>>> im2 = im.filter(ImageFilter.GaussianBlur(5))
>>> im2.show()