Dear list,

Recently I struggled by importing an ITK-ImageSpatial-Object to render it in 
MITK. In ITK I use the itk::ImageSpatialObject to apply tracking-coordinates 
(translation and rotation) to slices. Than I want to display the slices as a 
3D-Volume by using an interpolation-method (i.E. a LinearInterpolator). But I 
have no idea how to import itk::ImageSpatialObjects in MITK. Can I do the hole 
process in MITK directly?
Here is my code for the ImageSpatialObject:

VolumeSpatialObjectType::Pointer imageSO = VolumeSpatialObjectType::New();      
        //Spatial-Slice
                VolumeSpatialObjectType::Pointer volumeSO = 
VolumeSpatialObjectType::New();         //Spatial-Volume

//Set spacing
const double[3] spacing;
                spacing[0] = 1;
                spacing[1] = 1;
                spacing[2] = 1;
                volumeSO->SetSpacing(spacing);

                queueMutex.Lock();
                //Get the Image-Queue (std::deque)
                m_ImageStack = m_QueueManager->GetImageQueue();  

                // Get the Tracking-Data-Queue (std::deque)
                m_TrackingDataStack = m_QueueManager->GetTrackingQueue();  
                queueMutex.Unlock();

                //iterate through the queue and stack the images to a  3D-Volume
// VolumeType is defined as itk::image<unsigned char, 3>

                deque<VolumeType::Pointer>::iterator queueIter = 
m_ImageStack.begin();
                deque<mitk::NavigationData::Pointer>::iterator trackingIter = 
m_TrackingDataStack.begin();

                for(; queueIter != m_ImageStack.end(); ++queueIter, 
++trackingIter){

                        //Set Spatial-Object-Offset
                        imageSO->SetImage(*queueIter); //Set slice 

volumeSO->AddSpatialObject(imageSO); //add a slice to the volume

//Set the offset for the current slice
                        TransformType::OffsetType translationSO;
                        trackingData = *trackingIter;
                        translationSO[0] = m_TrackedData->GetPosition()[0];
                        translationSO[1] = m_TrackedData->GetPosition()[1];
                        translationSO[2] = m_TrackedData->GetPosition()[2];
                        
imageSO->GetIndexToObjectTransform()->SetOffset(translationSO);
                        imageSO->ObjectToParentTransform();
                        
                }

//ImageSpatialObject-Volume with transformed slices
volumeSO->ComputeObjectToWorldTransform();

Regards!

Matthias Mucha

-- 
GRATIS für alle GMX-Mitglieder: Die maxdome Movie-FLAT!
Jetzt freischalten unter http://portal.gmx.net/de/go/maxdome01

------------------------------------------------------------------------------

_______________________________________________
mitk-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/mitk-users

Reply via email to