[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