Difference between revisions of "MITK DiffusionImage Replacement Guide"

From mitk.org
Jump to navigation Jump to search
Line 16: Line 16:
 
   // cast node
 
   // cast node
 
   DiffusionImageType* mitkDiffusionImagePointer= static_cast<DiffusionImageType*>(node->GetData());
 
   DiffusionImageType* mitkDiffusionImagePointer= static_cast<DiffusionImageType*>(node->GetData());
 +
 +
  // create new vector image data
 +
  mitkDiffusionImagePointer->SetVectorImage( filter-GetOutput() );
  
 
   // get gradient directions
 
   // get gradient directions
Line 21: Line 24:
  
 
   // get reference b value
 
   // get reference b value
   mitkDiffusionImagePointer->GetReferenceBValue()
+
   mitkDiffusionImagePointer->GetReferenceBValue();
 +
 
 +
  // get b value map
 +
  mitkDiffusionImagePointer->GetBValueMap();
  
 
   // get the vector image data
 
   // get the vector image data
   mitkDiffusionImagePointer->GetVectorImage()
+
   mitkDiffusionImagePointer->GetVectorImage();
 +
 
 +
  // initialize image from contained data
 +
  mitkDiffusionImagePointer->InitializeFromVectorImage();
 +
 +
  // add node to datastorage
 +
 
 +
  // check whether something is a diffusion image
 +
  if ( mitkDiffusionImagePointer.IsNotNull() )
 +
 
 
</nowiki></pre>
 
</nowiki></pre>
  
Line 37: Line 52:
 
   // cast node
 
   // cast node
 
   mitk::Image* mitkImagePointer = static_cast<mitk::Image*>(node->GetData());
 
   mitk::Image* mitkImagePointer = static_cast<mitk::Image*>(node->GetData());
 +
 +
  // create new vector image data
 +
  mitk::Image::Pointer mitkImagePointer = mitk::ImportItkImage( filter->GetOutput() );
  
 
   // get gradient directions
 
   // get gradient directions
Line 42: Line 60:
  
 
   // get reference b value
 
   // get reference b value
   static_cast<mitk::FloatProperty*>(mitkImagePointer->GetProperty("ReferenceBValue").GetPointer() )->GetValue()
+
   static_cast<mitk::FloatProperty*>(mitkImagePointer->GetProperty("ReferenceBValue").GetPointer() )->GetValue();
 +
 
 +
  // get b value map
 +
  static_cast<mitk::BValueMapProperty*>(mitkImagePointer->GetProperty("BValueMap").GetPointer() )->GetBValueMap();
  
 
   // get the vector image data
 
   // get the vector image data
 
   ITKDiffusionImageType::Pointer itkVectorImagePointer = ITKDiffusionImageType::New();
 
   ITKDiffusionImageType::Pointer itkVectorImagePointer = ITKDiffusionImageType::New();
 
   mitk::CastToItkVectorImage(mitkImagePointer, itkVectorImagePointer);
 
   mitk::CastToItkVectorImage(mitkImagePointer, itkVectorImagePointer);
 +
 +
  // initialize image from contained data
 +
  mitkImagePointer->InitializeByItk( itkVectorImagePointer.GetPointer() );
 +
 +
  // add node to datastorage
 +
  imageNode->SetProperty( "DiffusionWeightedImage", mitk::BoolProperty::New( true ) );
 +
 +
  // check whether something is a diffusion image
 +
  if( imageNode->GetBoolProperty( "DiffusionWeightedImage" ) )
 
</nowiki></pre>
 
</nowiki></pre>

Revision as of 16:54, 7 August 2014

MITK Diffusion Image Replacement Guide

We have decided to remove the MITK::DiffusionImage and instead represent diffusion weighted images by mitk::Image pointing to an itk::VectorImage . This is mainly due to the fact, that there is no longer a reason to use separate classes and unifying the image reduces the maintenance cost.

What to replace

When adjusting your code to use the new data type you will have to replace the some calls, mitkDiffusionImagePointer is a MITK::DiffusionImage::Pointer, mitkImagePointer is the MITK::Image::Pointer containing the same data.

Old code

#!highlight c++
  typedef mitk::DiffusionImage<DiffusionPixelType> DiffusionImageType;
  typedef DiffusionImageType::GradientDirectionContainerType GradientDirectionContainerType;

  // cast node
  DiffusionImageType* mitkDiffusionImagePointer= static_cast<DiffusionImageType*>(node->GetData());

  // create new vector image data
  mitkDiffusionImagePointer->SetVectorImage( filter-GetOutput() );

  // get gradient directions
  mitkDiffusionImagePointer->GetDirections();

  // get reference b value
  mitkDiffusionImagePointer->GetReferenceBValue();

  // get b value map
  mitkDiffusionImagePointer->GetBValueMap();

  // get the vector image data
  mitkDiffusionImagePointer->GetVectorImage();

  // initialize image from contained data
  mitkDiffusionImagePointer->InitializeFromVectorImage();
 
  // add node to datastorage

  // check whether something is a diffusion image
  if ( mitkDiffusionImagePointer.IsNotNull() )


New Code

#!highlight c++
  typedef itk::VectorImage<DiffusionPixelType, dimension> ITKDiffusionImageType;
  typedef mitk::GradientDirectionsProperty::GradientDirectionsContainerType GradientDirectionContainerType;

  // cast node
  mitk::Image* mitkImagePointer = static_cast<mitk::Image*>(node->GetData());

  // create new vector image data
  mitk::Image::Pointer mitkImagePointer = mitk::ImportItkImage( filter->GetOutput() );

  // get gradient directions
  static_cast<mitk::GradientDirectionsProperty*>( mitkImagePointer->GetProperty("GradientDirections").GetPointer() )->GetGradientDirectionsContainer();

  // get reference b value
  static_cast<mitk::FloatProperty*>(mitkImagePointer->GetProperty("ReferenceBValue").GetPointer() )->GetValue();

  // get b value map
  static_cast<mitk::BValueMapProperty*>(mitkImagePointer->GetProperty("BValueMap").GetPointer() )->GetBValueMap();

  // get the vector image data
  ITKDiffusionImageType::Pointer itkVectorImagePointer = ITKDiffusionImageType::New();
  mitk::CastToItkVectorImage(mitkImagePointer, itkVectorImagePointer);

  // initialize image from contained data
  mitkImagePointer->InitializeByItk( itkVectorImagePointer.GetPointer() );

  // add node to datastorage
  imageNode->SetProperty( "DiffusionWeightedImage", mitk::BoolProperty::New( true ) );

  // check whether something is a diffusion image
  if( imageNode->GetBoolProperty( "DiffusionWeightedImage" ) )