<p><a href="http://scikit-image.org" rel="noreferrer">scikit-image</a>提供了一个函数<a href="http://scikit-image.org/docs/dev/api/skimage.util.html#random-noise" rel="noreferrer">^{<cd1>}</a>,类似于MATLAB中的<code>imnoise</code>。</p>
<pre><code>skimage.util.random_noise(image, mode='gaussian', seed=None, clip=True, **kwargs)
</code></pre>
<p>它支持以下模式:</p>
<blockquote>
<p>‘gaussian’ Gaussian-distributed additive noise.</p>
<p>‘localvar’ Gaussian-distributed additive noise, with specified
local variance at each point of image</p>
<p>‘poisson’ Poisson-distributed noise generated from the data.</p>
<p>‘salt’ Replaces random pixels with 1.</p>
<p>‘pepper’ Replaces random pixels with 0.</p>
<p>‘s&p’ Replaces random pixels with 0 or 1.</p>
<p>‘speckle’ Multiplicative noise using out = image + n*image, where
n is uniform noise with specified mean & variance.</p>
</blockquote>
<p><strong>注意</strong>与MATLAB中的<code>imnoise</code>不同之处在于,此函数的输出始终是浮点图像。</p>
<p>例如,如果输入图像是一个<code>uint8</code>灰度图像,它将首先转换为浮点,但输出图像不会转换为与输入图像相同的类。</p>
<p>因此,如果您关心图像的类,您应该自己转换输出,例如使用<code>skimage.img_as_ubyte</code>。</p>