我是靠谱客的博主 坚定太阳,最近开发中收集的这篇文章主要介绍numpy给图片加高斯噪声,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

给加高斯噪声的意思,就是在原图像矩阵上面加一个符合高斯或者叫正态分布特征的矩阵。

生成随机噪声的三个方法,如果我们的目标矩阵是一个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给图片加高斯噪声所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(54)

评论列表共有 0 条评论

立即
投稿
返回
顶部