Converting Between Image Classes
Overview of Image Class Conversions
You can convert uint8 and uint16 image
data to double using the MATLAB double function.
However, converting between classes changes the way MATLAB and
the toolbox interpret the image data. If you want the resulting array
to be interpreted properly as image data, you need to rescale or offset
the data when you convert it.
For easier conversion of classes, use one of these functions: im2uint8, im2uint16, im2int16, im2single,
or im2double. These functions
automatically handle the rescaling and offsetting of the original
data of any image class. For example, this command converts a double-precision
RGB image with data in the range [0,1] to a uint8 RGB
image with data in the range [0,255].
RGB2 = im2uint8(RGB1);
Back to Top
Losing Information in Conversions
When you convert to a class that uses fewer bits to represent
numbers, you generally lose some of the information in your image.
For example, a uint16 grayscale image is capable
of storing up to 65,536 distinct shades of gray, but a uint8 grayscale
image can store only 256 distinct shades of gray. When you convert
a uint16 grayscale image to a uint8 grayscale
image, im2uint8 quantizes the
gray shades in the original image. In other words, all values from
0 to 127 in the original image become 0 in the uint8 image,
values from 128 to 385 all become 1, and so on.
Back to Top
Converting Indexed Images
It is not always possible to convert an indexed image from one
storage class to another. In an indexed image, the image matrix contains
only indices into a colormap, rather than the color data itself, so
no quantization of the color data is possible during the conversion.
For example, a uint16 or double indexed
image with 300 colors cannot be converted to uint8,
because uint8 arrays have only 256 distinct values.
If you want to perform this conversion, you must first reduce the
number of the colors in the image using the imapprox function.
This function performs the quantization on the colors in the colormap,
to reduce the number of distinct colors in the image. See Reducing Colors Using imapprox for more information.
Back to Top
 | Converting Between Image Types | | Working with Image Sequences |  |
Includes the most popular MATLAB recorded presentations with Q&A sessions led by MATLAB experts.
Get the Interactive Kit