23 m_DynamicImage =
nullptr;
88 template <
typename TPixel,
unsigned int VDim>
91 typedef itk::Image<TPixel, VDim-1> InputFrameImageType;
94 typename FilterType::Pointer statFilter = FilterType::New();
97 unsigned int timeSteps = this->m_DynamicImage->GetTimeSteps();
98 std::vector<Image::Pointer> frameCache;
100 imageTimeSelector->SetInput(this->m_DynamicImage);
101 for (
unsigned int i = 0; i < timeSteps; ++i)
103 typename InputFrameImageType::Pointer frameImage;
104 imageTimeSelector->SetTimeNr(i);
105 imageTimeSelector->UpdateLargestPossibleRegion();
108 frameCache.push_back(frameMITKImage);
110 statFilter->SetInput(i,frameImage);
113 if (this->m_InternalMask.IsNotNull())
115 statFilter->SetMask(this->m_InternalMask);
118 statFilter->Update();
120 m_Maximum.SetSize(timeSteps);
121 m_Minimum.SetSize(timeSteps);
122 m_Mean.SetSize(timeSteps);
123 m_Sigma.SetSize(timeSteps);
124 m_Variance.SetSize(timeSteps);
125 m_Sum.SetSize(timeSteps);
127 for (
unsigned int i = 0; i < timeSteps; ++i)
129 m_Maximum.SetElement(i,statFilter->GetMaximum()[i]);
130 m_Minimum.SetElement(i,statFilter->GetMinimum()[i]);
131 m_Mean.SetElement(i,statFilter->GetMean()[i]);
132 m_Sigma.SetElement(i,statFilter->GetSigma()[i]);
133 m_Variance.SetElement(i,statFilter->GetVariance()[i]);
134 m_Sum.SetElement(i,statFilter->GetSum()[i]);
142 if(this->m_Mask.IsNotNull())
144 InternalMaskType::Pointer castedMask;
145 CastToItkImage<InternalMaskType>(m_Mask, castedMask);
146 if (castedMask.IsNull())
148 mitkThrow() <<
"Dynamic cast of mask went wrong. Internal Mask is NULL. Image statistics cannot be generated.";
151 this->m_InternalMask = castedMask;
155 this->m_InternalMask =
nullptr;
165 if (m_DynamicImage.IsNull())
167 mitkThrow() <<
"Cannot generate statistics. Input dynamic image is not set.";
176 if (m_DynamicImage.IsNotNull())
184 if (m_Mask.IsNotNull())
virtual void CheckValidInputs() const
const ResultType & GetVariance()
const ResultType & GetMean()
#define AccessFixedDimensionByItk(mitkImage, itkImageTypeFunction, dimension)
Access a mitk-image with known dimension by an itk-image.
itk::TimeStamp m_GenerationTimeStamp
const ResultType & GetSigma()
const ResultType & GetMinimum()
~MaskedDynamicImageStatisticsGenerator() override
MaskedDynamicImageStatisticsGenerator()
Computes a masked statistic on N images and produces vectors of those statistic results.
const ResultType & GetMaximum()
void DoCalculateStatistics(const itk::Image< TPixel, VDim > *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.
bool HasOutdatedResults() const
itk::Array< double > ResultType
const ResultType & GetSum()