[Insight-users] 3D rigid registration

Grace Chen Grace.Chen at swri.ca
Mon Jun 5 12:21:35 EDT 2006


Hi Robert,  Thanx for your input!

I follow the ITK example religiously too.....but I still get weird result
for some data sets.....since in the ITK software guide, the rigid 3D
registration section is under the section "Centered Transforms", I suppose
that we need to center the images (i.e. shifting the image so the coordinate
(0,0,0) lies in the middle of the image) to get more accurate result...And
that's what I did.  But it just occured to me that it might be a bug....
because it doesn't make sense to center both images....If I am correct....we
should center only one image (either one is ok), and apply the same shift to
the other image.

However, I need to confirm with ITK experts to make sure I am on the right
track!!

Grace



----- Original Message ----- 
From: "Atwood, Robert C" <r.atwood at imperial.ac.uk>
To: "Grace Chen" <Grace.Chen at swri.ca>; <insight-users at itk.org>
Sent: Monday, June 05, 2006 11:50 AM
Subject: RE: [Insight-users] 3D rigid registration


> Dear Grace:
>
> I have used the Centred Transform Initializer in some code that used
> VersoRigid3DTransform and it has given me the results I expected. Here
> are a few lines out of the code. If I am using it incorrectly I hope
> some one else will let me know before I get bad results.
>
>
> Don't forget to use the special optimizer for this transform.
>
> Hope it helps,
>
>
> Robert
>
>
>
>
>
> .....
>
> #include "itkCenteredTransformInitializer.h"
> #include "itkVersorRigid3DTransform.h"
> #include "itkVersorRigid3DTransformOptimizer.h"
>
> ......
>
>   //Transform, optimizer and metric used for the registration
>   typedef itk::VersorRigid3DTransform< double > TransformType;
>   typedef itk::VersorRigid3DTransformOptimizer  OptimizerType;
>
>  /* initializer, this automatically finds the centers of each image */
>   typedef itk::CenteredTransformInitializer< TransformType, ImageType,
> ImageType > TransformInitializerType;
>
>
> .....
>
>  TransformInitializerType::Pointer initializer =
> TransformInitializerType::New();
>
> .....
>
> // fshrinker and mshrinker are already Updated at this point
>
>
>           /* set up the defaults in any case */
>            initializer->SetTransform(   transform );
>            initializer->SetFixedImage(  fshrinker->GetOutput() );
>            initializer->SetMovingImage( mshrinker->GetOutput() );
>            initializer->MomentsOn();
>           /* this actually does the initialization using the above
> parameters */
>            initializer->InitializeTransform();
> -----Original Message-----
> From: insight-users-bounces+r.atwood=imperial.ac.uk at itk.org
> [mailto:insight-users-bounces+r.atwood=imperial.ac.uk at itk.org] On Behalf
> Of Grace Chen
> Sent: 05 June 2006 15:51
> To: insight-users at itk.org
> Subject: [Insight-users] 3D rigid registration
>
> Hi there,
>
> To use VersorRigid3DTransform for 3D rigid registration, should we
> center
> both of the input imgaes?  It seems wrong to center both images.....If
> we
> need to center just one image, which one, the fixed image or the moving
> image??
>
> Please help!  This part of using ITK can't seem to be found anywhere....
> Thanx!
>
> Grace
>
> _______________________________________________
> Insight-users mailing list
> Insight-users at itk.org
> http://www.itk.org/mailman/listinfo/insight-users
>



More information about the Insight-users mailing list