[Insight-users] ImageToImageMetric to compute local similarity map

Julien Michel julien.michel at cnes.fr
Tue Aug 24 05:17:51 EDT 2010


Dear ITK users and developpers,

I am using the itk::ImageToImageMetric to perform local registration : 
At each location of a fixed image, we search for the best matching patch 
(defined by a radius) in the moving image within a given search window 
(defined by another radius). This can be easily done using a Metric, a 
TranslationTransform and some Interpolator. After sub-pixel refinement, 
we output a map of the local metric extrema at each location as well as 
the map of local displacement (aka DeformationField). This is working 
very well and allows to exploit the full range of 
itk::ImageToImageMetric. However, there are two drawbacks of using these 
metric classes :

- To restrict the metric computation on our local area we need to call 
the SetFixedImageRegion() method. This is annoying because it prevents 
us to implement a multi-threaded version (we would need one metric 
per-thread, which is not easy to do if we want to keep the metric 
parameters). This is the only thing that prevent from having a 
multi-threaded version, since GetValue() and subsequent methods in the 
transform and interpolation are const.

- Using the OptMeanSquareImageToImageMetric  from Code/Review, 
performances are drastically reduced with respect to non-optimized 
metrics. This seems to be related to our intensive use of the 
SetFixedImageRegion() and Initialize() methods which trigger memory 
allocation. Using the optimized metric framework solves the previous 
point since these metrics seems to be internally multi-threaded, but 
they do not seem optimized for this kind of use.

Any idea on how to solve these two points ?

Even with these two drawbacks, thanks to the great work on image metrics 
available in ITK we have a versatile and streamed filter to perform 
local registration.

Regards,

Julien

-- 
Julien MICHEL




More information about the Insight-users mailing list