Distributed Anisotropic Diffusion

Please use this identifier to cite or link to this publication: http://hdl.handle.net/10380/3242
Distributed anisotropic diffusion provides a wrapper program around ITK's anisotropic diffusion filters that allows an input image to be spread across the memory of several computers and the processors of all of the computers to work simultaneously on the output. Distributed anisotropic diffusion allows the Visible Woman Head dataset to be smoothed with 100 iterations of the vector gradient magnitude anisotropic diffusion filter in 47 minutes on an 8 node 64 core cluster versus 53 minutes for just 10 iterations of standard vector gradient magnitude anisotropic diffusion on a single node.
minus Automatic Testing Results by Insight-Journal Dashboard on Wed Dec 15 14:15:31 2010 for revision #1
starstarstarstarstar expertise: 5 sensitivity: 3.5
yellow CMake was unable to configure this project.
Click here for more details.

Go here to access the main testing dashboard.

minus good example program by Bradley Lowekamp on 2011-01-27 11:19:13 for revision #1
starstarstarstarstar expertise: 4 sensitivity: 3.5

The author has contributed a program which distributes VectorGradientAnisotropicDiffusion with MPI.


The hypothesis is that this algorithm is distributable across multiple machines interconnected with MPI, and that this will provide faster and scalable computation.  


The paper show the resulting data from the processing, along with some processing times of the algorithm. While more rigor could have been provided to identifying the constant time factors vs the data dependent time, and more experiments to determine if the process scales in terms of doubling both data processors at the same time, the times are convincing of the benefits for using this distribution approach.

Open Science:

The software is provided along with testing data, and the location of the full testing data.


The code compiled with out any issues on my mac system, and on the cluster. The provided tests pass.

Use of Open Source Software:

The auto uses ITK, and the is compatible with an openMPI implementation of MPI.

Open source Contributions:

The resulting program is quite useful and provides a good basis for developing the methods for ones own purpose. The paper does an excellent job of describing the pipeline. Figure 1 is especially useful.

Code Quality :

The code was portable and easy to read with good names and follows common conventions.


This contribution primarily is one long main function. It is disappointing that this was not broken up into more re-usable functions. 

Quality of the data :

Provided with the data a a small crop of the Visible Woman. Excellent choice!


In an afternoon I was able to convert the code to work with scalar anisotropic diffusion, change the the bulk data mpi send/recv to be asynchronous then integrating it into a tool. I am immediately planning on using the to process large FIB-SEM volumes. 

Free comment :

While the contributed code is not directly useful to be integrated into ITK, this is an excellent example application to demonstrate using MPI on top of an ITK pipeline. It makes good use of IO streaming methods. The sections of code to deal with region overlap are well implemented and provide a good example of how to processes and communicate overlapping regions. It is unfortunate that this has not been packaged in a more reusable fashion.

The mpi methods used are synchronous, better performance should be obtained with asynchronous methods. The management of the bulk data in the pipeline could be improve with careful use of the InPlace and ReleaseData flags. This should reduce memory usage by at least factor of 2-3.

An significant area of concern is that average gradient magnitude calculation appears to give slightly different results then the one internal to the diffusion. This results in the final output not completely matching that of the non-mpi version.

Overall this is a very useful contribution and an excellent example of using MPI with ITK.


Add a new review
Quick Comments

Download All
Download Paper , View Paper
Download Source code

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

Information more
Categories: Anisotropic blurring filters, Distributed computation
Keywords: Distributed, MPI, Smoothing, Anisotropic
Toolkits: ITK, CMake
Export citation:


Linked Publications more
A Label Geometry Image Filter for Multiple Object Measurement A Label Geometry Image Filter for Multiple Object Measurement
by Padfield D., Miller J.
Diffeomorphic Demons Using ITK's Finite Difference Solver Hierarchy Diffeomorphic Demons Using ITK's Finite Difference Solver Hierarchy
by Vercauteren T., Pennec X., Perchant A., Ayache N.

View license
Loading license...

Send a message to the author
ISSN 2327-770X
Powered by Midas