Version 5.0 (R14) Image Processing Toolbox

This table summarizes what's new in Version 5.0 (R14SP2):

New Features and ChangesVersion Compatibility ConsiderationsFixed Bugs and Known ProblemsRelated Documentation at Web Site
Yes
Details below
Yes—Details labeled as Compatibility Considerations, below. See also Summary.Bug Fixes
Details
No

New features and changes introduced in this version are:

New Image Exploration and Enhancement Tool

The Image Processing Toolbox includes a new, open-architecture, image exploration and enhancement tool, called the Image Tool.

The Image Tool replaces the Image Viewer, providing all the display and exploration capabilities of its predecessor. For example, you can use the Image Tool to display an image, view general information about the image, get information about individual pixels or regions of pixels in the image, and navigate large images using the Overview navigation window, scroll bars, and magnification tools.

In addition, the Image Tool introduces several new tools, such as the Adjust Contrast tool and the Choose Colormap tool. You can use the Adjust Contrast tool to adjust the brightness and contrast of an image interactively. You can use the Choose Colormap tool to change the colormap for indexed and intensity images to any of MATLAB colormaps or to a user-defined colormap.

Unlike the Image Viewer, the Image Tool is built using standard features of MATLAB Handle Graphics®. This enables the Image Tool to provide access to the image being displayed using standard Handle Graphics techniques. For example, you can use annotations and overlay vector graphics on images displayed in the Image Tool. You can use imtool as an example to follow or as a base to use to create your own application.

To start the Image Tool, use the imtool function:

imtool('moon.tif')

New Modular Interactive Tools

The toolbox includes several new modular interactive tools that you can activate from the command line and use with images displayed in a MATLAB figure window, called the target image in this documentation. The tools are modular because they can be used independently or in combination to create custom graphical interfaces for image processing applications. The Image Tool uses these modular tools.

The following table lists these modular tools along with the functions you use to create them.

Modular Tool

Description

Function

Adjust Contrast tool

Display histogram of image pixel values in the target image and enable interactive adjustment of contrast and brightness by manipulating the range.

Use imcontrast to create the tool in a separate figure window and associate it with an image.

Display Range tool

Display a text string identifying the display range values of the target image.

Use imdisplayrange to create the tool, associate it with an image, and embed it in a figure or uipanel.

Image Information tool

Display basic information about an image, along with any metadata the image might contain.

Use imageinfo to create the tool. To collect image information, use imattributes, imfinfo, and dicominfo.

Magnification box

Create a text edit box containing the current magnification of the target image. Users can type in the desired magnification.

    Note   The target image must be contained in a scroll panel.

Use immagbox to create the tool, associate it with an image, and embed it in a figure or uipanel.

Overview tool

Display the target image in its entirety with the portion currently visible in the scroll panel outlined by a rectangle superimposed on the image. Moving the rectangle changes the portion of the target image that is currently visible in the scroll panel.

    Note   The target image must be contained in a scroll panel.

Use imoverview to create the tool in a separate figure window and associate it with an image.

Use imoverviewpanel to create the tool in a uipanel that can be embedded within another figure uipanel.

Pixel Information tool

Display information about the pixel the mouse is over in the target image.

Use impixelinfo to create the tool, associate it with an image, and display it in a figure or uipanel.

If you want to display only the pixel values, without the text label, use impixelinfoval.

Pixel Region tool

Display pixel values for a specified region in the target image.

Use impixelregion to create the tool in a separate figure window and associate it with an image.

Use impixelregionpanel to create the tool as a uipanel that can be embedded within another figure or uipanel.

Scroll Panel

Display target image in a uipanel with scroll bars.

Use imscrollpanel to add a scroll panel to an image displayed in a figure window.

New Modular Tool Utility Functions

In addition to the modular tools listed above, the toolbox includes a number of new utility functions that make GUI building easier. The following table lists these utility functions in alphabetical order. The tools reside in the $MATLAB/toolbox/images/imuitools directory, where $MATLAB represents your MATLAB installation directory.

Function

Description

getimagemodel

Retrieve imagemodel objects from image handles

imattributes

Return information about image attributes

imgca

Get handle to current image axes

imgcf

Get handle to current image figure

imgetfile

Image Open File dialog box

imhandles

Get all image handles

impositionrect

Create position rectangle

iptaddcallback

Add function handle to callback list

iptcheckhandle

Check validity of handle

iptgetapi

Get Application Programmer Interface from a handle

ipticondir

Directories containing IPT and MATLAB icons

iptremovecallback

Delete function handle from callback list

iptwindowalign

Align figure windows

Hough Transform

