13 template <
typename TDataType,
int TImageDimension>
16 m_Collection(collection), m_ImageName(imageName), m_IsAtEnd(false),
17 m_IteratingImages(true), m_CurrentIndex(0),
18 m_CurrentElement(0), m_CurrentCollectionIterator(nullptr)
23 template <
typename TDataType,
int TImageDimension>
29 m_IteratingImages =
false;
34 if (m_Collection->HasElement(m_ImageName))
42 typename ImageType::Pointer itkImage = ImageType::New();
44 itk::DataObject::Pointer itkObject =
dynamic_cast<itk::DataObject*
>(itkImage.GetPointer());
45 m_Collection->SetData(itkObject, m_ImageName);
51 m_IteratingImages =
true;
52 m_CurrentIterator =
ImageIterator(image, image->GetLargestPossibleRegion());
55 if (!m_IteratingImages)
57 if (m_CurrentCollectionIterator !=
nullptr)
59 delete m_CurrentCollectionIterator;
60 m_CurrentCollectionIterator =
nullptr;
63 m_CurrentCollectionIterator = GetNextDataCollectionIterator(m_CurrentElement);
64 if (m_CurrentCollectionIterator ==
nullptr)
69 m_CurrentIterator = m_CurrentCollectionIterator->GetImageIterator();
74 template <
typename TDataType,
int TImageDimension>
82 template <
typename TDataType,
int TImageDimension>
90 if (m_CurrentIterator.IsAtEnd())
97 template <
typename TDataType,
int TImageDimension>
105 if (m_CurrentIterator.IsAtEnd())
112 template <
typename TDataType,
int TImageDimension>
119 while (index < m_Collection->Size() && iterator ==
nullptr)
122 collection =
dynamic_cast<DataCollection*
>(m_Collection->GetData(index).GetPointer());
123 if (collection !=
nullptr)
138 m_CurrentElement = index;
142 template <
typename TDataType,
int TImageDimension>
147 return m_CurrentIterator.Get();
150 template <
typename TDataType,
int TImageDimension>
155 m_CurrentIterator.Set(value);
158 template <
typename TDataType,
int TImageDimension>
163 return m_CurrentIndex;
166 template <
typename TDataType,
int TImageDimension>
171 if (m_IteratingImages)
177 return m_Collection->IndexToName(m_CurrentElement) +
"/" + m_CurrentCollectionIterator->GetFilePrefix();
181 template <
typename TDataType,
int TImageDimension>
184 if (m_IteratingImages)
186 if (m_CurrentCollectionIterator !=
nullptr)
188 delete m_CurrentCollectionIterator;
189 m_CurrentCollectionIterator =
nullptr;
191 m_IteratingImages =
false;
192 m_CurrentElement = 0;
193 m_CurrentCollectionIterator = GetNextDataCollectionIterator(m_CurrentElement);
194 if (m_CurrentCollectionIterator ==
nullptr)
202 m_CurrentCollectionIterator->NextObject();
203 if (m_CurrentCollectionIterator->IsAtEnd())
205 delete m_CurrentCollectionIterator;
206 m_CurrentCollectionIterator = GetNextDataCollectionIterator(m_CurrentElement+1);
208 if (m_CurrentCollectionIterator ==
nullptr)
214 m_CurrentIterator = m_CurrentCollectionIterator->GetImageIterator();
217 template <
typename TDataType,
int TImageDimension>
221 return m_CurrentIterator;
ImageIterator GetImageIterator()
void SetVoxel(TDataType value)
DataCollectionImageIterator(DataCollection::Pointer collection, std::string imageName)
itk::ImageRegionIterator< ImageType > ImageIterator
Image class for storing images.
mitk::Image::Pointer image
void MITKCORE_EXPORT CastToItkImage(const mitk::Image *mitkImage, itk::SmartPointer< ItkOutputImageType > &itkOutputImage)
Cast an mitk::Image to an itk::Image with a specific type.
itk::Image< TDataType, ImageDimension > ImageType
std::string GetFilePrefix()