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

asertyuio asertyuio at yahoo.fr
Tue Jan 17 08:30:31 EST 2012


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