1 #include <itkImageToVTKImageFilter.h>
3 //--------------------------------------------------------------------
4 template<class TItkImageType>
5 void vvImage::AddItkImage(TItkImageType *input)
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);
14 mVtkImages.push_back( converter->GetOutput() );
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 for(unsigned int j=0; j<input->GetImageDimension(); j++)
19 for(unsigned int i=0; i<input->GetImageDimension(); i++)
20 mTransform->GetMatrix()->SetElement(i,j, input->GetDirection()[i][j]);
22 // Create the corresponding transformed image
23 mVtkImageReslice.push_back(vtkSmartPointer<vtkImageReslice>::New());
24 mVtkImageReslice.back()->SetInterpolationModeToLinear();
25 mVtkImageReslice.back()->AutoCropOutputOn();
26 mVtkImageReslice.back()->SetBackgroundColor(-1000,-1000,-1000,1);
27 mVtkImageReslice.back()->SetResliceTransform(mTransform);
28 mVtkImageReslice.back()->SetInput(0, converter->GetOutput());
29 mVtkImageReslice.back()->UpdateInformation();
30 mTransformedVtkImages.push_back( mVtkImageReslice.back()->GetOutput(0) );
32 //--------------------------------------------------------------------