[Insight-users] ITK 4.0 migration problem with Amoeba optimizer and kappa metrics

asertyuio asertyuio at yahoo.fr
Tue Jan 24 07:48:28 EST 2012


Hi ziv,

After running some tests, the problem comes from the metric 
(KappaStatistic).
When I try to get the metric value with metric->GetValue(parameters);  , 
-1.#IND is returned.
I dont know how Amoeba can still converge, but he does.

Yann

> Hi Ziv,
>
> Sorry for the delay, you were in my spam box...
> Here is a zip file containing what you asked for.
>
> The "test" file still use images for parameters, so I let code lines 
> to handle it, I hope this will be ok for you.
> If not, just tell !
> All is written in the readme file.
>
> thanks again !
>
> Yann
>
> PS: I made a mistake, I'm using the kappa metric...
>
>
> Le 20/01/2012 21:55, Ziv Yaniv a écrit :
>> Dear Yann,
>>
>> Can you replicate the problem in a small program? Something similar 
>> to itkAmoebaOptimizerTest.cxx (Modules\Numerics\Optimizers\test).
>>
>> When I run this test and look at the reason the optimizer stops 
>> (GetStopConditionDescription()) it does terminate before reaching the 
>> maximum number of iterations.
>>
>>                                 regards
>>                                              Ziv
>>
>> On 1/20/2012 12:50 PM, asertyuio wrote:
>>> Thanks for ansering !
>>>
>>> I haven't found any solution to my problem. Itk code seems to be the 
>>> problem.
>>> I can give my source and images if needed !
>>>
>>> Yann
>>>
>>>
>>> Le 18/01/2012 21:46, Cory Quammen a écrit :
>>>> Yann,
>>>>
>>>> Ziv Yaniv did a lot of refactoring of this class for the ITK 4.0
>>>> effort. Ziv, can you comment?
>>>>
>>>> - Cory
>>>>
>>>> On Tue, Jan 17, 2012 at 8:30 AM, asertyuio<asertyuio at yahoo.fr>  wrote:
>>>>> Hi all,
>>>>>
>>>>>     I'm migrating from ITK 3.2 to ITK 4.0, and after fixing some 
>>>>> litle
>>>>> trouble around cmake, I'm on something that seems more problematic.
>>>>> I write for ITK 3.2 a registration process, that was, for part of 
>>>>> it, using
>>>>> Amoeba optimizer, and cardinal matching metric.
>>>>> It worked perfectly.
>>>>> After migrating to ITK 4.0, Amoeba optimizer seems to stop only at 
>>>>> the
>>>>> maximum iteration number, and do not take account of other stop 
>>>>> conditions,
>>>>> like ParametersConvergenceTolerance or FunctionConvergenceTolerance.
>>>>> The optimizer is still converging on a good solution.
>>>>> An other thing that seems to be related, is that when I'm printing 
>>>>> the
>>>>> registration progress,
>>>>> the metric value is shown as -1.#IND, so Not A Number. I get this 
>>>>> value with
>>>>> the following code :
>>>>>
>>>>>     itk::SingleValuedCostFunction::MeasureType Value;
>>>>>
>>>>>     Value = optimizer->GetCachedValue();
>>>>>
>>>>>
>>>>>     if (Value!=Value){
>>>>>         std::cout<<  "ok";
>>>>>     }
>>>>>     if (count>=5) {
>>>>>         count=0;
>>>>>         std::cout<<  IterationNumber<<  "   ";
>>>>>         std::cout<<  Value<<  "   ";
>>>>>         std::cout<<  parameters<<  std::endl;
>>>>>     }
>>>>>
>>>>> I've try to set Value as double, to print directly
>>>>> optimizer->GetCachedValue() but it's giving the same result.
>>>>>
>>>>> Does someone have any idea of where it comes from ?
>>>>>
>>>>> In my code, I also use OnePlusOneEvolutionaryOptimizer, and MI metric
>>>>> without these problems.
>>>>>
>>>>> Thanks a lot !
>>>>>
>>>>> Yann


More information about the Insight-users mailing list