6 #include <itkJoinSeriesImageFilter.h>
7 #include "itkVTKImageToImageFilter.h"
9 ///Converts the vv image to itk, handling the 4D problem
10 template<unsigned int Dim, class PixelType> std::vector<typename itk::Image<PixelType,Dim>::ConstPointer> vvImageToITKImageVector(vvImage::Pointer vv_image) ///Converts the vv image to itk, handling the 4D problem
12 assert(Dim < 5 && Dim > 1); // We don't handle anything higher than 4-dimensional (for the moment :-p)
13 assert(vv_image->GetVTKImages().size() > 0); //we assume there is something to convert
14 typedef itk::Image< PixelType, Dim > OutputImageType;
15 std::vector<typename itk::Image<PixelType,Dim>::ConstPointer> result;
17 typedef itk::Image< PixelType, Dim > ConnectorImageType;
18 typedef itk::VTKImageToImageFilter<ConnectorImageType> ConnectorType;
19 for (unsigned int i = 0; i < vv_image->GetVTKImages().size(); i++)
21 typename ConnectorType::Pointer connector = ConnectorType::New();
22 connector->SetInput(vv_image->GetVTKImages()[i]);
24 result.push_back(connector->GetOutput());
29 ///Converts the vv image to itk, handling the 4D problem
30 template<class ImageType> typename ImageType::ConstPointer vvImageToITK(vvImage::Pointer vv_image) ///Converts the vv image to itk, handling the 4D problem
32 const unsigned int Dim=ImageType::ImageDimension;
33 assert(Dim < 5 && Dim > 0); // We don't handle anything higher than 4-dimensional (for the moment :-p)
34 typedef ImageType OutputImageType;
38 typedef itk::Image< typename ImageType::PixelType, 3 > ConnectorImageType;
39 typedef itk::VTKImageToImageFilter<ConnectorImageType> ConnectorType;
40 typedef itk::JoinSeriesImageFilter<ConnectorImageType,OutputImageType> FilterType;
43 typename FilterType::Pointer filter = FilterType::New();
44 filter->SetOrigin(vv_image->GetOrigin()[3]);
45 filter->SetSpacing(vv_image->GetSpacing()[3]);
47 for (int i = 0; i < vv_image->GetSize()[3]; i++)
49 typename ConnectorType::Pointer connector = ConnectorType::New();
50 connector->SetInput(vv_image->GetVTKImages()[i]);
52 filter->PushBackInput(connector->GetOutput());
55 return filter->GetOutput();
59 assert(!vv_image->IsTimeSequence()); //This case isn't implemented
60 typedef ImageType ConnectorImageType;
61 typedef itk::VTKImageToImageFilter <ConnectorImageType> ConnectorType;
62 typename ConnectorType::Pointer connector = ConnectorType::New();
63 connector->SetInput(vv_image->GetVTKImages()[0]);
66 return connector->GetOutput();
70 ///Converts a single time frame of a vv image to itk.
71 template<unsigned int Dim, class PixelType> typename itk::Image<PixelType,Dim>::ConstPointer vvSingleFrameToITK(vvImage::Pointer vv_image,int frame) ///Converts the vv image to itk, handling the 4D problem
73 assert(Dim < 4 && Dim > 0);
74 typedef itk::Image< PixelType, Dim > OutputImageType;
75 typedef itk::Image< PixelType, Dim > ConnectorImageType;
76 typedef itk::VTKImageToImageFilter <ConnectorImageType> ConnectorType;
77 typename ConnectorType::Pointer connector = ConnectorType::New();
78 connector->SetInput(vv_image->GetVTKImages()[frame]);
80 return connector->GetOutput();