Main Content

How Image Data Relates to a Colormap

When you display images using the image function, you can control how the range of pixel values maps to the range of the colormap. For example, here is a 5-by-5 magic square displayed as an image using the default colormap.

A = magic(5)
A =

    17    24     1     8    15
    23     5     7    14    16
     4     6    13    20    22
    10    12    19    21     3
    11    18    25     2     9
im = image(A);
axis off
colorbar

Image of a 5-by-5 magic square displayed with a colorbar using the default colormap

A contains values between 1 and 25. MATLAB® treats those values as indices into the colormap, which has 64 entries. Thus, all the pixels in the preceding image map to the first 25 entries in the colormap (roughly the blue region of the colorbar).

Magic square values 1 through 25 mapping to the first 25 entries of the colormap

You can control this mapping with the CDataMapping property of the Image object. The default behavior shown in the preceding diagram corresponds to the 'direct' option for this property. Direct mapping is useful when you are displaying images (such as GIF images) that contain their own colormap. However, if your image represents measurements of some physical unit (e.g., meters or degrees) then set the CDataMapping property to 'scaled'. Scaled mapping uses the full range of colors, and it allows you to visualize the relative differences in your data.

im.CDataMapping = 'scaled';

A 5-by-5 magic square displayed with a colorbar using the default colormap with CDataMapping set to 'scaled'. The colors in the image span the full range of the colormap.

The 'scaled' option maps the smallest value in A to the first entry in the colormap, and maps largest value in A maps to the last entry in the colormap. All intermediate values of A are linearly scaled to the colormap.

Magic square values 1 through 25 mapping across the full range of the colormap

As an alternative to setting the CDataMapping property to 'scaled', you can call the imagesc function to get the same effect.

imagesc(A)
axis off
colorbar

A 5-by-5 magic square displayed with a colorbar using the default colormap. The colors in the image span the full range of the colormap.

If you change the colormap, the values in A are scaled to the new colormap.

colormap(gray)

A 5-by-5 magic square displayed with a colorbar using the gray colormap. Each rectangular region is a shade of gray.

Scaled mapping is also useful for displaying pictorial images that have no colormap, or when you want to change the colormap for a pictorial image. The following commands display an image using the gray colormap, which is different than the original colormap that is stored with this image.

load clown
image(X,'CDataMapping','scaled')
colormap(gray)
axis off
colorbar

Clown image displayed with a colorbar using the gray colormap

See Also

Functions

Properties

Related Topics