[Insight-users] Registration

J. Van Dalen J.vanDalen" <J.vanDalen@rad.umcn.nl
Fri, 31 Jan 2003 16:40:18 +0100 (CET)


Dear Ramakrishna,

I also work on registration and I assume you are trying to register images
based on the method of mutual information. My experience is that 6
iterations are by far not enough for a good convergence. Does your program
give an error, or not? Also, a negative value for the cost function looks
not good to me.

Anyway, it might be interesting to check the following:
  What is the format for your initial (guess) registration transformation?
  Normally it is done in an array of 7 arguments (the first four form
  of a quaternion, related to rotations, and the last 3 arguments are 
  translation parameters).
 
If it is like this, it might be useful to consider the following code:

  ScaleType scales(transform->GetNumberOfParameters());
  scales.Fill( 1.0 );
  for( unsigned j = 4; j < 7; j++ )
    {
    scales[j] = 1.0 / vnl_math_sqr(translateScale);
    }

The value of translateScale is a measure of how much you favour
translations above rotations in your registration; A value of 100 is
usually reasonable.

Furthermore, it might be useful to check the value of the 
learningRate, standardDeviation and the numberOfSamples.

It is advisable to have a look at
Applications/MRIRegistration/MIRegistration.cxx

Good luck,
Jorn.

On Fri, 31 Jan 2003, nedunuri ramakrishna wrote:

> Dear Mr.Luis,
> 
> I am working on registration.
> 	I could trace the registration process using the
> "itkcommand.h".
> My moving image is generated from fixed image by
> rotating in 2 degrees.
> 
> Optimizer parameters are:
>  optimizer->SetNumberOfIterations(   1000   );
>  optimizerScales[0] = 1.0; // scale for M11
>  optimizerScales[1] = 1.0; // scale for M12
>  optimizerScales[2] = 1.0; // scale for M21
>  optimizerScales[3] = 1.0; // scale for M22
>  optimizerScales[4] = 1.0  // scale for translation on
> Y
>  optimizerScales[5] = 1.0  // scale for translation on
> Z
> 
> When i displayed the iterations  of the optimizer
> using optimizer->GetCurrentIteration(),i observed that
> registration process is stopping at '7'
> iteration.After 7 th iteration regisrtation process
> stopped and matrix is diaplayed.
> I could not get the expected output.
> I think Sin(2) means,I should get the  0.03489 in the
> rotation matrix.
> But,I am getting
> Metric value: -0.934061
> 
> 1.0002, -0.00145522, -0.00155741, 0.999049
> 
> translation in X: 2.76434
> translation in y: -8.34538
> 
> My dataaset is of size 256X256X1.
> Affinetransfrom gave only 6 parameters.
> 
> Please suggest me why it is happening so.What should i
> do to get the expected output.
> 
> Thanks in advance,
> 
> Regards,
> Ramakrishna.