[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