[Insight-users] Error using Registration - Mutual Information + AffineTransform

sharath v sharath20284 at yahoo.com
Wed Jun 24 12:18:16 EDT 2009


Hi Luis,


Thanks for the reply.

I have already done the task that you have mentioned. I studied the example ImageRegistration9.cxx, and it worked for me with RTS images (from BrianProtonDensity set).

Below are the set of things I added to ImageRegistration9.cxx for Mutual Information + Affine

-  changed the metric from MeanSquare to Mutual Information, and set the required parameters
-  changed RegularStepGradientDescentOptimizer to GradientDescentOptimizer (as said in example 2)
-  enabled optimizer->MaximizeOn() 
-  started with a low value of learning rate (5.0) as it gave an exception when 15.0 was used.
-  used NormalizeImageFilter and DiscreteGaussianImageFilter on both the images as in example 2
-  used CenteredTransformInitializer as explained in the manual

- And as you have mentioned I have used the Parameter scaling i.e optimizer->SetScales( optimizerScales ) with translation scale value = 0.001
  
** I got an exception when I tried to give the output of fixedSmoother and movingSmoother (from Example 2) to the initializer code below.

initializer->SetFixedImage( fixedImageReader->GetOutput() );
initializer->SetMovingImage( movingImageReader->GetOutput() );

Hence I retained it to the outputs from fixedImageReader and movingImageReader, as in the code snippet above. *****PLEASE LET ME KNOW IF THIS IS CORRECT ?

If I removed the Normalizing and Smoothing filters, I got an exception that the standard deviation of the metric is very low. It works when sigma = 1.5, but the output is wrong . Hence I retained these filters, with sigma = 0.4.

I followed your reply at a thread at nabble.com to download the imageregistration.exe and tried to overlay the output of the initializer (moving image warped with the initializer params) and this step is correct for BrainProtonDensitySliceShifted13x17y.png .

My current code fails for both BrainProtonDensitySliceShifted13x17y.png image and BrainProtonDensitySliceR10X13Y17.png image. It gives correct values for translation, but fails for rotation angle, and in both cases, gives high value for scaling ( Sx = ~4 and Sy= ~2) which are completely wrong.

I also tried working with MultiResImageRegistration2.cxx code which uses Matte + Affine. The output parameters obtained were WRONG when I tried with BrainProtonDensitySliceR10X13Y17.png image, instead of the example mentioned in the code.

I also tried with other optimizers such as Amoeba and OnePlusOne optimizers, with Viola MI + Affine. For Amoeba, the code gives correct result for translation for BrainProtonDensitySliceShifted13x17y.png only if the Parameter scaling is DISABLED. In other cases, the affine angle obtained starts with -83 degrees (where the expected value is R  = 10 ) i.e in few cases code runs to completion, but the answer is wrong OR exception occurs, that sampled point mapped  to outside of the moving image.

I am totally confused with the results . I have planned to use Mutual Information registration from ITK for non-medical images. 

Can you please give me pointers, where I might be going wrong?

Thanks for the help,

Sharath Venkatesha







________________________________
From: Luis Ibanez <luis.ibanez at kitware.com>
To: sharath v <sharath20284 at yahoo.com>
Cc: insight-users at itk.org
Sent: Tuesday, June 23, 2009 9:21:42 PM
Subject: Re: [Insight-users] Error using Registration - Mutual Information +  AffineTransform


Hi Sharath,

If you are interested in Affine registration you should probably 
start with ImageRegistration9.cxx instead of modifying 
ImageRegisration2.cxx.

In particular, you are probably missing to set up the 
ParameterScaling array, which is critical for normalizing the
dynamic range of the different Transform parameters.

This was not critical for the case of the Translation Transform,
but it becomes very important in Rigid and Affine transforms.


Please study the ImageRegistration9.cxx example and 
let us know if you have any questions.


       Thanks


             Luis


----------------------------------------------------

On Tue, Jun 23, 2009 at 7:44 PM, sharath v <sharath20284 at yahoo.com> wrote:


>>Hi,
>
>>I am trying to run example ImageRegistration2 with Affine Transform. This example uses originally used Mutual Information based registration with Translation.
>
>>I extended by using AffineTransform, and used the  CenteredTransformInitializer for initialization ( according to example ImageRegistration9, which uses Affine with MeanSquares optimizer)
>
>>But, I do run into errors.
>
>>For the CenteredTransformInitializer, I use the following piece of code
>
>>typedef itk::CenteredTransformInitializer< TransformType,  FixedImageType,  MovingImageType >  TransformInitializerType;
>>    TransformInitializerType::Pointer initializer = TransformInitializerType::New();
>>    initializer->SetTransform(   transform );
>>    initializer->SetFixedImage(  fixedImageReader->GetOutput() ); //*******
>>    initializer->SetMovingImage( movingImageReader->GetOutput() ); //*******
>>    initializer->MomentsOn();
>
>>    initializer->InitializeTransform();
>>    registration->SetInitialTransformParameters(transform->GetParameters() );
>
>>The program runs into completion, but gives WRONG values for scale and rotation parameters. The translation parameters obtained are correct.
>
>>If I change the starred lines (above in the code) to the take the output of the  fixedSmoother and movingSmoother respectively ( which I think is correct, as they are output of the smoothing function in example2) , I get an exception
>
>>***** Description: itk::ERROR: MutualInformationImageToImageMetric(012D3058): All the sampled point mapped  to outside of the moving image
>
>>I have tried the same with Mattes Mutual Information example, to get the same exception.
>
>>I have also used the appropriate scale setting code as in example 9.
>
>
>
>>Thanks in advance for the help,
>
>>Sharath Venkatesha
>
>
>
>
>>_____________________________________
>>Powered by www.kitware.com
>
>>Visit other Kitware open-source projects at
>http://www.kitware.com/opensource/opensource.html
>
>>Please keep messages on-topic and check the ITK FAQ at: http://www.itk.org/Wiki/ITK_FAQ
>
>>Follow this link to subscribe/unsubscribe:
>http://www.itk.org/mailman/listinfo/insight-users
>


      
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.itk.org/pipermail/insight-users/attachments/20090624/880ca914/attachment.htm>


More information about the Insight-users mailing list