+//----------------------------------------------------------------------------
+template<class InputPixelType, unsigned int VImageDimension>
+void vvImageReader::UpdateWithDimAndInputVectorPixelType()
+{
+ typedef itk::Image< InputPixelType, VImageDimension > InputImageType;
+ typename InputImageType::Pointer input;
+
+ if (mInputFilenames.size() > 1) {
+ typedef itk::ImageSeriesReader<InputImageType> ReaderType;
+ typename ReaderType::Pointer reader = ReaderType::New();
+ reader->SetFileNames(mInputFilenames);
+ reader->ReleaseDataFlagOn();
+ try {
+ reader->Update();
+ input = reader->GetOutput();
+ } catch ( itk::ExceptionObject & err ) {
+ std::cerr << "Error while reading image series:" << err << std::endl;
+ std::stringstream error;
+ error << err;
+ mLastError = error.str();
+ return;
+ }
+ } else {
+ typedef itk::ImageFileReader<InputImageType> ReaderType;
+ typename ReaderType::Pointer reader = ReaderType::New();
+ reader->SetFileName(mInputFilenames[0]);
+ reader->ReleaseDataFlagOn();
+ try {
+ reader->Update();
+ input = reader->GetOutput();
+ } catch ( itk::ExceptionObject & err ) {
+ std::cerr << "Error while reading " << mInputFilenames[0].c_str()
+ << " " << err << std::endl;
+ std::stringstream error;
+ error << err;
+ mLastError = error.str();
+ return;
+ }
+ }
+
+ typedef itk::Image< itk::Vector<float , 3>, VImageDimension > VectorImageType;
+ typedef itk::FlexibleVectorCastImageFilter<InputImageType, VectorImageType> CasterType;
+ typename VectorImageType::Pointer casted_input;
+ typename CasterType::Pointer caster = CasterType::New();
+ caster->SetInput(input);
+ caster->Update();
+ casted_input = caster->GetOutput();
+
+ mImage = vvImageFromITK<VImageDimension, itk::Vector<float, 3> >(casted_input, mType == IMAGEWITHTIME || mType == VECTORFIELDWITHTIME);
+}
+//----------------------------------------------------------------------------