19 #include <itkComposeImageFilter.h> 42 m_DataVector.push_back(data.GetPointer());
43 m_NameVector.push_back(name);
44 m_FilePathVector.push_back(filePath);
45 size_t lastIndex = m_DataVector.size()-1;
46 m_DataNames[name] = lastIndex;
64 if (index >= m_FilePathVector.size())
65 mitkThrow() <<
"No element with the given index";
66 return m_FilePathVector[index];
76 index = m_DataNames.at(name);
80 mitkThrow() <<
"No element with the given name: " << name;
88 if (index >= m_NameVector.size())
90 MITK_ERROR <<
"DataCollection Index does not exist";
91 mitkThrow() <<
"No element with the given index";
93 return m_NameVector[index];
99 bool isInside = (m_DataNames.find(name) != m_DataNames.end());
106 if (index >= m_NameVector.size())
114 return m_DataVector.size();
121 mitkThrow() <<
"Unkown index. No Element with the given index";
127 m_DataVector[index] = data;
136 itk::DataObject::Pointer
140 mitkThrow() <<
"Unkown index. No Element with the given index";
142 return m_DataVector[index];
145 itk::DataObject::Pointer
151 template <
typename TPixel>
155 if (mitkImage.IsNull())
157 typename itk::Image<TPixel, 3>::Pointer itkImage =
dynamic_cast<itk::Image<TPixel, 3> *
>(itkData);
158 if (itkImage.IsNotNull())
163 if (mitkImage.IsNull())
165 typename itk::Image<TPixel, 2>::Pointer itkImage =
dynamic_cast<itk::Image<TPixel, 2>*
>(itkData);
166 if (itkImage.IsNotNull())
178 itk::DataObject* itkData =
GetData(index).GetPointer();
182 mitkImage = ConvertItkObjectToMitkImage<double>(itkData, mitkImage);
183 mitkImage = ConvertItkObjectToMitkImage<float>(itkData, mitkImage);
184 mitkImage = ConvertItkObjectToMitkImage<unsigned char>(itkData, mitkImage);
185 mitkImage = ConvertItkObjectToMitkImage<signed char>(itkData, mitkImage);
186 mitkImage = ConvertItkObjectToMitkImage<unsigned short>(itkData, mitkImage);
187 mitkImage = ConvertItkObjectToMitkImage<signed short>(itkData, mitkImage);
188 mitkImage = ConvertItkObjectToMitkImage<unsigned int>(itkData, mitkImage);
189 mitkImage = ConvertItkObjectToMitkImage<signed int>(itkData, mitkImage);
190 mitkImage = ConvertItkObjectToMitkImage<unsigned long>(itkData, mitkImage);
191 mitkImage = ConvertItkObjectToMitkImage<signed long>(itkData, mitkImage);
202 template <
class ImageType>
206 if (image !=
nullptr)
210 else if (
nullptr != dynamic_cast<ImageType*>(
GetData(index)))
214 template <
class ImageType>
218 if (image !=
nullptr)
226 itk::DataObject::Pointer&
229 return m_DataVector[index];
232 itk::DataObject::Pointer&
240 m_XMLFile = absoluteXMlFile;
261 std::map<std::string, size_t>::iterator it = m_DataNames.find(m_NameVector[index]);
262 m_DataNames.erase(it);
263 m_DataNames[name] = index;
264 m_NameVector[index] = name;
273 m_DataVector.erase(m_DataVector.begin() + index);
274 m_NameVector.erase(m_NameVector.begin() + index);
275 m_FilePathVector.erase(m_FilePathVector.begin() + index);
278 for (
size_t i = 0; i < m_NameVector.size(); ++i)
280 m_DataNames[m_NameVector[i]] = i;
296 for (std::vector<itk::DataObject::Pointer>::iterator it = m_DataVector.begin(); it != m_DataVector.end(); ++it)
356 typedef itk::VectorImage<double, 3> VectorImageType;
357 typedef itk::ComposeImageFilter<ImageType, VectorImageType> ComposeFilterType;
359 ComposeFilterType::Pointer composer = ComposeFilterType::New();
361 for (std::vector<std::string>::iterator it = probabilityNamesVector.begin(); it != probabilityNamesVector.end(); ++it)
363 ImageType* img =
dynamic_cast<ImageType*
>(this->
GetData((*it)).GetPointer());
366 composer->SetInput(i, img);
371 VectorImageType::Pointer vecImage = composer->GetOutput();
374 probImage->InitializeByItk(vecImage.GetPointer(), vecImage->GetNumberOfComponentsPerPixel());
375 probImage->SetVolume(vecImage->GetBufferPointer());
vcl_size_t Size() const
Size - number of data items in collection.
mitk::DataNode::Pointer GetDataNode(vcl_size_t index)
GetDataNode - returns data node containing data at index.
bool RequestedRegionIsOutsideOfTheBufferedRegion() override
Determine whether the RequestedRegion is outside of the BufferedRegion.
void Init(std::string name)
Base of all data objects.
bool VerifyRequestedRegion() override
Verify that the RequestedRegion is within the LargestPossibleRegion.
itk::Image< unsigned char, 3 > ImageType
vcl_size_t AddData(DataObject::Pointer data, std::string name, std::string filePath="")
AddData Add a data item.
bool RemoveIndex(vcl_size_t index)
RemoveIndex - removes element at index.
void SetRequestedRegionToLargestPossibleRegion() override
Set the RequestedRegion to the LargestPossibleRegion.
vcl_size_t NameToIndex(std::string name)
NameToIndex - Get index from data item name.
mitk::Image::Pointer GetMitkImage(vcl_size_t index)
GetMitkImage - casts data to mitk::Image and returns it.
std::string GetDataFilePath(vcl_size_t index) const
mitk::DataCollection * GetParent()
GetParent - returns the parent collection if available else null is returned.
void SetXMLFile(std::string absoluteXMlFile)
SetXMLFile - sets xml file to which data collection is saved.
void SetData(itk::DataObject::Pointer data, vcl_size_t index)
SetData - set/update data item by index.
mitk::Image::Pointer ConvertItkObjectToMitkImage(itk::DataObject *itkData, mitk::Image::Pointer mitkImage)
bool HasElement(std::string name)
HasElement - check if element with this name exists in collection.
void SetRequestedRegion(const itk::DataObject *) override
Set the requested region from this data object to match the requested region of the data object passe...
Image class for storing images.
mitk::Image::Pointer image
void Clear() override
Clear - clears the data collection.
void SetNameForIndex(vcl_size_t index, std::string &name)
SetNameForIndex - sets name for given data item by index.
bool RemoveElement(std::string &name)
RemoveElement - removes element with name.
std::string IndexToName(vcl_size_t index) const
IndexToName - Get name from index.
ImageType GetItkImage(vcl_size_t index, ImageType *itkImage)
GetMitkImage - casts data to privided itk::Image pointer.
std::string GetName() const
void CastToMitkImage(const itk::SmartPointer< ItkOutputImageType > &itkimage, itk::SmartPointer< mitk::Image > &mitkoutputimage)
Cast an itk::Image (with a specific type) to an mitk::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.
void SetName(std::string name)
SetName - Sets name of DataCollection.
~DataCollection() override
std::string GetXMLFile()
SetXMLFile - gets xml file to which data collection is supposed to be saved.
void UpdateOutputInformation() override
itk::DataObject::Pointer GetData(vcl_size_t index)
GetData Get original data by index.
itk::DataObject::Pointer & operator[](vcl_size_t index)
mitk::Image::Pointer GetProbabilityMap(std::vector< std::string > probabilityNamesVector)
GetProbabilityMap - returns vectorimage generated out of images with names in the probabilityNamesVec...
void SetParent(mitk::DataCollection *parent)
SetParent - sets the parent collection.