The toolbox now includes three new functions that provide support for the Hough transform.

The hough function implements the Standard Hough Transform (SHT). The Hough transform is designed to detect lines, using the parametric representation of a line:

rho = x*cos(theta) + y*sin(theta).

The variable rho is the distance from the origin to the line along a vector perpendicular to the line. theta is the angle between the x-axis and this vector. The hough function generates a parameter space matrix whose rows and columns correspond to these rho and theta values, respectively.

The houghpeaks functions finds peak values in this space, which represent potential lines in the input image.

The houghlines function finds the endpoints of the line segments corresponding to peaks in the Hough transform, and it automatically fills in small gaps.

Texture Analysis

The toolbox now supports a set of functions that you can use for texture analysis. These functions include

Texture analysis refers to the characterization of regions in an image by their texture content. Texture analysis attempts to quantify intuitive qualities described by terms such as rough, silky, or bumpy in the context of an image. In this case, the roughness or bumpiness refers to variations in the brightness values or gray levels.

Some of the most commonly used texture measures are derived from the Grey Level Co-occurrence Matrix (GLCM). The GLCM is a tabulation of how often different combinations of pixel brightness values (gray levels) occur in a pixel pair in an image. You can use the graycomatrix function to create a GLCM and then use graycoprops to extract feature information (e.g., contrast, correlation, energy, and homogeneity) from the GLCM.

The texture analysis support also includes several new functions that filter using standard statistical measures, such as range, standard deviation, and entropy. (Entropy is a statistical measure of randomness.) To see an example of using these filtering functions, view the "Texture Segmentation Using Texture Filters" demo. Use the iptdemos function to access toolbox demos.

New ICC Color Profile Export Function

The toolbox includes a new function, iccwrite, that you can use to write International Color Consortium (ICC) color profile data to a file. ICC profiles provide color management systems with the information necessary to convert color data between native device color spaces and device-independent color spaces, called Profile Connection Space (PCS).

The toolbox also includes a function, isicc, that can verify whether the data is a valid ICC profile. The iccwrite function can output profile data in accordance with both Version 2 (ICC.1:2001-04) and Version 4 (ICC.1:2001-12) of the ICC specification. For more information about the changes between Version 2 and Version 4 of the specification, go to the ICC Web site, www.color.org.

In addition, iccread, makecform, and applycform all now work with Version 4 profiles as well as Version 2 profiles, and with color profiles with more than four channels.

Changes to iccread

To add color profile export support, and to accommodate Version 4 of the specification, there are some differences in the way data is returned by iccread. In the structure returned by iccread some of the fields that contained text strings in previous releases are now structures. Accessing the text string in the fields requires an additional level of dereferencing. For example, the value of the Description field was a text string.

P.Description

ans =

sRGB IEC61966-2.1 991203

Now, the value of this field is a structure with two fields: String and Optional. To access the text string, you must access the String field in this structure.

P.Description.String

ans =

sRGB IEC61966-2.1 991203

New Demos

The toolbox includes two new demos:

In addition, some of the existing demos have been reorganized into new categories. The Color Segmentation and Morphological Segmentation demos have been moved to the new Image Segmentation category.

New DICOM Anonymizer Function

The toolbox now includes a new function, dicomanon, that can remove all confidential data from a DICOM file.

New Integer Lookup Table Function

The toolbox now includes a new function, intlut, that can convert arrays of uint8, uint16, and int16 integer values using a lookup table.

New Toolbox Utility Functions

The toolbox includes several new utility functions that can help with input argument parsing. These functions check the validity of arguments and issue standard error messages, if the argument is invalid. The toolbox includes other utility functions to get the dynamic range of an image and convert a positive integer to an ordinal string.

The following table lists these functions in alphabetical order. The functions reside in the $MATLAB/toolbox/images/iptutils directory, where $MATLAB represents your MATLAB installation directory.

Function

Description

getrangefromclass

Check dynamic range of image

iptcheckconn

Check validity of connectivity argument

iptcheckinput

Check validity of input arguments

iptcheckmap

Check validity of colormap argument

iptchecknargin

Check number of arguments

iptcheckstrs

Check validity of string arguments

iptnum2ordinal

Convert positive integer to ordinal string

Updates to the imshow Function

There have been several changes to the behavior and syntaxes supported by the imshow function. The following sections describe these changes.

Filenames No Longer Displayed as a Title in Figure Window Border

The imshow function when called with a filename

imshow(filename) 

no longer automatically displays the filename as a title in the figure window border. In previous releases, the gray space was proportional to image size. Often, this left too little space for small images and too much for big images, making positioning the title in the figure window problematic.

