Main Content

Add noise to image

adds zero-mean, Gaussian white noise. The local variance of the noise,
`J`

= imnoise(`I`

,'localvar',`intensity_map`

,`var_local`

)`var_local`

, is a function of the image intensity values
in `I`

. The mapping of image intensity value to noise
variance is specified by the vector `intensity_map`

.

generates Poisson noise from the data instead of adding artificial noise to the
data. See Algorithms for more
information.`J`

= imnoise(`I`

,'poisson')

adds multiplicative noise with variance `J`

= imnoise(`I`

,'speckle',`var_speckle`

)`var_speckle`

.

The mean and variance parameters for

`'gaussian'`

,`'localvar'`

, and`'speckle'`

noise types are always specified as if the image were of class`double`

in the range [0, 1]. If the input image is a different class, the`imnoise`

function converts the image to`double`

, adds noise according to the specified type and parameters, clips pixel values to the range [0, 1], and then converts the noisy image back to the same class as the input.The Poisson distribution depends on the data type of input image

`I`

:If

`I`

is double precision, then input pixel values are interpreted as means of Poisson distributions scaled up by`1e12`

. For example, if an input pixel has the value`5.5e-12`

, then the corresponding output pixel will be generated from a Poisson distribution with mean of 5.5 and then scaled down by`1e12`

.If

`I`

is single precision, the scale factor used is`1e6`

.If

`I`

is`uint8`

or`uint16`

, then input pixel values are used directly without scaling. For example, if a pixel in a`uint8`

input has the value 10, then the corresponding output pixel will be generated from a Poisson distribution with mean 10.

To add

`'salt & pepper'`

noise with density`d`

to an image,`imnoise`

first assigns each pixel a random probability value from a standard uniform distribution on the open interval (0, 1).For pixels with probability value in the range (0,

`d`

/2), the pixel value is set to`0`

. The number of pixels that are set to`0`

is approximately`d*numel(I)/2`

.For pixels with probability value in the range [

`d`

/2,`d`

), the pixel value is set to the maximum value of the image data type. The number of pixels that are set to the maximum value is approximately`d*numel(I)/2`

.For pixels with probability value in the range [

`d`

, 1), the pixel value is unchanged.