[Insight-users] questions about affine registration
Luis Ibanez
luis.ibanez at kitware.com
Tue Jul 17 11:42:09 EDT 2007
Hi Michael,
Please read the ITK Software Guide
http://www.itk.org/ItkSoftwareGuide.pdf
in particular the chapter on "Image Registration".
1) The Optimizer SetScale() method (as described in the
user guide) is used for compensating for the differences
in dynamic range between the parameters of the Transform.
For example, if you were doing 2D rigid registration your
transform will have 3 parameters: 1 angle, and 2 translations.
The angle will be measured in radians while the translations
will probably be measured in millimeters. The angle will have
a typical range of -1.57:1.57, while the translations may have
a range of -200 to 200. That difference of dynamic range will
create a distortion on the parametric space where the optimizer
walks. The array of scales is intended to compensate for this
difference by bringing all the transform parameters to a similar
range.
You will find many examples of the use of this parameter scaling
in the "Image Registration" chapter of the ITK Software Guide.
2) Transforms will have some fixed parameters and some variable
parameters. A typical fixed parameter is the "center of rotation"
of a transform. Typical variable parameters are the rotation angle
and translations of the example in question (1).
When you want to copy one transform into another you must make sure
that you copy both the Fixed and the variable parameters. Otherwise
the two transforms are not equivalent.
3) The two methods above *ARE NOT* what you need for controlling a
scaling of the image and follow it with an affine transform.
What you need is to perform a first registration using the
itkScaleTransform, followed by another stage using the
itkAffineTransform.
Please read the Image Registration chapter of the ITK Software Guide.
It will save you a lot of time in the long run.
BTW, If your goal is to just register some 3D datasets, and not to
develop the registration application, you may want to simply
use the application:
ImageRegistrationTool
The source code of this application is at
InsightApplications/
LandmarkInitializedMutualInformationRegistration/
a binary version of the executable can be found at
http://public.kitware.com/pub/itk/InsightApplicationsBin/
http://public.kitware.com/pub/itk/InsightApplicationsBin/ImageRegistrationTool.exe
Regards,
Luis
----------------------
Michael Schildt wrote:
> Hello Everybody!
>
> I'm new to the toolkit and started using the ITK for registration of
> inter-modal, intra-subject 3D MRI datasets. I worked through the
> examples delivered with the software. I tried to make my own programm
> based on one example to make a centered affine 3D transform and perform
> registration using MattesMI, linear interpolation and
> RegularStepGradientDescent and results aren't satisfying . The tranform
> was initialized via TransformInitializer using the moments of both
> datasets. Maybe still some understanding problems remained for me:
>
> 1) What is optimizer->SetScale() really doing?
> As far as I understood it helps me to make parameters of the transform
> beeing in the same number range for optimization. So setting it to
> values smaller
> one for that parameter it will make smaller otimization steps? What
> happens if the value is zero. I thought will fix this parameter, but it
> didn't. :-/
>
> 2) What is the Method transform->SetFixedParameters() for? The
> documentation just says, it fixes the parameter. :-(
>
> I want to fix some of the parameters for the registration, making a
> scaling as first step, followed by complete affine transform. Can I do
> this with with one of above mention methods?
>
> Best regards,
> M. Schildt
>
> _______________________________________________
> Insight-users mailing list
> Insight-users at itk.org
> http://www.itk.org/mailman/listinfo/insight-users
>
More information about the Insight-users
mailing list