26 typedef itk::Image<double, 3> FeatureImage;
27 typedef itk::Image<unsigned char, 3> LabelImage;
29 if (collection->HasElement(origin))
31 LabelImage::Pointer originImage =
dynamic_cast<LabelImage*
>(collection->GetData(origin).GetPointer());
33 if (!collection->HasElement(target) && originImage.IsNotNull())
36 FeatureImage::Pointer
image = FeatureImage::New();
37 image->SetRegions(originImage->GetLargestPossibleRegion());
38 image->SetSpacing(originImage->GetSpacing());
39 image->SetOrigin(originImage->GetOrigin());
40 image->SetDirection(originImage->GetDirection());
43 collection->AddData(dynamic_cast<itk::DataObject*>(image.GetPointer()),target,
"");
46 for (std::size_t i = 0; i < collection->Size();++i)
49 if (newCol !=
nullptr)
58 typedef itk::Image<unsigned char, 3> FeatureImage;
59 typedef itk::Image<unsigned char, 3> LabelImage;
61 if (collection->HasElement(origin))
63 LabelImage::Pointer originImage =
dynamic_cast<LabelImage*
>(collection->GetData(origin).GetPointer());
65 if (!collection->HasElement(target) && originImage.IsNotNull())
68 FeatureImage::Pointer
image = FeatureImage::New();
69 image->SetRegions(originImage->GetLargestPossibleRegion());
70 image->SetSpacing(originImage->GetSpacing());
71 image->SetOrigin(originImage->GetOrigin());
72 image->SetDirection(originImage->GetDirection());
75 collection->AddData(dynamic_cast<itk::DataObject*>(image.GetPointer()),target,
"");
78 for (std::size_t i = 0; i < collection->Size();++i)
81 if (newCol !=
nullptr)
90 m_Collection = collection;
104 std::vector<DataCollectionImageIterator<double, 3> > iterProbA;
105 std::vector<DataCollectionImageIterator<double, 3> > iterProbB;
106 for (std::size_t i = 0; i < m_ProbabilityClassA.size(); ++i)
109 iterProbA.push_back(iter);
111 for (std::size_t i = 0; i < m_ProbabilityClassB.size(); ++i)
114 iterProbB.push_back(iter);
126 for (std::size_t i = 0; i < iterProbA.size(); ++i)
128 probA += iterProbA[i].GetVoxel();
130 for (std::size_t i = 0; i < iterProbB.size(); ++i)
132 probB += iterProbB[i].GetVoxel();
146 for (std::size_t i = 0; i < iterProbA.size(); ++i)
150 for (std::size_t i = 0; i < iterProbB.size(); ++i)
171 iterLabel.
SetVoxel(probA >= threshold ? 1 : 2);
190 for (
double threshold = 0 ; threshold <= 100; threshold += stepSize)
194 std::stringstream ss;
195 ss << shortLabel <<
";" << threshold;
205 stat.
Print(out, sout,
false, ss.str());
DataCollection::Pointer GetCollection()
void Print(std::ostream &out, std::ostream &sout=std::cout, bool withHeader=false, std::string label="None")
bool CalculateClass(double threshold)
void SetTestName(std::string name)
void SetVoxel(TDataType value)
void SetMaskName(std::string name)
void SetGoldName(std::string name)
static void EnsureDataImageInCollection(mitk::DataCollection::Pointer collection, std::string origin, std::string target)
void SetCollection(DataCollection::Pointer collection)
void SetClassCount(vcl_size_t count)
mitk::Image::Pointer image
static void EnsureLabelImageInCollection(mitk::DataCollection::Pointer collection, std::string origin, std::string target)
void SetCollection(DataCollection::Pointer collection)
bool WriteStatistic(std::ostream &out, std::ostream &sout, double stepSize, std::string shortLabel)