[Insight-users] questions about affine transform & CenteredTransformInitializer

Rick Shilling rickshilling at yahoo.com
Fri Jun 16 11:50:43 EDT 2006


I wanted to verify that the VersorRigid3DTransform object returned from CenteredTransformInitializer methods is consistent between matrix, center, translation and offset.  
If:
A   =rotation matrix
x0  =center of rotation
T    =translation
O   =Offset

then I would expect for a VersorRigid3DTransform:
A(x-x0)+T=Ax+O
thus,
O=T-Ax0

Without making method changes to the transform object, results show that after calling:
...
typedef itk::CenteredTransformInitializer< TransformType, ImageType, ImageType >  TransformInitializerType;
TransformInitializerType::Pointer initializer = TransformInitializerType::New();
initializer->SetTransform(   transform );
initializer->SetFixedImage(  importFixedFilter->GetOutput() );
initializer->SetMovingImage( importMovingFilter->GetOutput() );
initializer->MomentsOn();
initializer->InitializeTransform();
std::cout <<transform->GetRotationMatrix();
std::cout <<transform->GetCenter();
std::cout <<transform->GetTranslation();
std::cout <<transform->GetOffset();
...

O~=T-Ax0

Since the itk::transform shows inconsistent data members, how is one of the possible  two transforms used for registration?  Or is my modeling of
A(x-x0)+T=Ax+O incorrect?  Thanks.

Rick

 		
---------------------------------
How low will we go? Check out Yahoo! Messenger’s low  PC-to-Phone call rates.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://public.kitware.com/pipermail/insight-users/attachments/20060616/49338095/attachment.html


More information about the Insight-users mailing list