Enhance Contrast in an Image

IMAGE_CONTRAST is a MATLAB function which carries out a simple contrast enhancement operation on an image.

Note that MATLAB's image processing toolbox includes functions such as nlfilter() which can do a more sophisticated treatment of images. But the purpose of this example is to demonstrate the process of image enhancement in a way that is clear enough to understand quickly.

For a gray-scale image, the function has the form:

function gray_enhanced = contrast_gray ( gray, s )

The corresponding function contrast_rgb() operates on RGB images.


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


IMAGE_CONTRAST is available in a MATLAB version.

Related Data and Programs:

CONTRAST_SPMD, a MATLAB program which demonstrates the SPMD parallel programming feature for a image operations; the client reads an image, the workers process portions of it to enhance the contrast, and the client assembles and displays the results.

CONTRAST2_SPMD, a MATLAB program which demonstrates the SPMD parallel programming feature for image operations; this improves the contrast_spmd program by allowing the workers to share some data; this makes it possible to eliminate artificial "seams" in the processed image.

  • IMAGE_BOUNDARY, a MATLAB library which reports the pixels which form the boundary between the black and white regions of a simple image.
  • IMAGE_COMPONENTS, a MATLAB library which seeks the connected "nonzero" or "nonblack" components of an image or integer vector, array or 3D block.

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

    IMAGE_DENOISE, a MATLAB program which demonstrates a simple technique for removing noise from an image.

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

    IMAGE_EDGE a MATLAB library which demonstrates a simple procedure for edge detection in images.

    IMAGE_MATCH_GENETIC, a MATLAB program which tries to match a 256x256 JPEG image by blending 32 colored rectangles, using ideas from genetic algorithms, based on an example by Nick Berry.

    IMAGE_NOISE, MATLAB programs which add noise to an image.

    IMAGE_QUANTIZATION, a MATLAB library 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 programs which makes a grayscale version of an RGB image.

    IMAGE_THRESHOLD, MATLAB programs 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:

    Examples and Tests:

    SURFSUP is a grayscale image.

    UNDERWATER_BMX is an RGB image. Note that attempts to increase the blurriness of this image using a value of S less than 1 didn't seem to have much effect.

    You can go up one level to the MATLAB source codes.

    Last revised on 25 December 2010.