[Insight-users] 2D Registration parameters

Luis Ibanez luis.ibanez@kitware.com
Mon, 04 Nov 2002 22:41:54 -0500


Hi Nino,

If you know before hand that the images are only translated,
one with respect to the other, you can use the
itkTranslationTranform. This will reduce the parameter space
to just 2D = { xtranslation, ytranslation }.

When you use an AffineTransform in 2D, it provides 6 parameters
because it is formed by a Matrix and a Vector.


A point P = {x,y} is transformed into P' by

                      P' = M * P + V

V is a 2D translation vector, with components { vx, vy }
M is a 2x2 matrix that reprents combinations of rotations, scale
        and shearing.

The parameters {p1,p2,...p6} printed by the example are organized as


M = | p1 p2 |
     | p3 p4 |

V =  | p5 |
      | p6 |


Using an AffineTransform is unnecessary if you know that only
translation is involved in the missalignment. The optimizer is
exploring a 6D parameter space instead of the required 2D
parametric space.

A good combination for 2D images is the one used in

    Insight/Examples/MutualInformationEuler2DRegistration

(today moved to
    Insight/Applications/MutualInformationEuler2DRegistration )

It uses a Euler2D transform
http://www.itk.org/Insight/Doxygen/html/classitk_1_1Euler2DTransform.html

and a MutualInformation metric.
http://www.itk.org/Insight/Doxygen/html/classitk_1_1MutualInformationImageToImageMetric.html
Do your images belong to different modalities.
For example, one taken in an IR band and the other in UV ?
If this is the case, you definetly need to use MutualInformation
as a metric. Otherwise, you may start with a metric like MeanSquares.

A nearest neighbor interpolator should be enough for satelite
images since you usually get very good resolutions.
(is this your case ? I guess that you have at least 1024x1024 pixels...)

The optimizer that is simple to control is the
RegularStepGradientDescentOptimizer
http://www.itk.org/Insight/Doxygen/html/classitk_1_1RegularStepGradientDescentOptimizer.html

If your images are of considerable size, you may want to try the 
multiresolution framework,
http://www.itk.org/Insight/Doxygen/html/classitk_1_1MultiResolutionImageRegistrationMethod.html
whose components are the same used in the basic registration framework.


Please let us know if you have further questions,


   Thanks


    Luis


===========================================
Nino Z wrote:

> Hello Luis,
> 
> I'm trying to register two 2D grayscale satellite images. They are not rotated or scaled. One image is shifted from the other in X and Y direction, so I'm trying to find the X and Y translation values. From the several image registration method tests in the Testing directory, I found several combination of parameters that work with my two test images. When I'm using the Affine transform and the CommandIterator to view the results, I get something like this:
> 
> value: [value1 value2 value3 value4 value5 value6)
> 
>>From the examples I figured out that value5 and value6 are the actual displacement values. In the examples it's [-7 -3]. Are these values in pixels? What do the rest of values mean? Where can I find what the scale and rotation are?
> 
> Is there an optimal combination of registration parameters for the satellite images (optimizer, transform, interpolator and metric) or does the combination depend on the individual images?
> 
> My code is heavily based on the Image Registration example (filtered out all of the FLTK from it) in the Examples directory and I used some of the tricks I learned from the examples in the Algorithms Tests directory.
> 
> Thanks,
> 
> Nino
> 
> 
> 
> 
> _______________________________________________
> Insight-users mailing list
> Insight-users@public.kitware.com
> http://public.kitware.com/mailman/listinfo/insight-users
> 
>