22 , m_StatisticsImage(nullptr)
23 , m_BinaryMask(nullptr)
24 , m_PlanarFigureMask(nullptr)
25 , m_IgnoreZeros(false)
26 , m_HistogramNBins(100)
27 , m_CalculationSuccessful(false)
39 this->m_StatisticsImage =
image;
40 this->m_BinaryMask = binaryImage;
41 this->m_PlanarFigureMask = planarFig;
46 return this->m_StatisticsContainer.GetPointer();
51 return this->m_StatisticsImage.GetPointer();
56 return this->m_BinaryMask.GetPointer();
61 return this->m_PlanarFigureMask.GetPointer();
66 this->m_IgnoreZeros = _arg;
71 return this->m_IgnoreZeros;
76 this->m_HistogramNBins = nbins;
81 return this->m_HistogramNBins;
92 if (t >= this->m_HistogramVector.size())
95 return this->m_HistogramVector.at(t).GetPointer();
100 return m_CalculationSuccessful;
105 bool statisticCalculationSuccessful =
true;
108 if(this->m_StatisticsImage.IsNotNull())
110 calculator->SetInputImage(m_StatisticsImage);
114 statisticCalculationSuccessful =
false;
122 if(this->m_BinaryMask.IsNotNull())
125 imgMask->SetImageMask(m_BinaryMask->Clone());
126 calculator->SetMask(imgMask.GetPointer());
128 if(this->m_PlanarFigureMask.IsNotNull())
131 pfMaskGen->SetInputImage(m_StatisticsImage);
132 pfMaskGen->SetPlanarFigure(m_PlanarFigureMask->Clone());
133 calculator->SetMask(pfMaskGen.GetPointer());
139 m_message = e.what();
140 statisticCalculationSuccessful =
false;
142 catch(
const itk::ExceptionObject& e)
145 m_message = e.what();
146 statisticCalculationSuccessful =
false;
148 catch (
const std::runtime_error &e )
150 MITK_ERROR<<
"Runtime Exception: " << e.what();
151 m_message = e.what();
152 statisticCalculationSuccessful =
false;
154 catch (
const std::exception &e )
156 MITK_ERROR<<
"Standard Exception: " << e.what();
157 m_message = e.what();
158 statisticCalculationSuccessful =
false;
161 if (this->m_IgnoreZeros)
164 ignorePixelValueMaskGen->SetIgnoredPixelValue(0);
165 ignorePixelValueMaskGen->SetInputImage(m_StatisticsImage);
166 calculator->SetSecondaryMask(ignorePixelValueMaskGen.GetPointer());
170 calculator->SetSecondaryMask(
nullptr);
173 calculator->SetNBinsForHistogramStatistics(m_HistogramNBins);
177 calculator->GetStatistics();
181 m_message = e.GetDescription();
183 statisticCalculationSuccessful =
false;
185 catch (
const std::runtime_error &e )
187 m_message =
"Failure: " + std::string(e.what());
188 MITK_ERROR<<
"Runtime Exception: " << e.what();
189 statisticCalculationSuccessful =
false;
191 catch (
const std::exception &e )
193 m_message =
"Failure: " + std::string(e.what());
194 MITK_ERROR<<
"Standard Exception: " << e.what();
195 statisticCalculationSuccessful =
false;
198 this->m_CalculationSuccessful = statisticCalculationSuccessful;
200 if(statisticCalculationSuccessful)
202 m_StatisticsContainer = calculator->GetStatistics();
203 this->m_HistogramVector.clear();
205 for (
unsigned int i = 0; i < m_StatisticsImage->GetTimeSteps(); i++)
207 HistogramType::ConstPointer tempHistogram;
209 if(calculator->GetStatistics()->TimeStepExists(i))
211 tempHistogram = calculator->GetStatistics()->GetStatisticsForTimeStep(i).m_Histogram;
212 this->m_HistogramVector.push_back(tempHistogram);
void SetHistogramNBins(unsigned int nbins)
QmitkImageStatisticsCalculationJob()
const mitk::PlanarFigure * GetPlanarFigure() const
bool GetIgnoreZeroValueVoxel() const
mitk::ImageStatisticsContainer * GetStatisticsData() const
const mitk::Image * GetStatisticsImage() const
~QmitkImageStatisticsCalculationJob() override
An object of this class represents an exception of MITK. Please don't instantiate exceptions manually...
Image class for storing images.
std::string GetLastErrorMessage() const
void Initialize(const mitk::Image *image, const mitk::Image *binaryImage, const mitk::PlanarFigure *planarFig)
const mitk::Image * GetMaskImage() const
mitk::Image::Pointer image
void SetIgnoreZeroValueVoxel(bool _arg)
itk::Statistics::Histogram< double > HistogramType
unsigned int GetHistogramNBins() const
const HistogramType * GetTimeStepHistogram(unsigned int t=0) const
bool GetStatisticsUpdateSuccessFlag() const
Container class for storing a StatisticsObject for each timestep.