[Insight-users] how to block some parameters from optimizing in an
optimizer?
kdsfinger at gmail.com
kdsfinger at gmail.com
Sat Jan 6 12:57:36 EST 2007
hi,
I noticed that one can set the optimizerScalers to a very large number
to block that item to be optimized, but don't know exactly how.
Suppose I have a versor optimizer which has 6 parameters (first 3 for
rotation and last 3 for translation). As mentioned in the manual, the
rotation unit is radius and translation is mm. I have:
optimizerScales[0] = 1.0;
optimizerScales[1] = 1.0;
optimizerScales[2] = 1.0;
optimizerScales[3] = translationScale;
optimizerScales[4] = translationScale;
optimizerScales[5] = translationScale;
optimizer->SetScales( optimizerScales );
optimizer->SetMaximumStepLength( 0.2000 );
optimizer->SetMinimumStepLength( 0.0001 );
Now I want to block the optimization of translation on x direction and
rotation on x axis and y axis, should I say:
optimizerScales[0] = 10000.0;
optimizerScales[1] = 1.0;
optimizerScales[2] = 10000.0;
optimizerScales[3] = translationScale*10000;
optimizerScales[4] = translationScale;
optimizerScales[5] = translationScale;
optimizer->SetScales( optimizerScales );
optimizer->SetMaximumStepLength( 0.2000 );
optimizer->SetMinimumStepLength( 0.0001 );
What I am confusing is: does the optimizerScales refers to the minimum
unit updated during optimization or it's just refers the relative
scales of the parameters to be optimized? In the 2nd way, it maks no
difference by saying
optimizerScales[0] = 1.0;
...
optimizerScales[3] = 1.0/1000;
and
optimizerScales[0] = 1000.0;
...
optimizerScales[3] = 1.0;
Thanks for help.
zl2k
More information about the Insight-users
mailing list