[ITK-users] how to visualise deformed volume along registration process

Jerome Plumat j.plumat at auckland.ac.nz
Tue Oct 14 21:42:19 EDT 2014


Hello everyone,
I'm facing to a problem and I hope some may have ideas to help me.

I'm using Multi Resolution Symmetric Log-Domain Diffeomorphic Demons 
Algorithm (http://www.insight-journal.org/browse/publication/644) to 
register volumes. The current results are not very good and I would like 
to observe them along the registration process.

My current solution uses object to display metrics and information along 
pyramid levels:

template <typename TRegistration>
class ShowProgressObject
{
public:
   ShowProgressLevelObject(TRegistration* o)
   {
     m_Process = o;
   }

   void ShowProgress()
   {
       std::cout << "Level: " << m_Process->GetCurrentLevel() << " ";
       std::cout << "Progress: " << m_Process->GetProgress() << "  ";
       std::cout << "Starting Metric: "   << 
m_Process->GetRegistrationFilter()->GetMetric()   << " ";
       std::cout << std::endl;

   }

   typename TRegistration::Pointer m_Process;
};

....

  typedef ShowProgressObject<RegistrationType> ProgressType;
   ProgressType  progressWatch(registrator);

   itk::SimpleMemberCommand<ProgressType>::Pointer command;
   command = itk::SimpleMemberCommand<ProgressType>::New();
   command->SetCallbackFunction(&progressWatch, 
&ProgressType::ShowProgress);


I would like to use this object to display the current deformed image at 
each level of the pyramid. My current (not so good) idea is to use fixed 
and moving images and current deformation field. I'm using warper to 
deform the moving image in the ShowProgressObject::ShowProgress function:
   warper->SetInput( m_originalMoving );
   warper->SetInterpolator( interpolator );
   warper->SetOutputSpacing( m_fixed->GetSpacing() );
   warper->SetOutputOrigin( m_fixed->GetOrigin() );
   warper->SetOutputDirection( m_fixed->GetDirection() );
   warper->SetDisplacementField( 
m_Process->GetRegistrationFilter()->GetDeformationField() );
   warper->Update();

Then the result would be display with QuickView.

But ... it appears that using fixed and moving images in this process 
makes them unavailable for the registration. I can make copies of them 
but this seems very inefficient.

Any recommendations or advices to achieve to display deformed image 
along process?

Thanks a lot.

-- 

Jerome
-------

School of Medical Sciences
University of Auckland

If I am not for myself, who will be for me? And if I am only for myself, then what an I? And if not now when? – Hillel HaZaken



More information about the Insight-users mailing list