]> Creatis software - clitk.git/blobdiff - common/vvImage.txx
put MemoryInfo in mebibytes and not megabytes
[clitk.git] / common / vvImage.txx
index 1561a13d447a52256d0f02c02b323a63a4aeffe3..06f44af400ef2d75dc0bb12936ed80289672d84f 100755 (executable)
@@ -4,29 +4,30 @@
 template<class TItkImageType>
 void vvImage::AddItkImage(TItkImageType *input)
 {
+  // Convert from ITK object to VTK object
   mImageDimension = TItkImageType::ImageDimension; 
   typedef itk::ImageToVTKImageFilter <TItkImageType> ConverterType;
   typename ConverterType::Pointer converter = ConverterType::New();
+  mItkToVtkConverters.push_back(dynamic_cast< itk::ProcessObject *>(converter.GetPointer()));
   converter->SetInput(input);
+  converter->Update();
+  mVtkImages.push_back( converter->GetOutput() );
+  
+  // Account for direction in transform. The offset is already accounted for
+  // in the VTK image coordinates, no need to put it in the transform.
+  for(unsigned int j=0; j<input->GetImageDimension(); j++)
+    for(unsigned int i=0; i<input->GetImageDimension(); i++)
+      mTransform->GetMatrix()->SetElement(i,j, input->GetDirection()[i][j]);
 
-  try {
-      converter->Update();
-  }
-  catch ( itk::ExceptionObject & err ) {
-      std::cerr << "Error while setting vvImage from ITK"
-                << " " << err << std::endl;
-  }
-  mItkToVtkConverters.push_back(dynamic_cast< itk::ProcessObject *>(converter.GetPointer()));
-  mVtkImages.push_back(converter->GetOutput());
-  //mVtkImageReslice.push_back(vtkSmartPointer<vtkImageReslice>::New());
-  //mVtkImageReslice.back()->SetInterpolationModeToLinear();
-  //mVtkImageReslice.back()->AutoCropOutputOn();
-  //mVtkImageReslice.back()->SetBackgroundColor(-1000,-1000,-1000,1);
-  //mVtkImageReslice.back()->SetResliceTransform(mTransform);
-  //mVtkImageReslice.back()->SetInput(0, image);
-  //mVtkImageReslice.back()->Update();
-  //mVtkImages.push_back( mVtkImageReslice.back()->GetOutput(0) );
+  // Create the corresponding transformed image
+  mVtkImageReslice.push_back(vtkSmartPointer<vtkImageReslice>::New());
+  mVtkImageReslice.back()->SetInterpolationModeToLinear();
+  mVtkImageReslice.back()->AutoCropOutputOn();
+  mVtkImageReslice.back()->SetBackgroundColor(-1000,-1000,-1000,1);
+  mVtkImageReslice.back()->SetResliceTransform(mTransform);
+  mVtkImageReslice.back()->SetInput(0, converter->GetOutput());
+  mVtkImageReslice.back()->UpdateInformation();
+  mTransformedVtkImages.push_back( mVtkImageReslice.back()->GetOutput(0) );
 }
 //--------------------------------------------------------------------