--- /dev/null
+#ifndef __ITKToVTKImageImport_h_
+#define __ITKToVTKImageImport_h_
+
+#include "itkImage.h"
+#include "itkVTKImageImport.h"
+#include "itkVTKImageExport.h"
+
+#include "vtkImageData.h"
+#include "vtkImageImport.h"
+#include "vtkImageExport.h"
+
+#define DIM 3
+#define TRY_CLAUSE_ITK try{
+#define CATCH_CLAUSE_ITK }catch(itk::ExceptionObject &e){ \
+ std::cout<<e<<std::endl; \
+ std::string ex = e.GetDescription();}\
+
+//------------------------------------------------------------------------------------------------------------
+// Includes
+//------------------------------------------------------------------------------------------------------------
+template<typename TypeImage,unsigned int dim>
+class ITKToVTKImageImport {
+
+//------------------------------------------------------------------------------------------------------------
+// Constructors & Destructors
+//------------------------------------------------------------------------------------------------------------
+public:
+ /* !!!!!some type definitions!!!!!!
+ */
+ /*
+ * type definition for the itk image that is going to be use
+ */
+ typedef itk::Image<TypeImage,dim> itkImageType;
+ /*
+ * type definition for the itk image import
+ */
+ typedef itk::VTKImageImport<itkImageType> ImageImportType;
+ /*
+ * type definition for the pointer of the image import
+ */
+ typedef typename ImageImportType::Pointer ImageImportPointer;
+ /*
+ * type definition for the itk image import
+ */
+ typedef itk::VTKImageExport<itkImageType> ImageExportType;
+ /*
+ * type definition for the pointer of the image import
+ */
+ typedef typename ImageExportType::Pointer ImageExportPointer;
+ /**
+ ** Default constructor, allocates the vtkImageExport and itkImageImport
+ ** Connects the pipelines and set them ready to be use
+ **/
+ ITKToVTKImageImport(){
+
+ vtkimageexport = vtkImageExport::New();
+ imageimportpointer = ImageImportType::New();
+
+ imageimportpointer->SetUpdateInformationCallback(vtkimageexport->GetUpdateInformationCallback());
+ imageimportpointer->SetPipelineModifiedCallback(vtkimageexport->GetPipelineModifiedCallback());
+ imageimportpointer->SetWholeExtentCallback(vtkimageexport->GetWholeExtentCallback());
+ imageimportpointer->SetSpacingCallback(vtkimageexport->GetSpacingCallback());
+ imageimportpointer->SetOriginCallback(vtkimageexport->GetOriginCallback());
+ imageimportpointer->SetScalarTypeCallback(vtkimageexport->GetScalarTypeCallback());
+ imageimportpointer->SetNumberOfComponentsCallback(vtkimageexport->GetNumberOfComponentsCallback());
+ imageimportpointer->SetPropagateUpdateExtentCallback(vtkimageexport->GetPropagateUpdateExtentCallback());
+ imageimportpointer->SetUpdateDataCallback(vtkimageexport->GetUpdateDataCallback());
+ imageimportpointer->SetDataExtentCallback(vtkimageexport->GetDataExtentCallback());
+ imageimportpointer->SetBufferPointerCallback(vtkimageexport->GetBufferPointerCallback());
+ imageimportpointer->SetCallbackUserData(vtkimageexport->GetCallbackUserData());
+
+
+ imageexportpointer = ImageExportType::New();
+ vtkimageimport = vtkImageImport::New();
+
+ vtkimageimport->SetUpdateInformationCallback(imageexportpointer->GetUpdateInformationCallback());
+ vtkimageimport->SetPipelineModifiedCallback(imageexportpointer->GetPipelineModifiedCallback());
+ vtkimageimport->SetWholeExtentCallback(imageexportpointer->GetWholeExtentCallback());
+ vtkimageimport->SetSpacingCallback(imageexportpointer->GetSpacingCallback());
+ vtkimageimport->SetOriginCallback(imageexportpointer->GetOriginCallback());
+ vtkimageimport->SetScalarTypeCallback(imageexportpointer->GetScalarTypeCallback());
+ vtkimageimport->SetNumberOfComponentsCallback(imageexportpointer->GetNumberOfComponentsCallback());
+ vtkimageimport->SetPropagateUpdateExtentCallback(imageexportpointer->GetPropagateUpdateExtentCallback());
+ vtkimageimport->SetUpdateDataCallback(imageexportpointer->GetUpdateDataCallback());
+ vtkimageimport->SetDataExtentCallback(imageexportpointer->GetDataExtentCallback());
+ vtkimageimport->SetBufferPointerCallback(imageexportpointer->GetBufferPointerCallback());
+ vtkimageimport->SetCallbackUserData(imageexportpointer->GetCallbackUserData());
+
+ }
+
+
+ ~ITKToVTKImageImport(){
+ /*std::cout<<"delete ~ITKToVTKImageImport(){"<<std::endl;*/
+ vtkimageimport->Delete();
+ vtkimageexport->Delete();
+ }
+ /*
+ * set the vtkImage data to connect to itk pipeline
+ */
+ void setVTKImage(vtkImageData* img) {
+ vtkimageexport->SetInput( img );
+ vtkimageexport->Update();
+ imageimportpointer->Update();
+ }
+ /*
+ *
+ */
+ itk::Image<TypeImage,dim>* getITKImage() {
+ if(vtkimageexport->GetInput()==0){
+ throw "Image not set to get the ItkImage, set the VtkImage before.\0";
+ }
+ return imageimportpointer->GetOutput();
+ }
+
+ /*
+ * Get the vtkImageData from the itk image
+ */
+ vtkImageData* GetOutputVTKImageDataImport() {
+ return vtkimageimport->GetOutput();
+ }
+ /*
+ * set the vtkImage data to connect to itk pipeline
+ */
+ void setITKImage(itkImageType* img) {
+ //std::cout<<"image pointer setITKImage"<<img<<std::endl;
+ imageexportpointer->SetInput(img);
+ imageexportpointer->Update();
+ vtkimageimport->Update();
+ }
+
+//------------------------------------------------------------------------------------------------------------
+// Attributes
+//------------------------------------------------------------------------------------------------------------
+private:
+
+
+
+ /*
+ * Pointer to vtkImageExport
+ */
+ vtkImageExport * vtkimageexport;
+ /*
+ * itk::VTKImageImport pointer
+ */
+ ImageImportPointer imageimportpointer;
+ /*
+ * Pointer to vtkImageExport
+ */
+ vtkImageImport * vtkimageimport;
+ /*
+ * Pointer to Export the itk image into vtk
+ */
+ ImageExportPointer imageexportpointer;
+};
+#endif