给加高斯噪声的意思,就是在原图像矩阵上面加一个符合高斯或者叫正态分布特征的矩阵。
生成随机噪声的三个方法,如果我们的目标矩阵是一个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为图像添加高斯噪声,包括三种生成随机噪声矩阵的方法:`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++编程', '数据处理']
最低0.47元/天 解锁文章
7601

被折叠的 条评论
为什么被折叠?



