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