[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