[Insight-users] Understanding OptimizerScales in its entirety
Wolf, Levin
Levin.Wolf at haw-hamburg.de
Thu Aug 11 20:09:57 EDT 2011
Hi everybody,
i´m working on an 3D multisresolution Mutual Information registration and i would really like to understand the mechanism of the OptimizerScales in its entirety.
I know, why I need them and how to use them. But I´m still not able to retrace the way of my scaling. How are they really working...
In my case, I´m using:
itk::MattesMutualInformationImageToImageMetric
itk::VersorRigid3DTransform
itk::VersorRigid3DTransformOptimizer
itk::CenteredTransformInitializer
and for example the following settings:
typedef OptimizerType::ScalesType OptimizerScalesType;
OptimizerScalesType optimizerScales( transform->GetNumberOfParameters() );
const double translationScale = 1.0 / 2000.0;
optimizerScales[0] = 1.0;
optimizerScales[1] = 1.0;
optimizerScales[2] = 1.0;
optimizerScales[3] = translationScale;
optimizerScales[4] = translationScale;
optimizerScales[5] = translationScale;
if ( registration->GetCurrentLevel() == 0 )
{
optimizer->SetMaximumStepLength( 8.0 );
optimizer->SetMinimumStepLength( 1.0 );
}
else
{
optimizer->SetMaximumStepLength( optimizer->GetCurrentStepLength() / 2.0);
optimizer->SetMinimumStepLength( optimizer->GetMinimumStepLength() / 10.0 );
}
What happens to the Scales??? Are they getting normalized somehow? Or is the steplength simply devided by the Scale?
So how big would my first step be with these settings?
I would be very grateful if someone could help me to understand the inside of the scaling.
Thanks a lot
Levin
More information about the Insight-users
mailing list