Orientation Registration

From IGSTK

Jump to: navigation, search

Contents

Requirement

  • Vertebroplasty application introduction
    • Vertebroplasty is a minimally invasive therapy used to strengthen a fractured vertebra by the injection of bone cement into the vertebral body.
    • Due to its dramatics long-term pain relief and low complication rata, this therapy has been widely used in the United States. (Vertebroplasty in the United States: Guidance Method and Provider Distribution, 2001-2003)
    • Fluoroscopy is nearly universal guidance method for vertebroplasty.
    • EM tracking is a novel method for vertebroplasty. Several preliminary experiments have been down and the result show EM tracking can navigate vertebroplasty.
  • Workflow for EM tracking system navigate Vertebroplasty
  1. Implant two needles into phantom model, near the spine bone area;
  2. Acquire the Dyna CT scans image with the sticking needles;
  3. The phantom is transferred to the intervention suite;
  4. The needles’ positions are picked from image and the positions of sensors are recorded from AURORA tracking system;
  5. The registration was performed with the orientation information;
  6. The tracking vertebroplasty needle is attached to perform the navigation.

Orientation registration

  • Workflow
  1. Click the tip point and another middle point in the image of needles;
  2. Calculate the tip and the second point’s positions, and the second point has a fixed distance to the tip;
  3. Record the sensor’s position with orientation;
  4. Calculate the tip and the second point’s position with the fixed offset;Input these four points to the point-pair registration route.
  • Implementation with IGSTK
  1. State machine
    State machine graph
    State machine graph
    • Add new state
     AddingImageNeedleTipPointProcessing()
     AddingImageNeedleOffsetPointProcessing()
    • Add new input
     RequestAddImageNeedleTipPointInput()
     RequestAddImageNeedleOffsetPointInput()
//Calculate the second point on the needle in image space.
//p is any middle point on the needle in image space.
//m_FixedOffset a constant is given as 15mm.
d[0] = p[0] - m_ImageNeedlePointContainer.front()[0];
d[1] = p[1] - m_ImageNeedlePointContainer.front()[1];
d[2] = p[2] - m_ImageNeedlePointContainer.front()[2];
double dis = sqrt(d[0] * d[0] + d[1] * d[1] + d[2] * d[2]);
p[0] = m_ImageNeedlePointContainer.front()[0] + m_FixedOffset * d[0] / dis;
p[1] = m_ImageNeedlePointContainer.front()[1] + m_FixedOffset * d[1] / dis;
p[2] = m_ImageNeedlePointContainer.front()[2] + m_FixedOffset * d[2] / dis;
m_ImageNeedlePointContainer.push_back( p );
//Calculate the second point on the needle in EM tracking space.
m_Tracker->GetToolTransform( Tool1Port->value(), 0, m_Tracker1TransformToBeSet ); 	
p1[0] = m_Tracker1TransformToBeSet.GetTranslation()[0];
p1[1] = m_Tracker1TransformToBeSet.GetTranslation()[1];
p1[2] = m_Tracker1TransformToBeSet.GetTranslation()[2];
m_TrackerLandmarksContainer.push_back( p1 );
p2[0] = 0; 
p2[1] = 0; 
p2[2] = m_FixedOffset;
p2 = m_Tracker1TransformToBeSet.GetRotation().Transform( p2 );
p2 += m_Tracker1TransformToBeSet.GetTranslation();
m_TrackerLandmarksContainer.push_back( p2 );
  • 4 Landmark Registration. Call landmark class to implement the registration.
  • Experiment
    • Registration error is around 0.5mm.

