23 m_ScalarMax.resize(1, itk::NumericTraits<ScalarType>::NonpositiveMin());
25 m_Scalar2ndMax.resize(1, itk::NumericTraits<ScalarType>::NonpositiveMin());
40 if (timeSelector !=
nullptr)
43 timeSelector->UpdateLargestPossibleRegion();
48 generator->ComputeHistogram();
63 timeSelector->SetInput(
m_Image);
79 m_ScalarMax.resize(timeSteps, itk::NumericTraits<ScalarType>::NonpositiveMin());
81 m_Scalar2ndMax.resize(timeSteps, itk::NumericTraits<ScalarType>::NonpositiveMin());
90 m_ScalarMax.assign(1, itk::NumericTraits<ScalarType>::NonpositiveMin());
92 m_Scalar2ndMax.assign(1, itk::NumericTraits<ScalarType>::NonpositiveMin());
101 template <
typename ItkImageType>
104 typename ItkImageType::RegionType region;
105 region = itkImage->GetBufferedRegion();
106 if (region.Crop(itkImage->GetRequestedRegion()) ==
false)
108 if (region != itkImage->GetRequestedRegion())
111 itk::ImageRegionConstIterator<ItkImageType> it(itkImage, region);
112 typedef typename ItkImageType::PixelType TPixel;
115 if (statisticsHolder ==
nullptr || !statisticsHolder->
IsValidTimeStep(t))
117 statisticsHolder->
Expand(t + 1);
123 itk::NumericTraits<ScalarType>::NonpositiveMin();
125 while (!it.IsAtEnd())
128 #ifdef BOUNDINGOBJECT_IGNORE 139 else if (value == statisticsHolder->
m_ScalarMin[t])
155 else if (value == statisticsHolder->
m_ScalarMax[t])
163 #ifdef BOUNDINGOBJECT_IGNORE 178 template <
typename ItkImageType>
179 void mitk::_ComputeExtremaInItkVectorImage(
const ItkImageType *itkImage,
182 unsigned int component)
184 typename ItkImageType::RegionType region;
185 region = itkImage->GetBufferedRegion();
186 if (region.Crop(itkImage->GetRequestedRegion()) ==
false)
188 if (region != itkImage->GetRequestedRegion())
191 itk::ImageRegionConstIterator<ItkImageType> it(itkImage, region);
193 if (statisticsHolder ==
nullptr || !statisticsHolder->
IsValidTimeStep(t))
195 statisticsHolder->
Expand(t + 1);
201 itk::NumericTraits<ScalarType>::NonpositiveMin();
203 while (!it.IsAtEnd())
205 double value = it.Get()[component];
206 #ifdef BOUNDINGOBJECT_IGNORE 217 else if (value == statisticsHolder->
m_ScalarMin[t])
233 else if (value == statisticsHolder->
m_ScalarMax[t])
241 #ifdef BOUNDINGOBJECT_IGNORE 283 if (timeSelector.IsNotNull())
285 timeSelector->SetTimeNr(t);
286 timeSelector->UpdateLargestPossibleRegion();
291 else if (pType.
GetPixelType() == itk::ImageIOBase::VECTOR &&
296 if (timeSelector.IsNotNull())
298 timeSelector->SetTimeNr(t);
299 timeSelector->UpdateLargestPossibleRegion();
friend void _ComputeExtremaInItkVectorImage(const ItkImageType *itkImage, mitk::ImageStatisticsHolder *statisticsHolder, int t, unsigned int component)
virtual ScalarType GetScalarValue2ndMin(int t=0, unsigned int component=0)
Get the second smallest value for scalar images. Recomputation performed only when necessary...
virtual void ResetImageStatistics()
const mitk::PixelType GetPixelType(int n=0) const
Returns the PixelType of channel n.
vcl_size_t GetNumberOfComponents() const
Get the number of components of which each element consists.
virtual ScalarType GetScalarValue2ndMax(int t=0, unsigned int component=0)
Get the second largest value for scalar images.
itk::Object::Pointer m_HistogramGeneratorObject
std::vector< unsigned int > m_CountOfMaxValuedVoxels
std::vector< unsigned int > m_CountOfMinValuedVoxels
virtual void ComputeImageStatistics(int t=0, unsigned int component=0)
virtual void Expand(unsigned int timeSteps)
virtual T GetValue() const
itk::TimeStamp m_LastRecomputeTimeStamp
virtual ScalarType GetScalarValueMin(int t=0, unsigned int component=0)
Get the minimum for scalar images. Recomputation performed only when necessary.
virtual void SetTimeNr(int _arg)
ImageStatisticsHolder(mitk::Image *image)
#define AccessVectorPixelTypeByItk_n(mitkImage, itkImageTypeFunction, va_tuple)
Access a vector mitk::Image by an ITK vector image with one or more parameters.
friend void _ComputeExtremaInItkImage(const ItkImageType *itkImage, mitk::ImageStatisticsHolder *statisticsHolder, int t)
virtual ScalarType GetScalarValueMax(int t=0, unsigned int component=0)
Get the maximum for scalar images. Recomputation performed only when necessary.
Image class for storing images.
Provides access to a volume at a specific time of the input image.
itk::ImageIOBase::IOPixelType GetPixelType() const
mitk::Image::Pointer image
unsigned long GetMTime() const override
Get the modified time of the last change of the contents this data object or its geometry.
bool IsValidTimeStep(int t) const
virtual void SetImage(mitk::Image::ConstPointer _arg)
mitk::BaseProperty::Pointer GetProperty(const char *propertyKey) const
Get the property (instance of BaseProperty) with key propertyKey from the PropertyList, and set it to this, respectively;.
Class holding the statistics informations about a single mitk::Image.
virtual bool IsValidTimeStep(int t) const
ImageTimeSelector::Pointer GetTimeSelector()
virtual ~ImageStatisticsHolder()
void Expand(unsigned int timeSteps) override
Expands the TimeGeometry to a number of TimeSteps.
std::vector< ScalarType > m_ScalarMax
OutputType * GetOutput()
Get the output data of this image source object.
#define AccessByItk_2(mitkImage, itkImageTypeFunction, arg1, arg2)
itk::Statistics::Histogram< double > HistogramType
Provides an easy way to calculate an itk::Histogram for a mitk::Image.
std::vector< ScalarType > m_Scalar2ndMin
mitk::ScalarType GetCountOfMinValuedVoxels(int t=0, unsigned int component=0)
Get the count of voxels with the smallest scalar value in the dataset.
mitk::ScalarType GetCountOfMaxValuedVoxels(int t=0, unsigned int component=0)
Get the count of voxels with the largest scalar value in the dataset.
std::vector< ScalarType > m_Scalar2ndMax
Class for defining the data type of pixels.
std::vector< ScalarType > m_ScalarMin
virtual const HistogramType * GetScalarHistogram(int t=0, unsigned int=0)