This is machine translation

Translated by Microsoft
Mouseover text to see original. Click the button below to return to the English version of the page.

Note: This page has been translated by MathWorks. Click here to see
To view all translated materials including this page, select Country from the country navigator on the bottom of this page.


Convert matrix to grayscale image


I = mat2gray(A,[amin amax])
I = mat2gray(A)


I = mat2gray(A,[amin amax]) converts the matrix A to an intensity image I that contains values in the range 0 (black) to 1 (white). amin and amax are the values in A that correspond to 0 and 1 in I. Values less than amin become 0, and values greater than amax become 1.

You optionally can perform the operation using a GPU (requires Parallel Computing Toolbox™). For more information, see Image Processing on a GPU.


I = mat2gray(A) sets the values of amin and amax to the minimum and maximum values in A.


collapse all

Read an image and display it.

I = imread('rice.png');

Perform an operation that returns a numeric matrix. This operation looks for edges.

J = filter2(fspecial('sobel'),I);
min_matrix = min(J(:))
min_matrix = -779
max_matrix = max(J(:))
max_matrix = 560

Note that the matrix has data type double with values outside of the range [0,1], including negative values.

Display the result of the operation. Because the data range of the matrix is outside the default display range of imshow, every pixel with a positive value displays as white, and every pixel with a negative or zero value displays as black. It is challenging to see the edges of the grains of rice.


Convert the matrix into an image. Display the maximum and minimum values of the image.

K = mat2gray(J);
min_image = min(K(:))
min_image = 0
max_image = max(K(:))
max_image = 1

Note that values are still data type double, but that all values are in the range [0, 1].

Display the result of the conversion. Pixels show a range of grayscale colors, which makes the location of the edges more apparent.


Input Arguments

collapse all

Input image, specified as a numeric matrix.

To perform the computation using a GPU, specify A as a gpuArray that contains a numeric matrix.

Input black and white values, specified as a 2-element numeric vector.

  • Values in input image A that are less than or equal to amin are mapped to the value 0 in the intensity image, I.

  • Values in A that are greater than or equal to amax are mapped to the value 1 in I.

Output Arguments

collapse all

Output intensity image, returned as a numeric matrix with values in the range [0, 1].

If the output intensity image is computed using a GPU, then B is returned as a gpuArray containing a numeric matrix.

Data Types: double

Extended Capabilities

Introduced before R2006a