概述
给加高斯噪声的意思,就是在原图像矩阵上面加一个符合高斯或者叫正态分布特征的矩阵。
生成随机噪声的三个方法,如果我们的目标矩阵是一个r*c的矩阵,要生成一个均值是mean,标准差sigma的随机噪声矩阵,那么是这样
sigma*np.random.randn(r,c)+mean, #输入是两个参数,一个mean,一个sigma。
sigma*np.random.standard_normal((r,c)) #输入是一个tuple,里面包含两个元素。 和上面那个是完全一样的。
numpy.random.normal(mean,sigma, size=(r,c)) #mean,sigma和大小都作为输入放进函数了。
这三个函数。np.random.randn(r,c)和np.random.standard_normal((r,c)) 两个函数一样,就是输入参数一个是tuple,一个是两个参数,本质一样的,他们生成的都是标准正态分布,也就是均值是0,sigmg为1的。 如果我们要的是一般正态分布,需要自己再转。
numpy.random.normal(mean,sigma,size)这个直接生成的就是一般正态分布矩阵了。
上面生成了随机噪声矩阵,和原图叠加就好,但是这里面有个bug,不能直接加。
因为image读取出来的图像,类型是uin8的(也就是取值范围是0-255)
我们计算的随机噪声值,可能是或负或正的小数,
这样加起来的和的图像img_with_noise,其实是有可能是负值,有可能超了255的,而且这个np.ndarray类型是普通的float64了。
这个时候用imshow函数来显示,会出现全白全黑的图像bug。
解决方法是在显示前将图像做归一化normalization转成0-255区间的unint类型。
参考numpy文档
numpy.random.randn
http://docs.scipy.org/doc/numpy-1.10.1/reference/generated/numpy.random.randn.html
numpy.random.normal
http://docs.scipy.org/doc/numpy-1.10.1/reference/generated/numpy.random.normal.html
numpy.random.standard_normal
http://docs.scipy.org/doc/numpy-1.10.1/reference/generated/numpy.random.standard_normal.html#numpy.random.standard_normal
最后
以上就是坚定太阳为你收集整理的numpy给图片加高斯噪声的全部内容,希望文章能够帮你解决numpy给图片加高斯噪声所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复