Image Processing Toolbox | ![]() ![]() |
Converting Image Storage Classes
You can convert uint8
and uint16
data to double precision using the MATLAB function, double
. However, converting between storage 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 storage classes, use one of these toolbox functions: im2double
, im2uint8
, and im2uint16
. These functions automatically handle the rescaling and offsetting of the original data. 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].
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
intensity image is capable of storing up to 65,536 distinct shades of gray, but a uint8
intensity image can store only 256 distinct shades of gray. When you convert a uint16
intensity image to a uint8
intensity 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. This loss of information is often not a problem, however, since 256 still exceeds the number of shades of gray that your eye is likely to discern.
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 in an Indexed Image for more information.
![]() | Querying a Graphics File | Converting Graphics File Formats | ![]() |