Changes to the algorithm imshow uses to calculate the border size when the 'ImshowBorder' preference is set to 'loose' should allow plenty of room for title, axes tick marks, and axes labels in a way that is independent of the image size. (See New Image Display Range Syntax for more information.)

Nondefault Spatial Coordinate Syntax Changed

The imshow syntax for specifying nondefault spatial coordinates has changed to use parameter/value pairs. The old syntax

imshow(x,y,...)

is now

imshow(...,'XData',x,'YData',y)

imshow still accepts the old syntax, automatically translating it to the new syntax and issuing the following warning.

IMSHOW(x,y,...) is an obsolete syntax. Use 
IMSHOW(...,'XData',x,'YData',y) instead.

Initial Image Magnification DISPLAY_OPTION Syntax Changed

The imshow display_option syntax is obsolete. The old syntax,

imshow(...,display_option)

where display_option was either 'truesize' or 'notruesize', has been replaced by the following parameter/value pair syntax:

imshow(...,'InitialMagnification',initial_mag) 

As the value, you can specify a numeric magnification percentage value or the text string 'fit'.

imshow still accepts the old syntax, automatically translating the old display_option values to the new syntax, as shown in the following table. The table also includes the text of the warning message issued by imshow.

Old Syntax

Automatic Translation to New Syntax

imshow(...,'truesize')

imshow(...,'InitialMagnification',100)

where 100% magnification specifies the same one-image-pixel to one-screen-pixel magnification achieved by the 'truesize' option. imshow also issues the following warning message:

Warning: IMSHOW(...,'truesize') is an obsolete 
syntax. 
Use IMSHOW(...,'InitialMagnification',100) instead.

imshow(...,'notruesize')

imshow(...,'InitialMagnification','fit')

where the behavior is similar to the 'notruesize' behavior. imshow issues the following warning message:

Warning: IMSHOW(...,'notruesize') is an obsolete 
syntax.
Use IMSHOW(...,'InitialMagnification','fit') instead.

New Image Scaling Algorithm Determines Image Display

When you specify a numeric magnification percentage value, imshow performs the following processing to determine how to display the image:

  1. Calculate the gutter dimensions (gray space around image) and figure window decoration dimensions.

  2. Determine the screen dimensions for the image at the requested display magnification.

  3. Add the results of step 1 and step 2.

  4. Determine if the figure fits on the screen at the specified magnification.

    If the image in the figure window fits on the screen, display it.

    If the image in the figure window does not fit on the screen, imshow reduces the magnification until the image fits on the screen and displays it. imshow issues a warning message that the image has been scaled, including the magnification value in the message.

New Image Display Range Syntax

The imshow syntax in which you specify the display range of the image

imshow(I,[LOW HIGH])

has been augmented to use a parameter/value pair syntax

imshow(...,'DisplayRange',[LOW HIGH]) 

imshow still accepts the old syntax.

Note, however, that with the new parameter/value syntax, you can specify the target image as a filename, as in the following example.

imshow(filename,'DisplayRange'[LOW HIGH])

If you want to specify the display range for an intensity image specified by a filename, you must use the 'DisplayRange' parameter.

Number-of-Gray-Levels Syntax Obsoleted

The imshow syntax in which you specified the number of gray levels used to display the image

imshow(I,N) 

has been obsoleted.

Compatibility Considerations.   If you use this syntax, imshow outputs the following warning message:

IMSHOW(I,N) is an obsolete syntax. Your intensity image will be 
displayed using 256 shades of gray.

Changes to Toolbox Preferences

The names of several Image Processing Toolbox preferences have changed in Version 5. The following table lists these preferences with the new name, where available.

Obsolete Preference

New Preference

'ImshowTruesize'

'ImshowInitialMagnification'

'ImviewInitialMagnification'

'ImtoolInitialMagnification'

'TruesizeWarning'

No replacement.

Use the MATLAB warning function to control whether you see the warning that appears when displaying a large image with imshow.

warning off Images:initSize:adjustingMag

warning on Images:initSize:adjustingMag

Changes to Other Toolbox Functions

The following table lists toolbox functions that have been changed in Version 5 of the Image Processing Toolbox.

Function

Enhancement

blkproc

The fun argument must be specified as a function handle; it can no longer be specified as an inline function or text string. The syntax blkprc(...,fun,P1,P2...) is no longer supported. Use an anonymous function instead.

colfilt

See the entry for blkprc in this table. It describes the change made to this function.

deconvblind

See the entry for blkprc in this table. It describes the change made to this function.

dicomread

No longer supports the 'Dictionary' and 'Raw' parameters.

