]> Creatis software - clitk.git/blob - common/vvImage.txx
Removed direct modification of matrix elements which triggered vtk warnings.
[clitk.git] / common / vvImage.txx
1 #include <itkImageToVTKImageFilter.h>
2
3 //--------------------------------------------------------------------
4 template<class TItkImageType>
5 void vvImage::AddItkImage(TItkImageType *input)
6 {
7   // Convert from ITK object to VTK object
8   mImageDimension = TItkImageType::ImageDimension; 
9   typedef itk::ImageToVTKImageFilter <TItkImageType> ConverterType;
10   typename ConverterType::Pointer converter = ConverterType::New();
11   mItkToVtkConverters.push_back(dynamic_cast< itk::ProcessObject *>(converter.GetPointer()));
12   converter->SetInput(input);
13   converter->Update();
14   mVtkImages.push_back( converter->GetOutput() );
15   
16  // Account for direction in transform. The offset is already accounted for
17   // in the VTK image coordinates, no need to put it in the transform.
18   vtkSmartPointer<vtkMatrix4x4> matrix = vtkSmartPointer<vtkMatrix4x4>::New();
19   matrix->Identity();
20   for(unsigned int j=0; j<input->GetImageDimension(); j++)
21     for(unsigned int i=0; i<input->GetImageDimension(); i++)
22       (*matrix)[i][j] = input->GetDirection()[i][j];
23   mTransform->SetMatrix(matrix);
24
25   // Create the corresponding transformed image
26   mVtkImageReslice.push_back(vtkSmartPointer<vtkImageReslice>::New());
27   mVtkImageReslice.back()->SetInterpolationModeToLinear();
28   mVtkImageReslice.back()->AutoCropOutputOn();
29   mVtkImageReslice.back()->SetBackgroundColor(-1000,-1000,-1000,1);
30   mVtkImageReslice.back()->SetResliceTransform(mTransform);
31   mVtkImageReslice.back()->SetInput(0, converter->GetOutput());
32   mVtkImageReslice.back()->UpdateInformation();
33   mTransformedVtkImages.push_back( mVtkImageReslice.back()->GetOutput(0) );
34 }
35 //--------------------------------------------------------------------
36