Bspline Converging too fast

Hello,

I am performing a two-stage registration, being the last stage a deformable one.
The deformable stage uses the itkLBFGSBOptimizerv4.h optimizer.

The deformable stage is converging too fast and certainly with not a good solution.
Those are the tuning parameters:

  doptimizer->SetScalesEstimator(scalesEstimator);
  doptimizer->SetSolutionAccuracy(1e-4);
  doptimizer->SetHessianApproximationAccuracy(5);
  doptimizer->SetMaximumIterations(100);
  doptimizer->SetMaximumLineSearchEvaluations(10);

Any suggestion on which parameter I should try modifications?

Also, is it a good idea to use the scales estimator for that optimizer?

Thanks.

Hello @machadoL,

For the BSpline transform: (1) you don’t need the scales estimator as all parameters are commensurate (translations of the BSpline control points) it doesn’t hurt so you can leave it there or remove (2) the size and location of your grid are very important.

If you are automatically positioning the grid on a subregion of the image, if that region is just empty air things won’t work out as expected. Also, if the initialization (previous registration step) isn’t that great you may be mapping points outside the image, once the overlap isn’t there all of the following registration steps will fail.

1 Like

You may also try higher-level ITK-based registration frameworks, which come with readily usable parameter sets that do not require manual tuning.

For example, Elastix default0 parameter set works surprisingly well for any reasonable inputs. The only non-obvious prerequisite is that the fixed and moving images must be cropped to approximately the same region. There are also dozens of other specialized parameter sets (which did not work so well for me - but I did not use them on exactly the same problems as they were developed for).

2 Likes