[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