Dynamic reference

  • Assumption
    • Assume the two needles are rigidly attached. The transform between the two needles are fixed.
  • Motivation
    • No matter how accuracy the registration algorithm is. The error caused by patient’s movement still can not be eliminated. For the rigid target such as spine, skull and teeth, dynamic reference is performing solution. It can track the patient’s movement and map the movement to tracker tools. As a result, patient’s movement will be eliminated.
  • Workflow
  1. Insert two needles into the phantom.
  2. Click the tip point and another middle point in the image of needles;
  3. Calculate the tip and the second point’s positions, and the second point has a fixed distance to the tip;
  4. Initialize the Aurora system. Track the two needles separately and Record the two 5D sensor’s transform; (At this time, without registration and reference process we can get these tools’ raw transform). Calculate the tip and the second point’s position with the fixed offset;
  5. Reinitialize the Aurora system. Load virtual SROM file to the port that two needles are plugged and Record the new 6D sensor’s transform
  6. Set reference to Tracker tool. Set the new 6D sensor as reference tool and map the two sensor’s transform recorded in step 3 to this new reference.
  7. Registration. Input these four points to the point-pair registration route and calculate the patient transform.
  8. Start tracking. The tracker class will map the tool to the new reference coordination automatically.
  • Implementation
    Dynamic reference
    Dynamic reference
  1. GUI
  2. State machine
    • Add new state
     AttemptingReinitializeTrackerState()
     AttemptingSetReferencestate()
    • Add new input
     RequestReinitializeTrackerInput()
     ReinitializeTrackerFailureInput()
     ReinitializeTrackerSuccessInput()
     RequestSetReferenceInput()
     SetReferenceFailureInput()
     SetReferenceSuccessInput()
  • 3 Reinitialize the Aurora system. Once we initialize the system, Aurora system will keep tracking state. So before reinitialize the system, we have to stop Aurora system.
m_Tracker->RequestStopTracking();	  
m_Tracker->RequestClose();
m_SerialCommunication->CloseCommunication();		
// Attached the srom file to port.
m_Tracker->AttachSROMFileNameToPort( ReferenceTool1Port->value(),ReferenceTool1SROMFile->value() );
  • 4 Add GetToolRawTransform function to Tracker class.
void Tracker::GetToolRawTransform( unsigned int portNumber,
                               unsigned int toolNumber,
                               TransformType &transitions ) const
  • 5 Map the entire tool’s transform get in step3 to reference space and then register.
m_Tracker->RequestUpdateStatus();
m_Tracker->GetToolRawTransform( ReferenceTool1Port->value(), 0, ReferenceToolTransform);
// ReferenceTracker1TransformToBeSet is tool one's initialize transform
m_ReferenceTracker1TransformToBeSet = igstk::Transform::TransformCompose( ReferenceToolTransform.GetInverse(),
m_ReferenceTracker1TransformToBeSet );
LandmarkPointType p1, p2;
p1[0] = m_ReferenceTracker1TransformToBeSet.GetTranslation()[0];
p1[1] = m_ReferenceTracker1TransformToBeSet.GetTranslation()[1];
p1[2] = m_ReferenceTracker1TransformToBeSet.GetTranslation()[2];
p2[0] = 0;
p2[1] = 0; 
p2[2] = m_FixedOffset;
p2 = m_ReferenceTracker1TransformToBeSet.GetRotation().Transform( p2 );
p2 += m_ReferenceTracker1TransformToBeSet.GetTranslation()
  • Experiment and Discussion
    • Registration error is around 0.3 mm.
    • How to design an experiment to evaluate the target tracking error.

Multi-DOFs dynamic reference

  • Motivation
    • Actually, dynamic reference still can be used to reduce the error in the situation that the reference object is soft tissue. For instant, when we want to position a needle in specific local area. Reference needle can be inserted into that area and track soft tissue’s movement. Update the reference needles’ transform and calculate the affine transform between the initial and the update transform. The affine transform can be used to reduce the error. The feasibility of this approach has been validated. “Two-stage registration for real-time deformable compensation using an electromagnetic tracking device.”
  • Workflow
  1. Insert three needles into the phantom.The 3D affine transform has 12 parameters, and we need 6 points to identify these parameter. As a result, three needles are required.
  2. Click the tip point and another middle point in the image of needles; Segmentation the needle from the image.
  3. Calculate the tip and the second point’s positions, and the second point has a fixed distance to the tip;
  4. Track the there needles separately and Record their transform; Calculate the tip and the second point’s position with the fixed offset;
  5. Registration. Input these six points to the point-pair registration route.
  6. Calculate the affine transform. Update tracker class to get the latest transform. By using of ICP registration algorithm, we can calculate the affine transform between update and initialize reference transform in short time.
  7. Set the affine transform as reference tool and map the tool to this reference coordination.
  • Implementation
  1. State machine
  2. The algorithm to construct a 6D tool with three 5DOF sensor.
  3. Based on ICP registration algorithm, we can calculate the affine transform in realtime
  4. Define UserTools in tracker class. The UserTools is Virtual tool.
  5. Set the Usertools as the reference tool.
  • Discussion
Personal tools
TOOLBOX
LANGUAGES