Consolidated morphology

Please use this identifier to cite or link to this publication:
Grayscale dilation and erosion are basic transformations of mathematical morphology. Used together
or with other transformations, they are very useful tools for image analysis. However, they can be very
time consuming, especially with 3D images, and with large structuring elements. Several algorithms
have been created to decrease the computation time, some of them with some limitations of shape of
structuring element. We have implemented several algorithms, studied their performance in different
conditions, and shown that all of them are more efficients than the others in certain conditions.
We finally introduce a new structuring element class and a some meta filter designed to select the best
algorithm depending on the image and the structuring element, and to smoothely integrate the different
algorithms available in the toolkit.
minus 2 Files (550Kb)
minus Automatic Testing Results by Insight-Journal Dashboard on Sun Sep 17 14:41:30 2006 for revision #1
starstarstarstarstar expertise: 5 sensitivity: 5
yellow This project passed all of its tests.
Click here for more details.

Go here to access the main testing dashboard.

minus Nice contribution to enhance Morphological filters in ITK by Dan Mueller on 09-17-2006 for revision #1
starstarstarstarstar expertise: 3 sensitivity: 5
This paper presents a reworking of ITK's mathematical morphology filters. The work is motivated by a number of factors including convenience, completeness, and performance. As of revision 1, this is a stub article only - the source code contains the developmental versions of all the additional filters, however only the FlatStructuringElement is addressed in the paper. As such, this review focusses on the FlatStructuringElement issues only.

Open Science:
This contribution conforms to Open Science by providing all source code, tests, and images.

I compiled the entire project on WinXP SP2, using MSVC8.0, CMake 2.4.2. I encountered a number of compilation issues:

1. Project testSE: itkFlatStructuringElement.txx: line 512: ambiguous call to pow(). Microsoft Visual Studio 8.0 on WinXP can not resolve the first argument if it is an int - it must be explicitly cast to a double. eg. 'unsigned int facets = 8 * (int)pow(4, iterations);' becomes 'unsigned int facets = 8 * (int)pow(4.0, iterations);'

2. Project kernelShape: itkFlatStructuringELement.h: line 67: error C2064: term does not evaluate to a function taking 0 arguments. This one is a little beyond my experience: I looked here for some more info, but it didn't really help. To temporarily resolve this issue in order to continue reviewing, I removed the default argument values and changed all the references to FromImage and GetImage to specifically provide the values (not a very good long term solution - the default parameters are nice! If anyone has any suggestions for getting this to work with MSVS8.0 on WinXP I am willing to test it out).

3. There are lots of warnings: warning C4804 : unsafe use of type bool in operation. (BTW Gaetan, I have also noticed these warnings when compiling WrapITK). This results from using comparison operations on bools (seeing that the itk::Neighborhood has TPixel=bool). These warnings may scare/confuse some users, so it might be wise to add the following pragma statement somewhere: ' #pragma warning( disable : 4804) '. For sake of ease I have added it to ImageToImageFilter.h in my working copy, but this is probably not the best place for it... Probably better is the header file of each morphological filter .. ?

Use of Open Source Software:
Uses ITK.

Code Quality:
Excellent code quality. I like lots of comments, and itkFlatStructuringElement.txx has plenty!

Just a few minor issues:
1. While the guts of the code is very well commented, the actual header (which users will look to for useage instructions/documentation) is lacking. I feel you should add/enhance the comments for:
Box: eg. " An easy access method for creating a box (2D) or cube (3D) structuring element. This method supports n-D dimensions. "
Ball: eg. " An easy access method for creating a circle (2D) or spherical (3D) structuring element. "
Poly: eg. " An easy access method for creating a polygon structuring element. Note that for 3D structuring elements, only the following number of edges are supported: 12, 14, 20, 32. "
FromImage: eg. " Creates an arbitrary structuring element from the given image. "

2. It is probably worthwhile to comment the Decomposable property in itkFlatStructuringElement.h (just to let users know they don't need to worry too much about it - eg. " This is an internal property to specify if the current structuring element is decomposable. Decomposable structuring elements can be implemented using more efficient/faster algorithms. "). Also to conform to ITK standards maybe use itkGetConstMacro(Decomposable, bool);

3. (This is a bit of a personal preference but) I like to see any papers which the class implements or was influenced by in the class documentation in the header (ie. include the reference to "Radial Decomposition of Discs and Spheres" - CVGIP: Graphical Models and Image Processing in the header).

Applicability to other problems:
Mathematical morphology has wide application and the enhancements proposed in this article make using morphological filters in ITK more convenient and computationally more efficient.

Requests for additional information from authors:
Is there a reason that you defined M_PI in itkFlatStructuringElement.txx and didn't use the Utilities/vxl/core/vnl/vnl_math.h version (vnl_math::pi) ?

Additional Comments:
BTW: I like the images/StrelFromImage.png picture!

Comment by Gaetan Lehmann: Will fix ! yellow
I will fix the issues you are pointing. Also, I think it should be possible to use vnl_math::pi instead of a custom defined pi, as you suggest.
Please note that the Decomposable property is vonluntarily not described yet, because the version already in ITK cvs dosn't include it. It is useful only for van Herk / Gil Werman and Anchor algorithms.

Thanks for the review :-)

PS: And StrelFromImage.png is not only nice, it is also fully asymetric and so well designed to validate the FlatStructuringElement code :-)
Add a new review
Quick Comments

Download All

Statistics more
Global rating: starstarstarstarstar
Review rating: starstarstarstarstar [review]
Code rating: starstarstarstarstar
Paper Quality: plus minus

Information more
Keywords: mathematical mophology, structuring element
Toolkits: ITK (moved into the sandbox)
Export citation:


Linked Publications more
Anisotropic Fast Marching in ITK Anisotropic Fast Marching in ITK
by Mirebeau J.
ITK in Biomedical Research and Commercial Applications ITK in Biomedical Research and Commercial Applications
by McCormick M., Aylward S., Johnson H., Lowekamp B.

View license
Loading license...

Send a message to the author
Powered by Midas