edge

Supports new syntaxes that return the gradient components when gradient-based methods are used (Sobel, Prewitt, Roberts).

getimage

No longer accepts a handle to a texture-mapped surface as an input argument or returns a texture-mapped surface as an image. getimage now only returns data for image objects.

getimage also returns a new flag identifying a binary image.

graythresh

Now implements Otsu's class separability metric, which measures the effectiveness of a threshold computation. For this metric, the lower bound of 0 represents a monotone image and the upper bound of 1 represents a two-valued image.

ifanbeam

See the entry for iradon in this table.

im2bw

Might produce different results when used in conjunction with the graythresh function. The graythresh function uses Otsu's method which, by definition, splits the pixels in an image into two classes based on the calculated threshold. All the pixels up to and including the pixels equal to the threshold belong to the first class and the remaining pixels belong to the other class.
To match this algorithm, the im2bw function now uses the greater-than operator (>) instead of the greater-than-or-equal operator (>=). Thus im2bw might produce different results from previous releases.

imfilter

Now automatically detects and exploits filter separability to speed up the filter computation. This change in the computational algorithm can result in small differences in the output values because of a combination of floating-point roundoff differences and integer rounding effects.

iradon

Now supports all interpolation types supported by interp1. Previously, only 'linear', 'nearest', and 'spline' were supported.

makelut

See the entry for blkprc in this table. It describes the change made to this function.

nlfilter

See the entry for blkprc in this table. It describes the change made to this function.

qtdecomp

See the entry for blkprc in this table. It describes the change made to this function.

regionprops

Now calculates the perimeter of each labeled region in a label matrix.

roifilt2

The fun argument must be specified as a function handle; it can no longer be specified as an inline function or text string. The syntax roifilt(...,fun,P1,P2...) is no longer supported. Use anonymous function instead.

Performance Improvements

The performance of several existing toolbox functions has been improved in this release, including:

The dicomread function has a five to 10 times performance improvement over the previous version.

The performance of the following morphology functions has been improved when used with large rectangular structuring elements.

Functions that call imdilate and imerode, specifying large rectangular structuring elements, might also see a speed improvement, i.e., imopen, imclose, imtophat, and imbothat.

The performance of the following image type conversion functions and color space conversion functions has been improved by using the intlut function with data of classes uint8 and uint16.

Improved Memory Usage

The memory usage of the following deblurring functions has been improved by clearing temporary variables as the algorithms proceed.

edgetaper

The edgetaper function now uses single precision in its calculations for images with an integer data type in order to reduce memory usage. This means that edgetaper returns an answer that is slightly different from the answer returned by previous versions of the toolbox. If you want edgetaper to use double precision for integer data types, convert your image to double before calling edgetaper.

improfile

The improfile function used to cast input images to double if the image was of class logical or if the image was of a nondouble class that uses an interpolation method other than nearest-neighbor.

The function now casts them to single to reduce memory overhead. In these cases, the output of improfile might differ slightly from previous versions of the toolbox.

Major Bug Fixes

The following are important bug fixes in Version 5 of the Image Processing Toolbox software.

Canny Edge Detector Handles Constant-Valued (Flat) Images

The Canny edge detector now accepts single-valued images, also called monotone images, constant-value images, or flat images. Instead of issuing an error when an input image is single-valued, the edge function used with Canny edge detection now returns an output image containing all zeros, indicating that it found no edges.

imcomplement Returns Correct Answer for Signed Integer Input

imcomplement was incorrectly calculating the complement of an image with signed integer data type. This problem has been fixed.

imlincomb Correctly Handles int16 Data Combined with Scalar Having a 0.5 Fractional Part

imlincomb was giving an incorrect answer when combining int16 data with a scalar that had 0.5 as a fractional part. This problem has been fixed.

iradon No Longer Introduces a Vertical Shift of One Pixel

The iradon function now correctly calculates the vertical origin of the input projections. Previously the calculated origin was off by one for inputs with an even number of projection samples. The effect of this problem could be observed by computing the Radon transform (using radon) of a test pattern containing horizontal edges, followed by computing the inverse Radon transform (using iradon). Careful comparison of the test pattern with the output of iradon showed a vertical misregistration of one pixel.

imshow Correctly Renders Indexed Images with Colormaps Having More Than 256 Colors

On the Windows® platform, imshow now sets the figure's 'Renderer' property to 'zbuffer' for indexed images with associated colormaps having more than 256 entries, so they render correctly. Previously these images would appear black.

Compatibility Considerations

The issues mentioned here are all described in more detail in previous sections.

Obsolete and Deleted Functions

