SPDEIPTK


This is the SPDEIPTK (Small PDE Image Processing ToolKit). It has been written by Olivier Rousseau in 2005-2009 during his PhD project. It is a small set of classes and functions that are intended to be used mainly for PDE methods in image processing, but not restricted to this.

The main interesting feature of the code is that it may process large 3D images in parallel. For most parallelizable image processing algorithm, the algorithm can be written in standard form, and called by a parallel code in an almost transparent way.

This toolkit is to be used for RESEARCH PURPOSES. It is not for developpment purpose. There is absolutely no garanty of it being bugfree. There exists toolkits far more complete and stable. Let me cite the excellent ITK (Insight Toolkit).

There are several reasons why I did not use the ITK for my research. Programming efficient filters in ITK is an art. Hard coding algorithms within the ITK framework is easy, but it leads to slow algorithms. A simple C++ implementation can increase the speed by a factor of 1 to 5 depending on the algorithm. The other main reason is that ITK does not have parallel capabilities.

My hope is that it this set of code could be useful for someone testing image processing algorithms by providing a simple serial and parallel code set.

The input and output format available can easily be created or viewed by the great (and free!) visualization software paraview. (www.paraview.org)

In this Toolkit, there are 4 main classes:
  • Image2D : a class that handles 2D images. It reads and outputs .vtk format.
  • Image3D : a class that handles 2D images. It reads and outputs metaimage format (.mhd).
  • PImage3D : A class that inherits of Image3D. It is the parallel version of Image3D. All functions of Image3D that necessits processor interactions are redefined.
  • Mesh3D : A class that handles 3D volumetric meshes. It reads and writes .vtk legacy (ASCII) format. This class is more rudimentary and do not have a lot of functions associated to it.
Along with those, there are many sample codes provided that implements standard algorithms. For example: - the Chan-Vese algorithm (also known as active contours without edges) in 2D, 3D, and parallel 3D. - The total variation denoising algorithm. again in 2D, 3D and parallel 3D. - The subjective surface algorithm in 2D, 3D and parallel 3D. - The reinitialization equation in 2D and parallel 3D. - The Heat equation in 2D and parallel 3D. - Many codes that performs simple operations.

The code included in the main 4 classes should be (almost) bug free as it has been used intensively for a while now. However the sample codes may have a higher bug rate. Hopefully they are small bugs.

-------- INSTALL PROCEDURES --------

The toolkit is all in "spdeiptk_1.1.tar.gz". The main directory is "spdeiptk". The main classes are defined in ".h" files that are located in "spdeiptk/lib/". They can be used as is. To compile the sample code, you should set a variable SPDEIPTK to the spdeiptk directory. For example, you can add

export SPDEIPTK = spdeiptk_dir

to your .bashrc file. Now typing "make" from the spdeiptk_dir should compile everything. It may take a few minutes. In order to compile everything, you need the g++ compiler as well as the parallel compiler mpic++. Hence you need to have a parallel computing libraries. If you don't want to use parallel computing, just erase the directories 3D/P... from the makefile in spdeiptk_dir.

If you want to install parallel librairies, I suggest openmpi. It can be installed easily on most linux systems (for example with Synaptic in Ubuntu). It is also very easy to compile if you prefer to download the source code from ther website.

The parallel code can be used on a cluster, or simply on a simple dual core processor. Just this will speed most calculations by a factor of 2.

Comments and suggestions are welcome, although there is no garanty that I will have the time to maintain and upgrade the code...

-------- GET THE CODE --------

It is here: spdeiptk_1.1.zip