# Algorithms for deformable image registration

I need to perform a deformable image registration (DIR) for delineation of the different brain parts on the brain MRI 3D image. I faced with a problem that there are a lot of different approaches for solving this problem while I don't have enough experience to choose the right approach. First off I tried a lot of different algorithms from the itk library. After that I made several conclusions:

1) Affine registration is not appropriate for general case of this problem (I mean I always can find such examples that require not affine transformation for proper registration).

2) All itk cpu based algorithms for DIR takes at least several minutes to get the appropriate results. The only way to reduce this time is to use gpu based algorithms. (I use 256*256 and 512*512 T1 images)

3) Demons algorithm is really good approach for solving the general purpose registration, I just need to find the right parameters and number of iterations.

Are this conclusions right? What other fast algorithms for DRI can you suggest? (I have found such algorithms as 6 types of Demon's, SG-LDDMM, IC-LDDMM, BSpline and fluid registration, but I can't find out do they really efficient for solving my problem)

P.S. I would appreciate any links for gpu based source code for DRI.

Like Paul suggested, you may want to ask this question at the signal processing stackexchange as well. They may be able to provide you with more information. I am at best a talented amateur in the field.

Let's start with the biggest problem in image registration: there is no catch-all algorithm that just works for everything. Results are heavily dependent on image modality, site and also what you wish to use it for.

Luckily for you, brain mri is a fairly standard application. I would have a look at elastix, which is ITK based and used quite a bit at my department. It also has a nice database of parameter files for different applications, including several for brain mri. A quick glance reveals that most use B-spline registration for the brain.

I have mainly used registration for lung, where my personal experience was that Demons performed best. Note that Demons is NOT one single algorithm, although it is often presented as such. Rather it's a plethora of variations of the same basic idea.

Finally, some commercial software has registration algorithms that perform very well for specific applications. If you're associated with a hospital, ask researchers at your radiology or oncology department if they have access to something that works well.

It is likely that Demons algorithm is the correct approach to take, there is quite extensive research into using it for medical image registration so you should not have too much difficulty finding papers relating to your problem.

What other fast algorithms for DRI can you suggest?

A step up from affine registration is polynomial registration. You can essentially generalise affine transformations to polynomial transformations with a pretty negligible difference in performance. These approaches are typically implemented as matrix operations which are extremely fast, so if performance is a priority they are worth investigating.

I would appreciate any links for gpu based source code for DRI

I would recommend solving your problem at a high level and subsequently optimising it based on your requirements.

If you provide more details about your problem domain it will be easier to provide recommendations, DRI and related fields often require a lot of fine tuning based on the specific problem being solved.