我的问题很简单:我有一个图像,并且想向图像添加像素级独立噪声。噪声可以来自任何分布,例如高斯分布。 numpy / scikit-learn中有哪些可用的模块可以执行相同的操作?
我没有任何代码,但我正在学习有关numpy.random.normal等模块的信息,我需要进一步说明。 没有一个模块明确地指出,如果我多次从分布中抽取样本,则抽取将是独立的。
谢谢你的建议。
答案 0 :(得分:1)
您有几种选择。如果您要替换随机样本,只需使用numpy的内置随机模块之一(即numpy.random.random)即可。您也可以使用numpy.random.pareto获得更戏剧性/突发的噪音。这些方法会生成独立的样本。
如果您希望以无重复的方式从集合或数组中获取样本(例如,您有一个数组[0.1,0.3,0.9],并且只希望使用这些值生成噪声),您可以使用python内置的random.random.choice([0.1,0.3,0.9])从自定义分布中提取独立的样本。您还可以指定replace=False
。
答案 1 :(得分:0)
是的,随机表示独立。您可以使用numpy / scipy生成噪波并将其添加到图像。学习this tutorial也许对您有好处 这里的代码:
import numpy as np
import matplotlib.pylab as plt
#--- data -----
a = 1
xi, yi = np.linspace(-a,a,nx), np.linspace(-a,a,ny)
x, y = np.meshgrid(xi,yi) # 2-dimensional grid
U = np.exp(-x*x - y*y) # picture/signal
V = np.random.randn(nx, ny) # random noise
#--- grafics -----
fig = plt.figure(figsize=(22,11))
ax1 = fig.add_subplot(131)
ax1.imshow(U)
ax2 = fig.add_subplot(132)
ax2.imshow(V)
ax3 = fig.add_subplot(133)
ax3.imshow(U+0.2*V)
plt.show()
fig.savefig('signal_noise.png', transparency=True)