猿问

向图像添加像素级独立噪声

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

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

谢谢你的建议。


跃然一笑
浏览 540回答 2
2回答

慕桂英546537

您有多种选择。如果您想使用替换随机采样,只需使用 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.

繁星点点滴滴

是的,随机意味着独立。您可以使用 numpy/scipy 生成噪声并将其添加到图像中。或许学习本教程 对你有好处,代码如下:import numpy as npimport matplotlib.pylab as plt#--- data -----a = 1xi, yi = np.linspace(-a,a,nx), np.linspace(-a,a,ny)x, y = np.meshgrid(xi,yi)    # 2-dimensional gridU = np.exp(-x*x - y*y)       # picture/signalV = 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)
随时随地看视频慕课网APP

相关分类

Python
我要回答