0

我的问题很简单:我有一张图像,我想在图像中添加像素独立的噪声。噪声可以来自任何分布,例如高斯分布。numpy/scikit-learn 中有哪些可用模块可以做同样的事情?

我没有任何代码,但我正在学习 numpy.random.normal 等模块,我需要更多说明。没有一个模块明确表示如果我多次从分布中抽取样本,则抽取将是独立的。

谢谢你的建议。

4

2 回答 2

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.

于 2019-03-01T23:10:24.160 回答
0

是的,随机意味着独立。您可以使用 numpy/scipy 生成噪声并将其添加到图像中。也许学习本教程 在此处输入图像描述对您有好处 这里的代码:

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)
于 2019-03-01T23:40:39.437 回答