[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--