[Insight-developers] The Insight Journal-New Submission
Marius Staring
marius at isi.uu.nl
Tue Jul 17 06:55:39 EDT 2007
Hi all,
The refactoring of the registration framework is a very nice initiative.
We have a few remarks/suggestions:
1. From the powerpoint presentation in the Insight journal we noticed
that the new OptImageToImageMetric now includes the functionality to
sample the fixed image, like the MattesMutualInformation used to do
already. We have implemented something similar. You may be interested to
inspect our implementation. We have tried to seperate the sampling
functionality from the ImageToImageMetric, by designing a set of filters
that accept an image as input and return a vector containing the samples
as output (in a so-called itk::VectorDataContainer). For this purpose we
wrote a base class, the itk::ImageSamplerBase, from which different
image samplers can inherit. We have implemented several of them: the
itk::ImageFullSampler (takes all voxels within mask), the
itk::ImageRandomSampler (which does the same as the
MattesMutualInformation class does), and some others. The ImageSampler
is just another component to be set in the metric, just like the
Interpolator, Transform, etc.
The code (metricwithsampler.zip) can be found at
www.isi.uu.nl/People/Stefan. The AdvancedImageToImageMetric inherits
from the ImageToImageMetric and supports setting an ImageSampler. Don't
mind the somewhat ambitious name, by the way :)
The relevant methods are:
- SetImageSampler() and GetImageSampler()
- SetUseImageSampler() and GetUseImageSampler()
- InitializeImageSampler()
The provided code won't compile as is, since it contains some references
to other code that we use, see www.isi.uu.nl/Elastix.
2. The same class includes also some functions that benefit from
transforms that have sparse Jacobians (compact suppport), such as the
B-spline transform. The code does essentially the same as the code in
the MattesMutualInformation, but can be re-used by all inheriting
metrics. The relevant functions for this are:
- CheckForBSplineTransform()
- TransformPoint()
- EvaluateTransformJacobian()
If you are interested, feel free to adopt (parts of) the code. If you
have any questions, don't hesitate to contact us.
Stefan and Marius
Insight Journal wrote:
> Hello,
> A new submission has been added to the Insight Journal.
>
> Title: Optimizing ITK’s Registration Methods for Multi-processor, Shared-Memory Systems
> Author(s): Aylward, Stephen; Jomier, Julien; Barre, Sebastien; Davis, Brad; Ibanez, Luis
> Abstract:
> This document describes work-in-progress for refactoring ITK’s registration methods to exploit the parallel, computation power of multi-processor, shared-memory systems. Refactoring includes making the methods multi-threaded as well as optimizing the algorithms. API backward compatibility is being maintained. Helper classes that solve common registration tasks are also being developed.
>
>
> The refactoring has reduced computation times by factors of 2 to 200 for metrics, interpolators, and transforms computed on multi-processor systems. Extensive sets of tests are being developed to further test operation and backward compatibility.
>
> Download the paper at: http://hdl.handle.net/1926/566
> Review the paper at: http://insight-journal.org
>
> Generated by the Insight Journal Manager
>
> You are receiving this email because you asked to be informed by the Insight Journal for new submissions.
> To change your email preference go to http://insight-journal.org.
>
> _______________________________________________
> Insight-developers mailing list
> Insight-developers at itk.org
> http://www.itk.org/mailman/listinfo/insight-developers
>
>
--
Marius Staring
Image Sciences Institute
University Medical Centre Utrecht
Heidelberglaan 100, 3584 CX Utrecht, The Netherlands
phone: +31 (0)30 250 3186, fax: +31 (0)30 251 3399
marius at isi.uu.nl, http://www.isi.uu.nl/People/Marius
More information about the Insight-developers
mailing list