[Insight-users] About ITK registration parameter optimiser scales

Luis Ibanez luis.ibanez at kitware.com
Mon Feb 7 16:13:34 EST 2011


Hi Guang,


About question 1:

You may have found a bug in itkLBFGSOptimizer.cxx.

The code in line 269-277

  // we scale the parameters down if scales are defined
  if ( m_ScalesInitialized )
    {
    ScalesType scales = this->GetScales();
    for ( unsigned int i = 0; i < parameters.size(); i++ )
      {
      parameters[i] /= scales[i];
      }
    }

  this->SetCurrentPosition(parameters);

looks incorrect to me,
(or maybe I have not had enough coffee yet...)


----

About question 2:

The method for changing the parameter scaling
is traditionally used only at the beginning, and
kept constant during the entire registration process,
but you could change it between iterations.

I don't quite see an scenario where you would need
to modify the  scaling between iterations, but if you
have found one, then, that's a possibility.

You could do this from the Execute() method of
a non-const Observer.

...again... I don't think that you really need to do so
at every iteration.



     Luis


-------------------------------------------------------------------------
On Mon, Feb 7, 2011 at 10:57 AM, Guang YANG <G.Yang at cs.ucl.ac.uk> wrote:
> Dear Dr. Luis Ibanez,
>
> I have being developing a non-rigid registration program using ITK for
> sometime, and I use LBFGS optimiser in ITK to solve the nonlinear problem;
> however, I find it is really hard to define the optimisation scales for each
> parameter, e.g., if considering an affine transformation, my translation is
> relatively much larger than the rotation. I read your posts at:
>
> http://public.kitware.com/pipermail/insight-users/2002-October/001400.html
> http://public.kitware.com/pipermail/insight-users/2005-April/012896.html
>
> But when I tested according to these, I have got two problems,
>
> 1. The default scale for every parameter is 1. However, when I use
> SetScales() to define the scale for each parameter manually to 1. I got
> different results as the default setting, which should come out the same
> results.
>
> 2. In the posts, you mentioned a method to define the scales for different
> paramters; however, you said it is just for the initialisation.
>
> May I ask how to define the scales in further iterations please? For
> example, I can define the scales as you described as an initialisation, but
> my program runs 50 iterations for the optimisation. Should I change the
> scales at each iteration, and how please?
>
>
> I really appreciate your help. Thanks a lot.
>
>
>
> wbr,
> Guang Yang
> --
> ----------------------------------------------------------------------
> In a world without fences and walls, why bother 'GATES' and 'WINDOWS'?
> ----------------------------------------------------------------------
> Guang YANG
> Room 5.08, Malet Place
> Centre for Medical Image Computing
> Department of Computer Science and Medical Physics
> University College London (UCL)
> Gower Street
> London, WC1E 6BT
>
> Web.   http://www.cs.ucl.ac.uk/staff/G.Yang/
> Email. g.yang at cs.ucl.ac.uk
> Tel.   020 7679 0344
> Fax.   020 7387 1397
> Cell.  075 0051 4585
> ----------------------------------------------------------------------
>


More information about the Insight-users mailing list