[ITK-dev] V4 Registration having trouble converging while V3 works fine

sepideh movaghati sepideh.movaghati at gmail.com
Fri Sep 30 15:24:04 EDT 2016


Hi,



I was comparing v3 and v4 registration performance on a set of 3D images.
In few cases, I noticed that v4 registration is diverging while v3
converges to a reasonable result without any problem.
I wonder if you have ever noticed a problem with v4 optimizer that could
cause similar issues.


I copied my code for v3 and v4 registration below. I tried to keep the
registration configuration very similar in both versions. In v3 I set the
NumberOfSpatialSamples to 380000 which is about 10% of voxels. I also tried
with full sampling but the behavior stays the same.


In the attached csv file you can see the metric value at each iteration of
the optimizer for both v3 and v4 version. It is clear that v3 converges
smoothly, but v4 makes the initial metric value worse after too many
iterations.



Thanks a lot in advance.
Regards,
Sepide


auto interpolator = itk::LinearInterpolateImageFunction<ImageType,
double>::New();

auto transform = itk::AffineTransform<double>::New();

transform->SetIdentity();

itk::Array<double> scales;

scales.SetSize(12);

scales.Fill(1.0);

scales[9] =  0.001; //translation parameters scales

scales[10] =  0.001;

scales[11] =  0.001;



// Registration V3 ----------------------- :

    auto metric = itk::MattesMutualInformationImageToImageMetric<ImageType,
ImageType>::New();

    auto optimizer = itk::RegularStepGradientDescentOptimizer::New();

    auto registration = itk::ImageRegistrationMethod<ImageType,
ImageType>::New();



    int NumberOfSpatialSamples = 380000;



    metric->SetNumberOfSpatialSamples(NumberOfSpatialSamples);

    optimizer->SetScales(scales);

    registration->SetMetric(metric);

    registration->SetOptimizer(optimizer);

    registration->SetInterpolator(interpolator);

    registration->SetTransform(transform);

    registration->SetFixedImage(fixedImage);

    registration->SetMovingImage(movingImage);

    registration->SetFixedImageRegion(fixedImage->GetBufferedRegion());

    registration->SetInitialTransformParameters(transform->GetParameters());

    registration->Update();





// Registration V4 ----------------------- :

    auto metric = itk::MattesMutualInformationImageToImageMetricv4<ImageType,
ImageType>::New();

    auto optimizer = itk::RegularStepGradientDescentOptimizerv4::New();

    auto registration = itk::ImageRegistrationMethodv4<ImageType,
ImageType>::New();



    optimizer->SetScales(scales);

    optimizer->SetDoEstimateScales(false);

    optimizer->SetDoEstimateLearningRateAtEachIteration(false);

    optimizer->SetDoEstimateLearningRateOnce(false);

    optimizer->SetMetric(metric);



    registration->SetNumberOfLevels(1);

    registration->SetSmoothingSigmasPerLevel(0);

    registration->SetShrinkFactorsPerLevel(1);

    registration->SetMetricSamplingPercentagePerLevel(0.1);



    registration->SetMetric(metric);

    registration->SetOptimizer(optimizer);

    registration->SetFixedImage(fixedImage);

    registration->SetMovingImage(movingImage);

    registration->SetMetricSamplingStrategy(RegistrationType::REGULAR);

    registration->SetInitialTransform(transform);



    registration->Update();
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/insight-developers/attachments/20160930/6252c380/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: V3andV4Convergence.csv
Type: text/csv
Size: 6180 bytes
Desc: not available
URL: <http://public.kitware.com/pipermail/insight-developers/attachments/20160930/6252c380/attachment.csv>


More information about the Insight-developers mailing list