[Insight-users] Fwd: Re: Parameter scales for registration (second try)

Joël Schaerer joel.schaerer at gmail.com
Tue May 14 06:22:39 EDT 2013


Hi Brian,

I'm not sure there is a need to fix v3 or to implement the optimizer in 
v4. "Fixing" v3 would break a lot of people's code (need to adjust the 
parameters after the change). As for v4, you seem to say that better 
optimizers should be used instead, so why port the old one? For me the 
most important thing to do was to post something on the mailing list, so 
that if other people encounter the problem, they will know they are not 
alone :)

About the v4 optimizers: what are the recommended v4 optimizers for 
rigid and affine (3D) registration? Are there any reference examples 
available? I couldn't find anything in the "Examples" directory of ITK.

Thanks again,

joel

On 13/05/2013 20:53, brian avants wrote:
>
> Hi joel
>
> I think its clear ... do you want to implement this approach in v4 ?   
> the "regular step" type behavior is what we achieve by other methods 
> in v4 - i.e. the steps detailed to you previously.   we can help with 
> a v4 implementation of the v3 version, if you like.
>
> if you prefer to fix v3 then, as brad said, there are several tests 
> that will need adjustment.  am sure someone would help with that too.
>
> b
>
> ---------- Forwarded message ----------
>
> From: "Joël Schaerer" <joel.schaerer at gmail.com 
> <mailto:joel.schaerer at gmail.com>>
> Da
>
>     Hi Nick,
>
>     What I called the "first scaling" is the application of scales
>     that is done before gradient normalization, in the AdvanceOneStep
>     method:
>
>     itkRegularStepGradientDescentBaseOptimizer.cxx
>     187   for ( unsigned int i = 0; i < spaceDimension; i++ )
>     188     {
>     189     transformedGradient[i]  = m_Gradient[i] / scales[i];
>     190     previousTransformedGradient[i] =
>     191       m_PreviousGradient[i] / scales[i];
>     192     }
>
>     The "second scaling" would be my proposed change, replacing
>
>     itkRegularStepGradientDescentOptimizer.cxx
>      42   for ( unsigned int j = 0; j < spaceDimension; j++ )
>      43     {
>      44     newPosition[j] = currentPosition[j] +
>     transformedGradient[j] * factor;
>      45     }
>      46
>
>     with
>
>     itkRegularStepGradientDescentOptimizer.cxx
>      42   for ( unsigned int j = 0; j < spaceDimension; j++ )
>      43     {
>      44     newPosition[j] = currentPosition[j] +
>     transformedGradient[j] * factor  / scales[j];
>      45     }
>      46
>
>     basically a second application of the parameter scales.
>
>     I hope this is clearer?
>
>     joel
>
>     On 07/05/2013 23:22, Nick Tustison wrote:
>>     Hi Joel,
>>
>>     Also, could you clarify your question a bit?  The snippet of
>>     interest in
>>     the old itkRegularStepGradientOptimizer is
>>
>>       for(unsigned int j=0; j<spaceDimension; j++)
>>         {
>>         newPosition[j] = currentPosition[j] + transformedGradient[j]
>>     * factor;
>>         }
>>
>>     When you write of "first scaling" are you referring to
>>     multiplication by
>>     "factor"?
>>
>>     Nick
>>
>>
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.itk.org/pipermail/insight-users/attachments/20130514/dbdbaa68/attachment.htm>


More information about the Insight-users mailing list