numpy给图片加高斯噪声

本文介绍了如何使用numpy为图像添加高斯噪声,包括三种生成随机噪声矩阵的方法:`sigma*np.random.randn(r,c)+mean`,`sigma*np.random.standard_normal((r,c))`和`numpy.random.normal(mean,sigma, size=(r,c))`。由于原始图像数据通常在0-255范围内且为uint8类型,直接相加可能得到负值或超过255的数值,导致显示问题。解决办法是对图像进行归一化处理,确保结果在0-255区间内并转换为uint类型。" 136187945,1495135,VTK三维网格数据可视化指南,"['VTK', '三维可视化', '网格数据', 'c++编程', '数据处理']

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

生成随机噪声的三个方法,如果我们的目标矩阵是一个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类型。 


</

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值