1 #ifndef __ITKToVTKImageImport_h_
2 #define __ITKToVTKImageImport_h_
5 #include "itkVTKImageImport.h"
6 #include "itkVTKImageExport.h"
8 #include "vtkImageData.h"
9 #include "vtkImageImport.h"
10 #include "vtkImageExport.h"
13 #define TRY_CLAUSE_ITK try{
14 #define CATCH_CLAUSE_ITK }catch(itk::ExceptionObject &e){ \
15 std::cout<<e<<std::endl; \
16 std::string ex = e.GetDescription();}\
18 //------------------------------------------------------------------------------------------------------------
20 //------------------------------------------------------------------------------------------------------------
21 template<typename TypeImage,unsigned int dim>
22 class ITKToVTKImageImport {
24 //------------------------------------------------------------------------------------------------------------
25 // Constructors & Destructors
26 //------------------------------------------------------------------------------------------------------------
28 /* !!!!!some type definitions!!!!!!
31 * type definition for the itk image that is going to be use
33 typedef itk::Image<TypeImage,dim> itkImageType;
35 * type definition for the itk image import
37 typedef itk::VTKImageImport<itkImageType> ImageImportType;
39 * type definition for the pointer of the image import
41 typedef typename ImageImportType::Pointer ImageImportPointer;
43 * type definition for the itk image import
45 typedef itk::VTKImageExport<itkImageType> ImageExportType;
47 * type definition for the pointer of the image import
49 typedef typename ImageExportType::Pointer ImageExportPointer;
51 ** Default constructor, allocates the vtkImageExport and itkImageImport
52 ** Connects the pipelines and set them ready to be use
54 ITKToVTKImageImport(){
56 vtkimageexport = vtkImageExport::New();
57 imageimportpointer = ImageImportType::New();
59 imageimportpointer->SetUpdateInformationCallback(vtkimageexport->GetUpdateInformationCallback());
60 imageimportpointer->SetPipelineModifiedCallback(vtkimageexport->GetPipelineModifiedCallback());
61 imageimportpointer->SetWholeExtentCallback(vtkimageexport->GetWholeExtentCallback());
62 imageimportpointer->SetSpacingCallback(vtkimageexport->GetSpacingCallback());
63 imageimportpointer->SetOriginCallback(vtkimageexport->GetOriginCallback());
64 imageimportpointer->SetScalarTypeCallback(vtkimageexport->GetScalarTypeCallback());
65 imageimportpointer->SetNumberOfComponentsCallback(vtkimageexport->GetNumberOfComponentsCallback());
66 imageimportpointer->SetPropagateUpdateExtentCallback(vtkimageexport->GetPropagateUpdateExtentCallback());
67 imageimportpointer->SetUpdateDataCallback(vtkimageexport->GetUpdateDataCallback());
68 imageimportpointer->SetDataExtentCallback(vtkimageexport->GetDataExtentCallback());
69 imageimportpointer->SetBufferPointerCallback(vtkimageexport->GetBufferPointerCallback());
70 imageimportpointer->SetCallbackUserData(vtkimageexport->GetCallbackUserData());
73 imageexportpointer = ImageExportType::New();
74 vtkimageimport = vtkImageImport::New();
76 vtkimageimport->SetUpdateInformationCallback(imageexportpointer->GetUpdateInformationCallback());
77 vtkimageimport->SetPipelineModifiedCallback(imageexportpointer->GetPipelineModifiedCallback());
78 vtkimageimport->SetWholeExtentCallback(imageexportpointer->GetWholeExtentCallback());
79 vtkimageimport->SetSpacingCallback(imageexportpointer->GetSpacingCallback());
80 vtkimageimport->SetOriginCallback(imageexportpointer->GetOriginCallback());
81 vtkimageimport->SetScalarTypeCallback(imageexportpointer->GetScalarTypeCallback());
82 vtkimageimport->SetNumberOfComponentsCallback(imageexportpointer->GetNumberOfComponentsCallback());
83 vtkimageimport->SetPropagateUpdateExtentCallback(imageexportpointer->GetPropagateUpdateExtentCallback());
84 vtkimageimport->SetUpdateDataCallback(imageexportpointer->GetUpdateDataCallback());
85 vtkimageimport->SetDataExtentCallback(imageexportpointer->GetDataExtentCallback());
86 vtkimageimport->SetBufferPointerCallback(imageexportpointer->GetBufferPointerCallback());
87 vtkimageimport->SetCallbackUserData(imageexportpointer->GetCallbackUserData());
92 ~ITKToVTKImageImport(){
93 /*std::cout<<"delete ~ITKToVTKImageImport(){"<<std::endl;*/
94 vtkimageimport->Delete();
95 vtkimageexport->Delete();
98 * set the vtkImage data to connect to itk pipeline
100 void setVTKImage(vtkImageData* img) {
101 vtkimageexport->SetInput( img );
102 vtkimageexport->Update();
103 imageimportpointer->Update();
108 itk::Image<TypeImage,dim>* getITKImage() {
109 if(vtkimageexport->GetInput()==0){
110 throw "Image not set to get the ItkImage, set the VtkImage before.\0";
112 return imageimportpointer->GetOutput();
116 * Get the vtkImageData from the itk image
118 vtkImageData* GetOutputVTKImageDataImport() {
119 return vtkimageimport->GetOutput();
122 * set the vtkImage data to connect to itk pipeline
124 void setITKImage(itkImageType* img) {
125 //std::cout<<"image pointer setITKImage"<<img<<std::endl;
126 imageexportpointer->SetInput(img);
127 imageexportpointer->Update();
128 vtkimageimport->Update();
131 //------------------------------------------------------------------------------------------------------------
133 //------------------------------------------------------------------------------------------------------------
139 * Pointer to vtkImageExport
141 vtkImageExport * vtkimageexport;
143 * itk::VTKImageImport pointer
145 ImageImportPointer imageimportpointer;
147 * Pointer to vtkImageExport
149 vtkImageImport * vtkimageimport;
151 * Pointer to Export the itk image into vtk
153 ImageExportPointer imageexportpointer;