bool mitk::ThreeDnTDICOMSeriesReader ::LoadMitkImageForImageBlockDescriptor(DICOMImageBlockDescriptor& block) const { PushLocale(); const DICOMImageFrameList& frames = block.GetImageFrameList(); const GantryTiltInformation tiltInfo = block.GetTiltInformation(); const bool hasTilt = tiltInfo.IsRegularGantryTilt(); const int numberOfTimesteps = block.GetNumberOfTimeSteps(); if (numberOfTimesteps == 1) { return DICOMITKSeriesGDCMReader::LoadMitkImageForImageBlockDescriptor(block); } const int numberOfFramesPerTimestep = block.GetNumberOfFramesPerTimeStep(); ITKDICOMSeriesReaderHelper::StringContainerList filenamesPerTimestep; for (int timeStep = 0; timeStep<numberOfTimesteps; ++timeStep) { // use numberOfFramesPerTimestep frames for a new item in filenamesPerTimestep ITKDICOMSeriesReaderHelper::StringContainer filenamesOfThisTimeStep; auto timeStepStart = frames.cbegin() + timeStep * numberOfFramesPerTimestep; auto timeStepEnd = frames.cbegin() + (timeStep+1) * numberOfFramesPerTimestep; for (auto frameIter = timeStepStart; frameIter != timeStepEnd; ++frameIter) { filenamesOfThisTimeStep.push_back( (*frameIter)->Filename ); } filenamesPerTimestep.push_back( filenamesOfThisTimeStep ); } mitk::ITKDICOMSeriesReaderHelper helper; mitk::Image::Pointer mitkImage = helper.Load3DnT( filenamesPerTimestep, m_FixTiltByShearing && hasTilt, tiltInfo ); block.SetMitkImage( mitkImage ); PopLocale(); return true; }