- filter->SetExtractionRegion(extractedRegion);
- filter->SetInput(input);
- filter->ReleaseDataFlagOn();
- vv_image->AddItkImage<ItkImageType>(filter->GetOutput());
- }
- vv_image->SetTimeSpacing(input->GetSpacing()[Dim-1]);
- vv_image->SetTimeOrigin(input->GetOrigin()[Dim-1]);
- }
- else //Dim == 1,2,3 and not time_sequence
- {
- vv_image->AddItkImage<InputImageType>(input);
+ filter->SetExtractionRegion(extractedRegion);
+ filter->SetInput(input);
+ filter->ReleaseDataFlagOn();
+ vv_image->AddItkImage<ItkImageType>(filter->GetOutput());
+ vv_image->ComputeScalarRangeBase<PixelType, Dim-1>(filter->GetOutput());
+ }
+ vv_image->SetTimeSpacing(input->GetSpacing()[Dim-1]);
+ vv_image->SetTimeOrigin(input->GetOrigin()[Dim-1]);
+}
+
+template<unsigned int Dim, class PixelType>
+struct vvImageFromITK_Impl
+{
+ static vvImage::Pointer Do (typename itk::Image<PixelType,Dim>::Pointer input, bool time_sequence=false)
+ {
+ vvImage::Pointer vv_image=vvImage::New();
+ typedef itk::Image< PixelType, Dim > InputImageType;
+
+ if (time_sequence) //The time sequence case: create a series of VTK images
+ ReadTimeSequence<Dim,PixelType>(vv_image, input, time_sequence);
+ else { //Dim == 1,2,3 and not time_sequence
+ vv_image->AddItkImage<InputImageType>(input);
+ vv_image->ComputeScalarRangeBase<PixelType, Dim>(input);