Steve on Image Processing

July 30th, 2009

Five years of Image Processing Toolbox changes

Earlier this week I wrote about the lists I keep of MATLAB and Image Processing Toolbox changes that might be relevant to the material in Digital Image Processing Using MATLAB. I've been keeping these lists since we published the first edition, so they cover about five and a half years of software evolution.

I posted my MATLAB lists on Monday. Today I'm posting my Image Processing Toolbox lists. Note that these lists are not comprehensive; I noted only those items that I thought might be relevant to what's in the book.

As before, my challenge to readers is to find the oldest "new" feature you didn't know about before, preferably something that might be useful in your work. Let us know what you found by commenting on this post.

Version 3.1

  • New function stretchlim - computes "nice" limits for use with imadjust

Version 3.2

  • imfill - no longer requires the 'holes' argument for grayscale images

Version 4.0

  • imview - new image display and navigation - superseded by imtool in version 5.0
  • overview window
  • pixel region tool
  • magnification control
  • Import ICC color profiles
  • Support for XYZ, xyY, uvL, u'v'L, L*a*b*, L*ch, sRGB color spaces
  • adapthisteq - adaptive histogram equalization - works much better than histeq as an "all-purpose" image enhancement tool
  • decorrstretch - decorrelation stretch
  • fanbeam geometry for projections and inverse projections
  • bwboundaries (boundary tracing)
  • bwtraceboundary
  • uintlut - superseded by intlut in version 5.0

Version 4.1

  • Reading and writing L*a*b* data in TIFF files

Version 5.0

  • Modular programming with GUI components
  • Contrast adjustment tool, called "window-level" tool by radiologists
  • imgetfile - image file chooser dialog
  • hough, houghpeaks, houghlines
  • entropy
  • entropyfilt
  • graycomatrix
  • graycoprops
  • rangefilt
  • stdfilt
  • iccwrite - export ICC color profiles
  • intlut - replaced uintlut
  • edge - new syntax for returning computed gradient
  • graythresh - added Otsu's class separation metric
  • imfilter - automatically exploits filter separability
  • regionprops - new 'perimeter' measurement
  • imdilate, imerode, imopen, imclose - substantial speed improvement for large rectangular strels; computation speed is now independent of the size of the strel

Version 5.1

  • Support for new medical image file formats: Analyze 7.5 and Interfile
  • Image Tool enhancement - new distance tool (imdistline) for measuring the distance between any two points
  • New GUI building blocks: impoint, imline, imrect
  • New ICC utility functions: iccroot and iccfind
  • New section in Users Guide on working with image sequences

Version 5.2

  • Support for additional ICC profile types: DeviceLink, ColorSpace, Abstract, Grayscale
  • Mouse pointer management functions for GUI programming (iptPointerManager, etc.)

Version 5.3

  • 'symmetric' option for graycomatrix, for consistency with Haralick '73 definition.
  • ICC support extended to parametric curve types, and reading named colors in profiles

Version 5.4

  • imresize runs faster, uses less memory, supports new interpolation types, output size options, antialiasing control, user-defined interpolation kernels
  • applycform uses tetrahedral interpolation
  • watershed transform uses new algorithm (watershed section may need updated algorithm description)
  • 'none' option for iradon for unfiltered backprojection

Version 6.0

  • New interactive video / image sequence viewer
  • Cropping added to imtool
  • Bayer demosaic function
  • Multiresolution pyramid function
  • New tools for building GUIs (imsave, imputfile)
  • New ROI tools (impoly, imellipse, imfreehand)
  • Support for NITF (National Imagery Transmission Format) import
  • Support for HDR (high dynamic range) image import
  • tonemap function for HDR images
  • Faster bwmorph
  • Faster imfilter for uint8 RGB images

Version 6.1 (R2008a)

  • Create and export high dynamic range (HDR) images
  • Measure grayscale properties with regionprops
  • Enhanced methods for ROI functions
  • Convert between sRGB and CMYK
  • ICCWRITE can create smaller files in some cases
  • New transformation types in cp2tform:
    'similarity'
    'nonreflective similarity'

Version 6.2 (R2008b)

  • Faster performance for:
    Binary erosion and dilation
    Hit-miss
    Range filtering
    Graycomatrix
  • New function cornermetric for corner detection
  • New createMask method for ROI functions

Version 6.3 (R2009a)

  • New function bwconncomp does connected components labeling using less memory
  • New function labelmatrix
  • imfilter now multithreaded
  • Display and navigation of very large images using R-Sets (multiresolution pyramid files) generated using new function rsetwrite
  • Toolbox preferences now set using MATLAB preferences panel and saved between sessions
  • End-point and branch-point detection added to bwmorph
  • Subimage import using nitfread

5 Responses to “Five years of Image Processing Toolbox changes”

  1. StephenLL replied on :

    Here is a change for the image processing toolbox I’d like to see:

    Having demoed the image processing toolbox in the past, I suggest that the function padarray be added to base MATLAB.

    It is on par with the usefulness of repmat. I could see every MATLAB user benefit from it.

    Just my 2cts.

    Stephen

  2. Steve replied on :

    StephenLL—Thanks for the suggestion. I think I’ll write a short post about moving functions from Image Processing Toolbox into MATLAB, maybe today or tomorrow.

  3. Steve replied on :

    StephenLL—PS. repmat was one of the earliest functions I ever wrote at MathWorks. Of course, it’s been modified a zillion times since then.

  4. Zanie replied on :

    I have R2008b could you please tell me about toolbox of this version.

  5. Steve replied on :

    Zanie—What do you need to know? If you have the product, then you have the documentation, right?

Leave a Reply

Wrap code fragments inside <pre> tags, like this:

<pre class="code">
a = magic(3);
sum(a)
</pre>

If you have a "<" character in your code, either follow it with a space or replace it with "&lt;" (including the semicolon).


Steve Eddins manages the Image & Geospatial development team at The MathWorks and coauthored Digital Image Processing Using MATLAB. He writes here about image processing concepts, algorithm implementations, and MATLAB.

  • Sana: hi steve, could you explain to me how i would be able to use the dir function, to do a loop through a directory...
  • Nishtha: Sir, I have preprocessed the image in following steps: [1] adaptive histogram equalization [2] thresholding...
  • Kristof: I also strongly support the idea. I have just recently bumped into the problem that im2single was not...
  • Steve: David—I’ m glad you found it useful!
  • David Lalejini: I found your example very useful for finding connected nodes in a large set of input pairs. I start...
  • tommy: Dear Steve, I have a question,please if you are kind to help me regarding the accumulator array dimensions of...
  • Steve: Abc—I don’t know how to distinguish the faces. You might try posting your question in the MATLAB...
  • Manju: well if we have a few ovals within each other like in a cell how do we measure the distance from the center...
  • Steve: Manju—What do you mean? How is each region defined?
  • Manju: if we have 2-3 regions within each other how do we measure the regions of each one?

These postings are the author's and don't necessarily represent the opinions of The MathWorks.