image_noise, a MATLAB code which adds noise to an image.

In MATLAB, a black and white or gray scale image can be represented using a 2D array of nonnegative integers over some range 0 to GMAX. The value 0 indicates black, and GMAX white. Intermediate values represent shades of gray in a natural way. Note, however, that the eye has a nonlinear response to intensity, so that the value GMAX/2 will not be perceived as halfway between 0 and GMAX. That is a separate issue.

A color image can be represented using a set of 3 2D arrays, which can be thought of as R, G, and B, and which represent the intensity of the red, green and blue signals that combine to form the color image. A common maximum value is assumed, RGBMAX.

An image can be read into MATLAB using the imread() function in the Image Processing Toolbox, and displayed with the imshow() function.

A simple model for noise involves replacing a subset of the image pixels by the extreme low or high values. In a grayscale image, the damaged pixels show up as black or white spots, giving this kind of noise the name "salt and pepper". An RGB image may be damaged by resetting all 3 color values at a given pixel, resulting in white or black pixels; however, a more realistic noise damage would simply choose R, G or B values randomly, so that noisy pixels would show up as those with full or zero value in one color channel, looking as though colored confetti had been tossed onto the image.

More sophisticated models of noise damage involve setting a pixel color value to a uniform or normal random value, or to displacing the pixel color value by a uniform or normal random value.


The computer code and data files described and made available on this web page are distributed under the MIT license


image_noise is available in a MATLAB version.

Related Data and Programs:

image_boundary, a MATLAB code which reports the pixels which form the boundary between the black and white regions of a simple image.

image_components, a MATLAB code which seeks the connected "nonzero" or "nonblack" components of an image or integer vector, array or 3d block.

image_contrast, a MATLAB code which applies image processing techniques to increase the contrast in an image.

image_decimate, a MATLAB code which compresses an image by dropping the even rows and columns of data.

image_denoise, MATLAB codes which apply image processing techniques to remove noise from an image.

image_diffuse, a MATLAB code which uses diffusion to smooth out an image.

image_double, a MATLAB code which doubles the height and width of an image by repeating each row and column.

image_edge, a MATLAB code which demonstrates a simple procedure for edge detection in images.


image_quantization, a MATLAB code which demonstrates how the kmeans algorithm can be used to reduce the number of colors or shades of gray in an image.

image_rgb_to_gray, MATLAB codes which makes a grayscale version of an rgb image.

image_threshold, MATLAB codes which make a black and white version of a grayscale image by setting all pixels below or above a threshold value to black or white.


MathWorks documentation for the Image Processing Toolbox is available at

Source Code:

Last revised on 03 February 2019.