[Insight-users] registration and spacing

Luis Ibanez luis . ibanez at kitware . com
Thu, 10 Jul 2003 16:52:59 -0400


Hi Michael,

It is normal that the registration fails in the setup that you
are configuring.

Your ImageRegistrationMethod is using a "TranslationTransform".

This transform cannot compensate for the scaling changes that
you are introducing when you change the pixel spacing.

If you want to compensate for translation and scaling you may have
to use a "SimilarityTransform" which is the simplest transform
capable of managing both translation and scaling. You could also
go one step further and use an "AffineTransform".

Your expectation of the registration to work with a common
scaling of the factors you altered, seems to be based on the
assumption that registraion is performed in pixel space. That
is, in the discrete grid of the images.

However, registration in ITK is not performed in the pixel space.
It is performed in the physical space in millimeters.

When you scale the pixel spacing of one image, you create the
conditions for registering two objects that have different
physical sizes. The correspondance between these two object
can only be achieved with a Transform supporting some form of
scaling factor.


---


Just on the side: Note that a scale factor of 2X is quite
aggresive. In normal conditions in medical image registration
we would not expect to find such a huge scale factor in normal
anatomical structures, unless you were comparing infants with
adults.  E.g. For reference: In humans, the size of the brain
in the newborn is about 25% of its adult size and it reaches
about 75 % of its adult size by the end of the first year.




   Regards



      Luis


-----------------------
Michael Kuhn wrote:
> Hi,
> 
> I'm trying to do a registration using 3D Data (pixel type short). The 
> general setup is as follows:
> 
> The input consists of one file containing the data. The data is then 
> transformed using a ResampleImageFilter which applies a translation to 
> it. Afterwards, the original as well as the transformed image are fed 
> into a ImageRegistrationMethod as fixed (original) and moving 
> (translated) image respectively.
> 
> If the spacing of both data sets is set to 1.0 (in every direction), the 
> registration works fine. However if I scale the spacings as well as the 
> translation vector (for the translation itself as well as the 
> initalParameters for the registration) and the minimum/maximum step 
> length with the same factor, the registration doesn't work any longer 
> (i.e. produces incorrect results). The origin of the data was set to 
> [0,0,0].
> 
> I would expect that the registration works for any common scaling of 
> these parameters, however, it doesn't. Can somebody explain me why?
> 
> My dataset has a size of [40,40,40] and I translate it with parameters 
> FACTOR * [-1, -2, 0]. The initial parameters are set to FACTOR * [2,2,0] 
> (where FACTOR is the common scaling factor mentioned above). The max and 
> min step length are set to FACTOR * 4.0 and FACTOR * 0.01 respectively.
> 
> For the initial transform as well as the registration I use a 
> TranslateTransform<double, 3> and a 
> LinearInterpolateImageFunction<ImageType, double>. The registration is 
> done using a RegularStepGradientDescentOptimzer and a 
> MeanSquaresImageToImageMetric.
> 
> Thanks,
> 
> Michael
> 
> _______________________________________________
> Insight-users mailing list
> Insight-users at itk . org
> http://www . itk . org/mailman/listinfo/insight-users
>