]> Creatis software - clitk.git/blobdiff - common/vvImage.txx
Replace vvImage::Pointer with raw pointer for function
[clitk.git] / common / vvImage.txx
index c0eda2082e75f756e44a7fa33caa828e8848e22b..a84fa76669d7a317655d725e9e2e8371fd8f133c 100755 (executable)
@@ -4,6 +4,7 @@
 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();
@@ -11,7 +12,17 @@ void vvImage::AddItkImage(TItkImageType *input)
   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.
+  vtkSmartPointer<vtkMatrix4x4> matrix = vtkSmartPointer<vtkMatrix4x4>::New();
+  matrix->Identity();
+  for(unsigned int j=0; j<input->GetImageDimension(); j++)
+    for(unsigned int i=0; i<input->GetImageDimension(); i++)
+      (*matrix)[i][j] = input->GetDirection()[i][j];
+  mTransform->SetMatrix(matrix);
+
+  // Create the corresponding transformed image
   mVtkImageReslice.push_back(vtkSmartPointer<vtkImageReslice>::New());
   mVtkImageReslice.back()->SetInterpolationModeToLinear();
   mVtkImageReslice.back()->AutoCropOutputOn();