DIPY is an open source software mainly focusing on diffusion Magnetic Resonance Imaging (dMRI) analysis. For nonrigid image registration, it implements a Symmetric Normalization framework. The major goal of this framework is to calculate an affine or deffeomorphic transformation to register two 2D images or 3D volumes. As a well-known problem, registration is a non-convex optimization problem. It is very important to initialize as close to the solution as possible. So in order to avoid getting stuck at local optima, it uses a multi-resolution strategy by building a Gaussian Pyramid. That is to say we can register our images in as many stages as we want, providing previous results as initialization for the next. As this way, we need to do a lot of iterations, thus it slow down the optimization process. To speed up the calculation, one solution is to convert to a parallel computing algorithm. The OpenMP API supports multi-platform shared-memory parallel programming in C/C++ and Fortran. So in this project, I will implement a multi-thread algorithm using OpenMP to improve the performance of nonrigid image registration in DIPY.


Xinquan Wu


  • Eleftherios Garyfallidis
  • Serge K.