|On this page…|
This example shows how to read an image into the MATLAB workspace, adjust the contrast in the image, and then write the adjusted image to a file.
First, clear the MATLAB® workspace of any variables and close open figure windows.
clear, close all
To read an image, use the imread command. The example reads one of the sample images included with the toolbox, pout.tif, and stores it in an array named I.
I = imread('pout.tif');
imread infers from the file that the graphics file format is Tagged Image File Format (TIFF). For the list of supported graphics file formats, see the imread function reference documentation.
Now display the image. The toolbox includes two image display functions: imshow and imtool. imshow is the toolbox's fundamental image display function. imtool starts the Image Tool which presents an integrated environment for displaying images and performing some common image processing tasks. The Image Tool provides all the image display capabilities of imshow but also provides access to several other tools for navigating and exploring images, such as scroll bars, the Pixel Region tool, Image Information tool, and the Contrast Adjustment tool. For more information, seeImage Display and Exploration Overview. You can use either function to display an image. This example uses imshow.
Grayscale Image pout.tif
To see how the imread function stores the image data in the workspace, check the Workspace browser in the MATLAB desktop. The Workspace browser displays information about all the variables you create during a MATLAB session. The imread function returned the image data in the variable I, which is a 291-by-240 element array of uint8 data. MATLAB can store images as uint8, uint16, or double arrays.
You can also get information about variables in the workspace by calling the whos command.
MATLAB responds with
Name Size Bytes Class Attributes I 291x240 69840 uint8
For more information about image storage classes, see Converting Between Image Classes.
pout.tif is a somewhat low contrast image. To see the distribution of intensities in pout.tif, you can create a histogram by calling the imhist function. (Precede the call to imhist with the figure command so that the histogram does not overwrite the display of the image I in the current figure window.)
Notice how the intensity range is rather narrow. It does not cover the potential range of [0, 255], and is missing the high and low values that would result in good contrast.
The toolbox provides several ways to improve the contrast in an image. One way is to call the histeq function to spread the intensity values over the full range of the image, a process called histogram equalization.
I2 = histeq(I);
Display the new equalized image, I2, in a new figure window.
Equalized Version of pout.tif
Call imhist again to create a histogram of the equalized image I2. If you compare the two histograms, the histogram of I2 is more spread out than the histogram of I1.
The toolbox includes several other functions that perform contrast adjustment, including the imadjust and adapthisteq functions. See Adjust Pixel Intensity Values for more information. In addition, the toolbox includes an interactive tool, called the Adjust Contrast tool, that you can use to adjust the contrast and brightness of an image displayed in the Image Tool. To use this tool, call the imcontrast function or access the tool from the Image Tool. For more information, see Adjust Image Contrast In Image Viewer App.
To write the newly adjusted image I2 to a disk file, use the imwrite function. If you include the filename extension '.png', the imwrite function writes the image to a file in Portable Network Graphics (PNG) format, but you can specify other formats.
imwrite (I2, 'pout2.png');
To see what imwrite wrote to the disk file, use the imfinfo function.
The imfinfo function returns information about the image in the file, such as its format, size, width, and height. See Getting Information About Graphics Files for more information about using imfinfo.
ans = Filename: 'pout2.png' FileModDate: '29-Dec-2005 09:34:39' FileSize: 36938 Format: 'png' FormatVersion:  Width: 240 Height: 291 BitDepth: 8 ColorType: 'grayscale' FormatSignature: [137 80 78 71 13 10 26 10] Colormap:  Histogram:  InterlaceType: 'none' Transparency: 'none' SimpleTransparencyData:  BackgroundColor:  RenderingIntent:  Chromaticities:  Gamma:  XResolution:  YResolution:  ResolutionUnit:  XOffset:  YOffset:  OffsetUnit:  SignificantBits:  ImageModTime: '29 Dec 2005 14:34:39 +0000' Title:  Author:  Description:  Copyright:  CreationTime:  Software:  Disclaimer:  Warning:  Source:  Comment:  OtherText: