]> Creatis software - clitk.git/blobdiff - common/vvFromITK.h
itkv4 migration:
[clitk.git] / common / vvFromITK.h
index c7178fe3e36c417cb85d37182c6edbea2840a1a0..bd075731304eeb0ed735093edef484d45e3541d5 100644 (file)
@@ -32,7 +32,6 @@ template<unsigned int Dim, class PixelType> vvImage::Pointer vvImageFromITK(type
 {
     assert(Dim < 5 && Dim > 0); // We don't handle anything higher than 4-dimensional (for the moment :-p)
     vvImage::Pointer vv_image=vvImage::New();
-    vv_image->Init(); //Delete any existing images
     typedef itk::Image< PixelType, Dim > InputImageType;
 
     if (Dim == 4 || time_sequence) //The time sequence case: create a series of VTK images
@@ -41,6 +40,7 @@ template<unsigned int Dim, class PixelType> vvImage::Pointer vvImageFromITK(type
         typedef itk::ExtractImageFilter<InputImageType, ItkImageType> FilterType;
 
         //extract the 3D slices and put them in a std::vector<vtkImageData*>
+        input->UpdateOutputInformation();
         typename InputImageType::RegionType inputRegion = input->GetLargestPossibleRegion();
         typename InputImageType::SizeType inputSize = inputRegion.GetSize();
         typename InputImageType::IndexType start = inputRegion.GetIndex();
@@ -54,18 +54,10 @@ template<unsigned int Dim, class PixelType> vvImage::Pointer vvImageFromITK(type
             extractedRegion.SetIndex(start);
 
             typename FilterType::Pointer filter = FilterType::New();
+            filter->SetDirectionCollapseToSubmatrix();
             filter->SetExtractionRegion(extractedRegion);
             filter->SetInput(input);
             filter->ReleaseDataFlagOn();
-
-            try {
-                filter->Update();
-            }
-            catch ( itk::ExceptionObject & err ) {
-                std::cerr << "Error while setting vvImage from ITK (Dim==4) [Extract phase]"
-                          << " " << err << std::endl;
-                return vv_image;
-            }
             vv_image->AddItkImage<ItkImageType>(filter->GetOutput());
         }
         vv_image->SetTimeSpacing(input->GetSpacing()[Dim-1]);