Distribution of Image Registration Algorithms
Quick Introduction into the theme
The registration of images is an important tool in computer aided diagnosis.
Existing implementations of Image Registration Algorithms are already available in the CAMP library.
To optimize these implementations it would be interesting to see if the distribution of the computation on multiple processors or a cluster will achieve results faster.
Distributing the existing image registration implementation using MPI. The best-neighbor optimizer is distributed so multiple positions can be evaluated in parallel.
Testing and documenting the results on the Infiniband Cluster provided by the LRR chair(http://infiniband.in.tum.de/
Sequential image registration by voxel intensities using the whole image content is an iterative process.
Data 1 is the moving image, Data 2 the fixed image. Starting with an initial transformation T the moving image is interpolated and the two images are compared. These values are used in the optimizer to refine the transformation T. This loop of interpolation, comparison and optimization runs until the values fall below a threshold and the registration terminates.
This needs a lot of computational power and makes it the point of attack.
By distributing this loop multiple values can be evaluated at the same time and thus the runtime can be decreased significantly.
The details how the implementation works and the results of the extensive testing are explained in the documentation
of the SEP.
Testing was done and the results are convincing. The distributed implementation reaches a speedup of about 11.4 times compared to the sequential image registration.
Flexibility is reached because of the design using the decorator pattern of the CAMP library. The class RegistrationMPI can be used to register two images or volumes of every modality and dimension that is provided by the sequential registration.
This piece of code shows the way how the distributed registration is called.
The user can decide what kind of registration shall be performed by giving an instance of the correct registration like for example Registration3D3D to the constructor of RegistrationMPI.
In the slides
of the final presentation some parts of the code can be found.
Systementwicklungsprojekt. Supervisor: Wolfgang Wein
- 20 Jul 2004
- 20 Jul 2004
- 10 Aug 2005