[Insight-users] parameters for a 1+1 evolutionary optimizer

Luis Ibanez luis.ibanez at kitware.com
Thu Jun 3 02:46:09 EDT 2004


Hi Denis,

Thanks for posting the additional details of your program.

1) Shouldn't you initialize the transforms of the
    subimages to the translation that you already
    resolved from the larger image ?

    Otherwise you are not taking advantage of the
    natural multi-resolution approach that you are
    using.

    If you start always from null translations,
    your sub-images may have to move a relatively
    large distance in order to get registered.


2) Ok, using a new optimizer is fine. Just make sure
    that the scaling parameters you pass to it, are
    proportional to the extent of the image that you
    are trying to register.


3)  Nope, by scaling factors I meant the array
     of scaling parameters. This is the array that
     allows you to compoensate for the difference
     in the dynamic range between the rotational
     and translational components.

     Rotations are propotional to radians... thus
     around -1:1,  while translation are proportional
     to millimeters (if you are using CT or MRI), thus
     in the range -500:500.

     Please look at the example ImageRegistration8.cxx
     to see the use of the scaling parameters.  In fact
     most of the examples in

          Insight/Examples/Registration

     are using parameter scaling.


4)  My Mistake about
     "the value returned by the Transform"
     what I wanted to say was:
     "the value returned by the Metric"
     Sorry about that.


Please let us know of your findings,


    Thanks



       Luis


-------------------------
Denis Nikitenko wrote:

> Hi Luis,
> 
> Thank you for the quick reply. I just hope my message wasn't _too_ detailed - I
> wanted to give a clear statement of my problem and hopefuly did not go overboard.
> 
> Now, to answer your questions:
> 
> 
>>1) How are you initializing the
>>    Transforms for the sub-images ?
>>    Are you using the results from the
>>    high level registration ?
> 
> 
> I use a TranslationTransform which is initialized to (0, 0) for every single
> sub-image pair.
> 
> 
>>2) Are you reusing the same instantiation
>>    of the optimizer object when you move
>>    to the smaller images ?
>>    or are you constructing and initializing
>>    a new one ?
> 
> 
> I'm constructing and initializing a new one every time.
>  
> 
>>3) Are you changing the Scaling factors
>>    of the optimizer as you move into the
>>    smaller images ?
> 
> 
> By scaling factors you mean the growth and shrink factors, right? In this case
> no, I don't change them. I have tried, but have not been able to come up with
> values that work. Also, when I changed them (by decreasing them), my maximum
> number of iterations changed (decreased) automatically, despite the fact that it
> was explicitly set to a larger value.
> 
> I have modified my code to display the intermideate parameters and will need to
> run a few examples to see what is going on. I will post my results soon. BTW,
> what do you mean by the value returned by the transform?
> 
> thanks,
> 
> Dennis
> 
> 
>>Could you please do the following:
>>
>>   Insert a std::cout at the end of the GetValue()
>>   method in the metric and print out both the
>>   array of current parameters and the value
>>   returned by the transform.
>>
>>   With the 1+1 optimizer, the Command/Observers will
>>   not show you the actual attempts for exploring the
>>   region. The will only report the best result found
>>   so far.
>>
>>   Adding the cout statement in the metric will help
>>   you see how far the optimizer is going and whether
>>   this is happening in the rotation parameters of the
>>   transform or in the translation ones.
>>
>>
>>
>>
>>Please let us know what you find.
>>
>>
>>   Thanks
>>
>>
>>
>>      Luis
> 
> _______________________________________________
> Insight-users mailing list
> Insight-users at itk.org
> http://www.itk.org/mailman/listinfo/insight-users
> 





More information about the Insight-users mailing list