If you need help determining what type of image you are working with, see Image Types in the Toolbox.
To display an indexed image using either imshow or imtool, specify both the image matrix and the
color map. This documentation uses the variable name X to represent an
indexed image in the workspace, and map to represent the color
map.
imshow(X,map)
or
imtool(X,map)
For each pixel in X, these functions display the color stored in the
corresponding row of map. If the image matrix data is of class
double, the value 1 points to the first row in the color map, the value
2 points to the second row, and so on. However, if the image matrix data is of class
uint8 or uint16, the value 0 (zero) points to the
first row in the color map, the value 1 points to the second row, and so on. This offset is
handled automatically by the imtool and imshow
functions.
If the color map contains a greater number of colors than the image, the functions
ignore the extra colors in the color map. If the color map contains fewer colors than the
image requires, the functions set all image pixels over the limits of the color map's
capacity to the last color in the color map. For example, if an image of class
uint8 contains 256 colors, and you display it with a color map that
contains only 16 colors, all pixels with a value of 15 or higher are displayed with the last
color in the color map.
To display a grayscale image, call the imshow function or open the
Image Viewer app. This documentation uses the variable name I to
represent a grayscale image in the workspace.
Both functions display the image by scaling the intensity values to serve as indices into a grayscale color map.
If I is double, a pixel value of 0.0 is displayed
as black, a pixel value of 1.0 is displayed as white, and pixel values in between are
displayed as shades of gray. If I is uint8, then a
pixel value of 255 is displayed as white. If I is uint16, then a pixel
value of 65535 is displayed as white.
Grayscale images are similar to indexed images in that each uses an m-by-3 RGB color map, but you normally do not specify a color map for a grayscale image. MATLAB® displays grayscale images by using a grayscale system color map (where R=G=B). By default, the number of levels of gray in the color map is 256 on systems with 24-bit color, and 64 or 32 on other systems. (See Display Colors for a detailed explanation.)
In some cases, the image data you want to display as a grayscale image could have a
display range that is outside the conventional toolbox range (that is, [0, 1] for
single or double arrays, [0 ,255] for
uint8 arrays, [0, 65535] for uint16 arrays, or
[-32767, 32768] for int16 arrays). For example, if you filter a
grayscale image, some of the output data could fall outside the range of the original
data.
To display unconventional range data as an image, you can specify the display range
directly, using this syntax for both the imshow and
imtool functions.
imshow(I,'DisplayRange',[low high])
or
imtool(I,'DisplayRange',[low high])
If you use an empty matrix ([]) for the display range, these
functions scale the data automatically, setting low and
high to the minimum and maximum values in the array.
The next example filters a grayscale image, creating unconventional range data. The
example calls imtool to display the image in Image Viewer,
using the automatic scaling option. If you execute this example, note the display range
specified in the lower right corner of the Image Viewer window.
I = imread('testpat1.png');
J = filter2([1 2;-1 -2],I);
imtool(J,'DisplayRange',[]);
In MATLAB, a binary image is of class logical. Binary images contain
only 0's and 1's. Pixels with the value 0 are displayed as black; pixels with the value 1
are displayed as white.
Note
For the toolbox to interpret the image as binary, it must be of class
logical. Grayscale images that happen to contain only 0's and 1's are
not binary images.
To display a binary image, call the imshow function or open the
Image Viewer app. For example, this code reads a binary image into the
MATLAB workspace and then displays the image. This documentation uses the variable
name BW to represent a binary image in the workspace
BW = imread('circles.png');
imshow(BW)
You might prefer to invert binary images when you display them, so that 0 values are displayed as white and 1 values are displayed as black. To do this, use the NOT (~) operator in MATLAB. (In this figure, a box is drawn around the image to show the image boundary.) For example:
imshow(~BW)

You can also display a binary image using the indexed image color map syntax. For example, the following command specifies a two-row color map that displays 0's as red and 1's as blue.
imshow(BW,[1 0 0; 0 0 1])

Truecolor images, also called RGB images, represent color values directly, rather than
through a color map. A truecolor image is an
m-by-n-by-3 array. For each pixel
(r,c) in the image, the color is represented by the triplet
(r,c,1:3).
To display a truecolor image, call the imshow function or open the
Image Viewer app. For example, this code reads a truecolor image into the
MATLAB workspace and then displays the image. This documentation uses the variable
name RGB to represent a truecolor image in the workspace
RGB = imread('peppers.png');
imshow(RGB)
Systems that use 24 bits per screen pixel can display truecolor images directly, because
they allocate 8 bits (256 levels) each to the red, green, and blue color planes. On systems
with fewer colors, imshow displays the image using a combination of color
approximation and dithering. See Display Colors
for more information.
Note
If you display a color image and it appears in black and white, check if the image is an indexed image. With indexed images, you must specify the color map associated with the image. For more information, see Display Indexed Images.