[Insight-users] Re:Registration

Luis Ibanez luis . ibanez at kitware . com
Thu, 20 Nov 2003 15:14:30 -0500


Hi Srivalli,


 From your code, the only suspicious thing I can
see is that your translation terms are extremely
small :   10^-5.

A good rule of thumb is to use


              1.0 / ( 10 * length )


where

       length = numberOfPixels * pixelSpacing

along one the coordinate axis associated with
this optimizer scale.

Is there any chance that you could put
your PET and CT dataset available in some ftp site ?
or maybe put them in our incoming FTP site ?

I may be simpler for us try your data in a
Volview Plugin.


Thanks


   Luis


-----------------
CSPL wrote:
>  Dear Mr.Luis,
> 
>      I am initializing  CenteredAffineTransform using the
> CenterdTransformInitializer.
>  typedef
> 
> itk::CenteredTransformInitializer<TransformType,FixedImageType,MovingIm
> 
>  ageType >  TransformInitializerType;
> TransformInitializerType::Pointer initializer =
> 
> TransformInitializerType::New();
> initializer->SetTransform(   transform );
> initializer->SetFixedImage(  FixedImage );
> initializer->SetMovingImage( MovingImage );
> initializer->MomentsOn();
>  initializer->InitializeTransform();
> 
> I am defining the array of optimizerscales.
> 
>  NoofParams = transform->GetNumberOfParameters();
> 
> OptimizerType::Pointer optimizer = OptimizerType::New();
>  typedef OptimizerType::ScalesType    OptimizerScalesType;
> OptimizerScalesType optimizerScales( NoofParams );
> 
> 
> const double translationScale = 1.0 / 100000;
> optimizerScales.Fill( 1.0 );
>  for( int i = 0; i <= 11; i++ )
>  {
>   optimizerScales[ i ] =  1.0 ;
>  }
>  optimizerScales[ 9 ]  =  translationScale;
>  optimizerScales[ 10 ] =  translationScale;
>  optimizerScales[ 11 ] =  translationScale;
>  optimizerScales[ 12 ] =  translationScale;
>  optimizerScales[ 13 ] =  translationScale;
>  optimizerScales[ 14 ] =  translationScale;
> 
>  optimizer->SetScales( optimizerScales );
> 
> 
>  Please check the code snippet and can you tell me where i am going wrong.
> 
> 
>  Thanking you
>  Regards,
>  Srivalli.
>  ----- Original Message -----
> 
>>From: "Luis Ibanez" <luis . ibanez at kitware . com>
>>To: "CSPL" <affable at hd2 . dot . net . in>
>>Cc: <insight-users at itk . org>
>>Sent: Friday, November 14, 2003 11:24 AM
>>Subject: Re: [Insight-users] Re:Registration
>>
>>
>>
>>>Hi Srivalli,
>>>
>>>Since you are using the CenteredAffineTransform, please
>>>make sure that you initialize it by using the class:
>>>
>>>   CenteredTransformInitializer
>>>
>>>You will find examples on how to do this in the softwareguide
>>>
>>>    http://www . itk . org/ItkSoftwareGuide . pdf
>>>
>>>
>>>and the source code in
>>>
>>>    Insight/Examples/Registration
>>>
>>>Also, make sure that you define the array of optimizerScales.
>>>It is fundamental to scale the translation paramters with
>>>respect to the rotation (matrix components) parameters.
>>>You will also find examples about this in the SoftwareGuide.
>>>
>>>
>>>Regards,
>>>
>>>
>>>   Luis
>>>
>>>
>>>--------------
>>>CSPL wrote:
>>>
>>>>Dear Mr.Luis,
>>>>
>>>> ThankYou for your reply. I am enclosing the details about
>>>
> registration
> 
>>>>components.
>>>>
>>>>Transform : CenteredAffineTransform
>>>>Optimizer : RegularStepGradientDescentOptimizer
>>>>Metric :MattesMutualInformationImageToImageMetric
>>>>Interpolation :LinearInterpolateImageFunction
>>>>Registration Method : MultiResolutionImageRegistrationMethod
>>>>Pyramid : RecursiveMultiResolutionPyramidImageFilter
>>>>
>>>>
>>>>Regards,
>>>>SriValli.
>>>>Your reply:
>>>>Hi Srivalli,
>>>>
>>>>Here are some of the points to check
>>>>
>>>>
>>>>0) Make sure that the pixel spacing
>>>>    and origin of your image are correctly
>>>>    set in millimeters.
>>>>
>>>>
>>>>1) What registration components are you
>>>>    using  ?
>>>>
>>>>    - optimizer ?
>>>>    - metric    ?
>>>>    - transform ?
>>>>
>>>>
>>>>2) Connect an Observer to the optimizer
>>>>    and print out the metric value and
>>>>    the transform parameters as the registration
>>>>    progresses.
>>>>
>>>>3) Plot the Metric values versus the number
>>>>    of iterations and evaluate how noisy the
>>>>    metric is, and how much it is increasing.
>>>>
>>>>
>>>>The plots of Metric and transform parameters
>>>>versus number of iterations are the best
>>>>guidance for determining how to tune the
>>>>parameters of a registration method.
>>>>
>>>>Please provide more details about the components
>>>>you are combining.
>>>>
>>>>
>>>>Thanks
>>>>
>>>>
>>>>    Luis
>>>>
>>>>My question:
>>>>Dear Mr.Luis,
>>>>
>>>> I am working on medical image registration. I could get the single
>>>>modality image registration well.
>>>>But,Facing problems in MultiModalityRegistration.
>>>>In my application I have to register MR and SPECT volumes, MR as FIXED
>>>>and SPECT as MOVING.
>>>>Both MR and SPECT are PreProcessed.
>>>>MR is of size 256X256X120.
>>>>Brain is extracted from skull in MR volume and the extracted brain is
>>>>used as FIXED.
>>>>ITK Neighbourhoodconnected filter is used to extract object based on
>>>
> the
> 
>>>>given seed point and threshold range.
>>>>
>>>>SPECT is processed to make cubic voxels.
>>>>Procesed to find the minimum dimension of SPECT  and creates a new
>>>>volume with all  dimensions equal to minimum dimension.
>>>> Inititally SPECT is of size 128X128X49.After processing it will
>>>
> become
> 
>>>>128X128X96.Voxel Width, Voxel Height and Voxel Depth will be same.
>>>>
>>>>After preprocessing extracted brain and spect will be given as inputs
>>>>for registration.
>>>>
>>>>To view the output of registration, I am merging SPECT with original
>>>
> MR
> 
>>>>volume(includes both brain and skull) so that spect exactly fits in
>>>
> the
> 
>>>>brain part.
>>>>But, when I see the output spect is not positioning correctly.
>>>>Sometimes I see that  middle slices are ok but,failing at last slices.
>>>>I tried in many ways by chaning the parameters.
>>>>I feel that registration depends on fixed and moving images. Parameter
>>>>tuning can be succes only if input images are correct.
>>>>Can you please tell us what could be the reason to fail?
>>>>I am doubt whether I am  wrong in giving input images or in tuning
>>>>parameters.
>>>
>>>
>>>
>>>
> 
> _______________________________________________
> Insight-users mailing list
> Insight-users at itk . org
> http://www . itk . org/mailman/listinfo/insight-users
>