[Insight-developers] [Fwd: [Insight-users] registration in ITK]
Luis Ibanez
ibanez@cs.unc.edu
Thu, 13 Dec 2001 14:29:28 -0500
This is a multi-part message in MIME format.
--------------7740430AA301654DC2801FB8
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
Hi
The classes that are implementing non-rigid
registration are using Affine transforms.
You have the following options:
- itkImageToImageAffineMeanSquaresGradientDescentRegistration.h
-
itkImageToImageAffineMeanSquaresRegularStepGradientDescentRegistration.h
- itkImageToImageAffineMutualInformationGradientDescentRegistration.h
-
itkImageToImageAffineNormalizedCorrelationGradientDescentRegistration.h
-
itkImageToImageAffineNormalizedCorrelationRegularStepGradientDescentRegistration.h
-
itkImageToImageAffinePatternIntensityRegularStepGradientDescentRegistration.h
- itkMultiResolutionMutualInformationAffineRegistration.h
Regisration methods in ITK are build pretty much
in the same way that you order a Pizza. Basically
you select the components and put them together.
For each component you may pick a particular
implementation of the same family of components.
You will basically need:
1) a transform (that will map from input image to output image)
2) a metric (to compare the images after being mapped)
3) an optimizer ( that looks for the best parameters of the transform)
The registration framework has all the necesary
component for implementing a relatively simple
non-rigid registration of higer order than Affine.
Basically using one of the two following transforms:
itkElasticBodySplineKernelTransform
itkThinPlateSplineKernelTransform
that can be found in Insight/Code/Common.
A possible combination could be the following:
optimizer: itkRegularStepGradientDescent
metric: itkMeanSquaresImageToImageMetric
transform: itkThinPlateSplineKernelTransform
The thin plate spline transform expect as parameters
two lists of points. One list is a set of points
(or landmarks) in the input space, the second is a set
of points in the output space. Given these two lists
the transform will interpolate the mapping for all the
other points in space.
Registration becomes then the optimization problem of
finding the best position for the points in one of
the lists in order to maximize (or minimize, depending
on the metric used) the metric that compares the two
images.
For the sake of computing time reduction you might want
to keep the number of points to a small value.
For the sake of good-behavior in the spline, you might
want to select those points well separated among them
and distributed on space in such a way that they cover
the entire image.
In 2D, a dozen point would be a reasonable size for this
list.
In 3D you will require about 30 points to start.
Hope that helps
Luis
-----------------------------------------------
zhangzhijun wrote:
>
> May I ask is there any non-rigid registration algorithm implemented now in
> ITK?
>
> regards
> zhang zhijun
>
--------------7740430AA301654DC2801FB8
Content-Type: message/rfc822
Content-Transfer-Encoding: 7bit
Content-Disposition: inline
Message-ID: <3C18DCDB.C6FE1CD3@cs.unc.edu>
Date: Thu, 13 Dec 2001 11:52:43 -0500
From: Luis Ibanez <ibanez@cs.unc.edu>
Organization: Department of Computer Sciences UNC
X-Mailer: Mozilla 4.77 [en] (X11; U; Linux 2.2.16-8smp i686)
X-Accept-Language: en
MIME-Version: 1.0
To: zhangzhijun <zjzhang@ee.cuhk.edu.hk>
Subject: Re: [Insight-users] registration in ITK
References: <FBE90DFC240BA541B38A43F39913A16D025C423F@xmb02crdge> <000701c183ee$f949c120$1223bd89@ee.cuhk.edu.hk>
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
Hi
The classes that are implementing non-rigid
registration are using Affine transforms.
You have the following options:
- itkImageToImageAffineMeanSquaresGradientDescentRegistration.h
-
itkImageToImageAffineMeanSquaresRegularStepGradientDescentRegistration.h
- itkImageToImageAffineMutualInformationGradientDescentRegistration.h
-
itkImageToImageAffineNormalizedCorrelationGradientDescentRegistration.h
-
itkImageToImageAffineNormalizedCorrelationRegularStepGradientDescentRegistration.h
-
itkImageToImageAffinePatternIntensityRegularStepGradientDescentRegistration.h
- itkMultiResolutionMutualInformationAffineRegistration.h
Regisration methods in ITK are build pretty much
in the same way that you order a Pizza. Basically
you select the components and put them together.
For each component you may pick a particular
implementation of the same family of components.
You will basically need:
1) a transform (that will map from input image to output image)
2) a metric (to compare the images after being mapped)
3) an optimizer ( that looks for the best parameters of the transform)
The registration framework has all the necesary
component for implementing a relatively simple
non-rigid registration of higer order than Affine.
Basically using one of the two following transforms:
itkElasticBodySplineKernelTransform
itkThinPlateSplineKernelTransform
that can be found in Insight/Code/Common.
A possible combination could be the following:
optimizer: itkRegularStepGradientDescent
metric: itkMeanSquaresImageToImageMetric
transform: itkThinPlateSplineKernelTransform
The thin plate spline transform expect as parameters
two lists of points. One list is a set of points
(or landmarks) in the input space, the second is a set
of points in the output space. Given these two lists
the transform will interpolate the mapping for all the
other points in space.
Registration becomes then the optimization problem of
finding the best position for the points in one of
the lists in order to maximize (or minimize, depending
on the metric used) the metric that compares the two
images.
For the sake of computing time reduction you might want
to keep the number of points to a small value.
For the sake of good-behavior in the spline, you might
want to select those points well separated among them
and distributed on space in such a way that they cover
the entire image.
In 2D, a dozen point would be a reasonable size for this
list.
In 3D you will require about 30 points to start.
Hope that helps
Luis
-----------------------------------------------
zhangzhijun wrote:
>
> May I ask is there any non-rigid registration algorithm implemented now in
> ITK?
>
> regards
> zhang zhijun
>
> _______________________________________________
> Insight-users mailing list
> Insight-users@public.kitware.com
> http://public.kitware.com/mailman/listinfo/insight-users
--
Luis Ibanez CB#: 7060
Research Assistan Professor phone: (919) 843 5436
Division of Neurosurgery fax: (919) 966 6627
University of North Carolina at Chapel Hill email:
ibanez@cs.unc.edu
Chapel Hill, NC 27599-7060
http://www.cs.unc.edu/~ibanez
--------------7740430AA301654DC2801FB8--