Steve on Image Processing

March 18th, 2009

R2009a - MATLAB updates

MATLAB R2009a was released earlier this month. There are several things in this release, both in MATLAB and in the Image Processing Toolbox, that I plan to write about during the next couple of weeks.

My usual practice for the MATLAB releases is to mention changes of particular interest to image processing readers, plus a few other things I'm personally interested in. Other MATLAB Central bloggers will have their own perspectives on the release; in particular, I suggest that you visit "Ken and Mike on the MATLAB Desktop" and "Loren on the Art of MATLAB."

We continue to expand the set of MATLAB computations that are multithreaded. This time around we have multithreaded implementations of fft, fft2, fftn, ifft, ifft2, and ifftn.

For users with complex scientific data sets, we now support the latest HDF 5 library, which is version 1.8.1.

For users storing very many images in a single TIFF file (thousands or tens of thousands of images per file), we have a faster way to read them. Unfortunately, I dropped the ball on getting this change properly documented. It's mentioned in the M-file help for imread, but not in the reference page and not in the release notes. So type help imread and look for the 'Info' parameter in the TIFF-specific syntaxes section. I'll write a post specifically about this topic soon.

Although I am certainly no expert on computational geometry, the topic does interest me, and it does have application to image processing. So I'm excited that the MATLAB R2009a release includes significant new capabilities in this area. Here's an excerpt from the release notes:

MATLAB includes a new object-oriented suite of computational geometry tools, together with a new underlying library called CGAL. The new library provides improved robustness, performance, and memory efficiency. The new tools are presented in three classes:

  • New class TriRep provides topological and geometric queries for triangulations in 2-D and 3-D space.
  • New class DelaunayTri provides increased functionality for Delaunay triangulation including topological and geometric queries, incremental modification, and edge constraints.
  • New class TriScatteredInterp provides fast robust scattered data interpolation and a new natural-neighbor interpolation technique.
Watch for more posts soon about changes in the Image Processing Toolbox. Some the changes have been significantly influenced by comments received on this blog!

16 Responses to “R2009a - MATLAB updates”

  1. Siddharth replied on :

    Hi Steve,
    Are there plans to support JPEG2000 compression with TIFF images ?

  2. Steve replied on :

    Siddharth—No concrete plans, but that’s primarily because we haven’t received any requests for it, at least that I know about. Do such files exist? What software is producing them?

  3. Siddharth replied on :

    TIFF images with JPEG2000 compression that I work with primarily come from Aperio scanners (http://www.aperio.com) and consist of tissue samples scanned at 40x resolution. These images are TIFF files with the “svs” extension and the imfinfo function can correctly identify the properties of the image.
    While Aperio does offer a free viewer that can be used to extract the uncompressed image, (in my case) the images end up being well over 4GB. They can be exported to jpeg or TIFF, but as you can imagine, processing the entire image is no longer a simple task. As far as I know, without support for bigTIFF, processing the TIFF in chunks is also not possible in MATLAB.

  4. Steve replied on :

    Siddharth—The library we use for TIFF has not yet released a final version with BigTIFF support.

  5. Ole Eichhorn replied on :

    Hi, I’m the CTO of Aperio, the company which makes the scanners mentioned (found you via a Google alert).

    1) We’d be happy to provide C++ libraries which encapsulate the image access. We use the Kakadu JPEG2000 codec. We like JPEG2000 compression better than JPEG (although we support both), and feel TIFF is a better format than JP2 because it easily supports multiple images in one file.

    2) We’ve implemented an open-source enhancement to libtiff to support BigTIFF files, published at www.bigtiff.org. This is included in our libraries.

  6. Steve replied on :

    Ole—Thanks very much for the information. I’ve seen your web page before. I was amused by the offer on your web page to copy sample BigTIFF files to a user’s hard drive and mail it back to them. ;-) We’ll take a look.

  7. Siddharth replied on :

    Hi Steve,
    I just read the release notes for R2009b (prerelease) and learned that MATLAB will support reading JPEG2000 files. Does this have any implications for the ability to read JPEG2000 compressed TIFF files ?

  8. Steve replied on :

    Siddharth—No. Where have you seen such a file?

  9. Richard replied on :

    Hi Steve,

    where can i get a softcopy of the user’s guide for the image processing toolbox 6.2? Last time i checked on the Mathworks site what they have was the user guide for version 6.3.

    thanks

  10. Steve replied on :

    Richard—As far as I know, we don’t maintain documentation for old versions online. You should have it in your installation, though. Or you could use the online version and check the release notes to see what has changed.

  11. Siddharth replied on :

    This is once again the svs file I referred to earlier. (http://blogs.mathworks.com/steve/2009/03/18/r2009a-matlab-updates/#comment-21577)

    If you were asking about the release notes, I saw them when I used the Help->Check for updates menu option in MATLAB.

  12. Steve replied on :

    Siddharth&Sorry about my confusion.

  13. Grant replied on :

    I’m still unclear, is there a way to support bigtiff in 2009b or not?

    Even if it’s not officially supported, can I wrangle with libtiff (from Aperio or the bigtiff project) in some way?

    I’d love to hear from anyone who’s been successful with this

  14. Steve replied on :

    Grant—No, bigtiff is not supported. You could try writing your own code against libtiff 4.0 if you’re feeling ambitious. This version of the library is still in beta test, which is why we haven’t incorporated it into MATLAB yet.

  15. Grant replied on :

    Oh no, I’m definitely not feeling that ambitious, but I’ll be keeping my otherwise busy fingers crossed for a fortuitous union of libtiff 4.0 RC and 2010a!

  16. Steve replied on :

    Grant—Sorry, but it won’t be for R2010a. That development deadline has already passed.

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.