[Insight-users] Problem with BSplines-Registration and Mutual Information Metric

Luis Ibanez luis.ibanez at kitware.com
Sun Dec 21 20:20:04 EST 2008


Hi Carola,

It certainly looks like you need to fine tune the parameters of the
MutualInformation metric.

Could you tell us more about the images that your are registering ?

1) Image modality
2) Image size (in pixels along X, Y, Z )

Have you connected an observer to the optimizer ?

If so,

Could you please post to the list the output values of  Image metric values
at every iteration of the registration.

Also, one of the critical aspects of using MattesMI with a BSpline transform
is that you have to make sure that there are enough samples for population
*every* cell of the BSpline grid.

Are you using the same BSpline grid parameters of
DeformableRegistration8.cxx ?

---

You may want to try using all the samples from the image.

If you have turned ON the option ITK_USE_OPTIMIZED_REGISTRATION_METHODS,
you could use the API:

     metric->UseAllPixelsOn();


Please let us know about the questions above,


    Thanks


           Luis


-----------------------------------------------------------------------------------------------
On Fri, Dec 19, 2008 at 11:00 AM, Carola Schmidt <
carola.schmidt at igd.fraunhofer.de> wrote:

> Hi, itk users.
>
> I am implementing the BSpline Registration to register CT-Data of the
> abdomen. I use the LBFGSBOptimizer
> and use the parameters of the deformableRegistration8.cxx file
>
>   OptimizerType::BoundSelectionType
> boundSelect(transform->GetNumberOfParameters());
>   OptimizerType::BoundValueType
> upperBound(transform->GetNumberOfParameters());
>   OptimizerType::BoundValueType
> lowerBound(transform->GetNumberOfParameters());
>
>   boundSelect.Fill(0);
>   upperBound.Fill(0.0);
>   lowerBound.Fill(0.0);
>
>   optimizer->SetBoundSelection(boundSelect);
>   optimizer->SetUpperBound(upperBound);
>   optimizer->SetLowerBound(lowerBound);
>
>   optimizer->SetCostFunctionConvergenceFactor( 1e+7 );
>   optimizer->SetProjectedGradientTolerance( 1e-4 );
>   optimizer->SetMaximumNumberOfIterations( 500 );
>   optimizer->SetMaximumNumberOfEvaluations( 500 );
>   optimizer->SetMaximumNumberOfCorrections( 12 );
>
> As metrics I tried itkMeanSquaresImageToImageMetric and
> itkMattesMutualInformationImageToImageMetric. When I use the
> itkMeanSquaresImageToImageMetric the registration takes really long but the
> results are quite ok.
> When I use itkMattesMutualInformationImageToImageMetric the registration
> only takes a few seconds but most of the time the warped image looks like a
> hardly deformed moving image. Since the registration time is very short, it
> seems that the registration stops after a few steps and warps the image
> then. I use those parameters for the mututal information:
>
>   metric->SetNumberOfHistogramBins( 40 );
>   const unsigned int numberOfSamples = 10000;
> //fixedRegion.GetNumberOfPixels()/ 10;
>   metric->SetNumberOfSpatialSamples( numberOfSamples );
>   metric->ReinitializeSeed( 76926294 );
>   metric->SetMovingImage(m_itkimage);
>   metric->SetFixedImage(m_itkatlas);
>   metric->SetFixedImageRegion(fixedRegion);
>
> Why does the Mutual Information Metric not work as expected? Should I
> change the parameters of the optimizer?
> Thanks for an answer.
>
> Ciao,
> Carola
> _______________________________________________
> Insight-users mailing list
> Insight-users at itk.org
> http://www.itk.org/mailman/listinfo/insight-users
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.itk.org/pipermail/insight-users/attachments/20081221/6244f0b3/attachment.htm>


More information about the Insight-users mailing list