[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