[IGSTK-Users] Question on setting different registratio n transform

jiafucang at 126.com jiafucang at 126.com
Sat Jan 13 00:34:54 EST 2007


 
Hi everyone,
 
I am doing point set registration using NeedleBiopsy app.
Firstly I use several pairs of image anatomical landmark point
and tracker point to solve a initial patient-to-tracker transform,
then I optimize the patient-to-tracker transform using pointset
registration. Then the optimized transform is set, but the needle
now point to the wrong position and orientation. Could anyone
give me any help?
 
For example,
The first landmark registration transform is
-0.238948 -0.78129 -0.57662 -205.239
0.969142 -0.228919 -0.0914341 -400.671
-0.0605626 -0.580674 0.81188 899.685
0 0 0 1 
The optimized transform based on the landmark transform is
0.995525 0.0148454 -0.0933302 6.01421
-0.0116983 0.999347 0.0341769 -2.07651
0.0937767 -0.0329322 0.995048 -3.67627
0 0 0 1
The final transform is composed of the transforms above
 typedef itk::Euler3DTransform< double >     ITKTransformType;
 ITKTransformType::Pointer transform = ITKTransformType::New();
 .... // Get the transform
 typedef TransformType::VersorType VersorType; //IGSTK rigid versor 3D transform
 VersorType myrot;
 myrot.Set(transform->GetMatrix());
 Transform rightTransform;
 rightTransform.SetTranslationAndRotation(transform->GetTranslation(),myrot,0.1,1e300);
 m_ICPTransform=igstk::Transform::TransformCompose(m_ImageToTrackerTransform,rightTransform);
 
-0.282812 -0.765338 -0.578166 -202.934
0.958908 -0.211371 -0.189255 -394.031
0.0226368 -0.607931 0.793667 897.542
0 0 0 1
 
I then can switch to the landmark transform or ICP transform
void NeedleBiopsy::RequestSetLandmarkRegistrationTransform()
{
 this->ICPRegistrationTransform->value(0);
 this->LandmarkRegistrationTransform->value(1);
 m_Tracker->SetPatientTransform( m_ImageToTrackerTransform );
}
void NeedleBiopsy::RequestSetICPRegistrationTransform()
{
 this->ICPRegistrationTransform->value(1);
 this->LandmarkRegistrationTransform->value(0);
 m_Tracker->SetPatientTransform( m_ICPTransform );
}
 
When I point to one anatomical point, use the landmark transform, it give out the coarse
right position and orientation. But when I switch to ICP transform, which give out weird position and orientation. For example, the point (27.7, 17.2, 21.0) in the landmark transform position
will become to (17.4,110.5,62.4) in the ICP transform, but when compute the position of this
point using ICP transform, it should be (31.9,19.5,19.3). 
 
Thank you very much!
 
Best,
Fucang
 
 
 
 
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/igstk-users/attachments/20070113/adf12e78/attachment-0001.html>


More information about the IGSTK-Users mailing list