The following tables lists toolbox functions that have been made obsolete or removed in Version 5.

Function

Status

dctmtx2

This function, which was obsoleted in previous release, has been removed from the toolbox.

im2mis

This function, which was obsoleted in previous release, has been removed from the toolbox.

imview

This function is obsolete. It now warns and passes its arguments to the imtool function.

imzoom

This function, which was obsoleted in previous release, has been removed from the toolbox.

uintlut

This function, which only accepted uint8 and uint16 data, now warns and passes arguments to the intlut function, which also handles int16 data.

General Issues

The following are known issues.

imoverview, imoverviewpanel, imscrollpanel and imtool Performance with Large Intensity Images

There is a performance problem with the Image Tool and its related navigation tools when used with large intensity images.

Possible workarounds:

Both workarounds will make imcontrast unusable and pixel reporting will be for the wrong image type. The first workaround uses more memory than the second workaround.

Image Tool Cursor Interactions

If you run the Image Tool and activate one of the navigational tools (zoom in, zoom out, pan) prior to turning on the Adjust Contrast tool, the navigational tool will be turned off and will be replaced by the mouse behavior of imcontrast. Conversely, if you run imtool, start the Adjust Contrast tool, and then start a navigation tool, the mouse behavior of imcontrast is turned off.

Adjust Contrast Tool Does Not React to Changes in CLim, CData, or CDataMapping

If you turn on the Adjust Contrast tool using imcontrast or imtool, and then set the axes CLim property or the image CData or CDataMapping properties, the Adjust Contrast tool does respond to these changes in the image or axes. Once you click on the tool, it updates based on changes to the CLim values.

impixelregionpanel Might Interfere with ButtonDown events in Parent Figure

If you create an impixelregionpanel and another imscrollpanel in the same figure, the impixelregionpanel can interfere with ButtonDown events throughout the figure. This can, for example, prevent the user from clicking and dragging a position rectangle located in an imscrollpanel elsewhere in the figure.

Workaround: After creating all of the panels needed for your GUI, execute this code:

uistack(hPixelRegionPanel, 'bottom')

where hPixelRegionPanel is the handle returned by impixelregionpanel.

imagemodel, imageinfo, and imattributes Return Incorrect Data Type

The imagemodel, imageinfo, and imattributes functions return class double for int16 or single images. These functions determine the data type by querying the image object's CData. For int16 and single images, the image object converts its CData to class double.

For example,

h = imshow(int16(ones(10)));
class(get(h,'CData'));

returns 'double'. Consequently, imageinfo and imattributes would return a class type of double and calling the image model object's getClassType method returns double.

cpselect Function Is Not Compilable

You cannot compile MATLAB applications that call the cpselect function.

Example in warp Function Reference Page Displays Incorrectly

On some Windows XP systems, the example on the warp function reference page does not display correctly. When warp is called, the axes is empty. To work around this problem, switch the renderer to the Zbuffer renderer, as follows.

set(gcf,'renderer','ZBuffer')

Issues Specific to the Linux Platform

The following are known issues with Image Processing Toolbox 5 on Linux systems.

Alt+Click Zoom Behavior on Linux Systems

On Linux systems, if the Alt+Click combination is defined for any other Window Manager behavior, when you choose the zoom in or zoom out tools in the Image Tool, Alt+click will not zoom in the opposite direction from the currently selected tool.

Issues Specific to the Macintosh Platform

The following issues are unique to Macintosh systems.

Image Tool Limitations

On Macintosh systems, the Image Tool (imtool) has the following limitations:

Image Information Tool Not Supported

On Macintosh systems, the imageinfo function is not supported because it require Java™ figures, which are not available on this platform.

Resize Behavior of impixelinfo and imdisplayrange

On Macintosh systems, the impixelinfo and imdisplayrange functions do not resize correctly because they require Java figures, which are not available on this platform.

Difference in Scroll Bar Behavior

On Macintosh systems, if you create a scroll panel (imscrollpanel) and drag the scroll bars, the image does not update until you release the mouse from the drag. On other platforms, the image updates continuously during the drag.

Pixel Region Tool Slow on Macintosh Systems

On Macintosh systems, the impixelregion and impixelregionpanel are slower than on other platforms.

Alt+Click Does Not Work for Opposite Zoom in imtool

On Macintosh systems, if you are using the Image Tool and choose the zoom in or zoom out tool, Alt+click does not zoom in the opposite direction from the currently selected tool.

  


 © 1984-2008- The MathWorks, Inc.    -   Site Help   -   Patents   -   Trademarks   -   Privacy Policy   -   Preventing Piracy   -   RSS