[ITK] b-spline registration performance

Matt McCormick matt.mccormick at kitware.com
Tue Aug 25 22:51:39 EDT 2015


Hi Chad,

> I'm new to non-rigid image registration and ITK, and I've been using
> SimpleITK to perform b-spline registrations.

Welcome to ITK!


> I am working with relatively large images (pixels, x: 3000, y: 2500, z: 100)
> with dense information (microscopy images), and I'm quite frustrated with
> the speed / computation time.
>
> I'm following
> (https://github.com/SimpleITK/SimpleITK/blob/master/Examples/ImageRegistrationMethodBSpline2.py)
> except that I'm using (25, 25, 10) mesh (ideally higher numbers if
> feasible), correlation for metrics (I'm working with unimodal), and using
> down-sampled images with multi-resolution registration (12x smaller, 6x
> smaller). With two E5 2687w processors, the Python process (the SimpleITK)
> takes about 70~80% CPU. Ideally I'd like to use at least (40, 40, 20) mesh.
>
> 1. Will I gain any performance by using ITK instead of SimpleITK?

If you are using the same approach, there will effectively be no
performance difference.


> 2. What advice could you give me to improve the b-spline registration speed
> (both in general and specifically in SimpleITK)?

Get the registration working well with the large image when densely
sampling the images for metric computation.  Then, progressively
decimate the metric sampling [1] until registration performance
declines.  Increase the sampling percentage again with an additional
safety factor.

Hope this helps,
Matt


[1] http://www.itk.org/SimpleITKDoxygen/html/classitk_1_1simple_1_1ImageRegistrationMethod.html#adca6e03c04216fca8ba0d90d84cb9600


More information about the Community mailing list