Medical Imaging Interaction Toolkit  2024.12.00
Medical Imaging Interaction Toolkit
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
mitkImageStatisticsContainer.h
Go to the documentation of this file.
1 /*============================================================================
2 
3 The Medical Imaging Interaction Toolkit (MITK)
4 
5 Copyright (c) German Cancer Research Center (DKFZ)
6 All rights reserved.
7 
8 Use of this source code is governed by a 3-clause BSD license that can be
9 found in the LICENSE file.
10 
11 ============================================================================*/
12 
13 #ifndef mitkImageStatisticsContainer_h
14 #define mitkImageStatisticsContainer_h
15 
17 #include <mitkBaseData.h>
18 #include <itkHistogram.h>
19 #include <mitkLabelSetImage.h>
21 
22 #include <boost/variant.hpp>
23 
24 namespace mitk
25 {
26 
35  {
36  public:
38  itkFactorylessNewMacro(Self);
39  itkCloneMacro(Self);
40 
41  using HistogramType = itk::Statistics::Histogram<double>;
43 
45 
46  bool RequestedRegionIsOutsideOfTheBufferedRegion() override { return false; }
47 
48  bool VerifyRequestedRegion() override { return true; }
49 
50  void SetRequestedRegion(const itk::DataObject*) override {}
51 
58  public:
60 
61  using RealType = double;
62  using IndexType = vnl_vector<int>;
63  using VoxelCountType = unsigned long;
64 
65  using StatisticsVariantType = boost::variant<RealType, VoxelCountType, IndexType >;
66 
71  void AddStatistic(const std::string_view key, StatisticsVariantType value);
72 
73  using StatisticNameVector = std::vector<std::string>;
74 
79  static const StatisticNameVector& GetDefaultStatisticNames();
80 
84  const StatisticNameVector& GetCustomStatisticNames() const;
85 
91 
92  StatisticNameVector GetExistingStatisticNames() const;
93 
94  bool HasStatistic(const std::string_view name) const;
95 
101  template <typename TType>
102  TType GetValueConverted(const std::string_view name) const
103  {
104  auto value = GetValueNonConverted(name);
105  return boost::get<TType>(value);
106  }
107 
112  StatisticsVariantType GetValueNonConverted(const std::string_view name) const;
113 
114  void Reset();
115 
116  HistogramType::ConstPointer m_Histogram=nullptr;
117  private:
118 
119  using StatisticsMapType = std::map < std::string, StatisticsVariantType, std::less<>>;
120 
121  StatisticsMapType m_Statistics;
122  StatisticNameVector m_CustomNames;
123  static const StatisticNameVector m_DefaultNames;
124  };
125 
130 
131  using TimeStepVectorType = std::vector<TimeStepType>;
132  TimeStepVectorType GetExistingTimeSteps(LabelValueType labelValue) const;
133 
135  static constexpr LabelValueType NO_MASK_LABEL_VALUE = Label::UNLABELED_VALUE;
137  LabelValueVectorType GetExistingLabelValues() const;
138 
141  void Reset();
142 
143  const ImageStatisticsObject& GetStatistics(LabelValueType labelValue, TimeStepType timeStep) const;
144 
149  void SetStatistics(LabelValueType labelValue, TimeStepType timeStep, const ImageStatisticsObject& statistics);
150 
155  bool StatisticsExist(LabelValueType labelValue, TimeStepType timeStep) const;
156 
160  const HistogramType* GetHistogram(LabelValueType labelValue, TimeStepType timeStep) const;
161 
162  bool IgnoresZeroVoxel() const;
163 
164  bool IsWIP() const;
165 
166  protected:
168  void PrintSelf(std::ostream &os, itk::Indent indent) const override;
169 
170  private:
171  itk::LightObject::Pointer InternalClone() const override;
172 
173  using TimeStepMapType = std::map<TimeStepType, ImageStatisticsObject>;
174  using LabelMapType = std::map<LabelValueType, TimeStepMapType>;
175 
176  LabelMapType m_LabelTimeStep2StatisticsMap;
177  };
178 
181 }
182 #endif
mitk::ImageStatisticsContainer::TimeStepVectorType
std::vector< TimeStepType > TimeStepVectorType
Definition: mitkImageStatisticsContainer.h:131
mitk::ImageStatisticsContainer::ImageStatisticsObject::IndexType
vnl_vector< int > IndexType
Definition: mitkImageStatisticsContainer.h:62
mitk::ImageStatisticsContainer::ImageStatisticsObject::RealType
double RealType
Definition: mitkImageStatisticsContainer.h:61
mitk::ImageStatisticsContainer::IndexType
ImageStatisticsObject::IndexType IndexType
Definition: mitkImageStatisticsContainer.h:128
mitk::GetAllStatisticNames
MITKIMAGESTATISTICS_EXPORT ImageStatisticsContainer::ImageStatisticsObject::StatisticNameVector GetAllStatisticNames(const ImageStatisticsContainer *container)
mitk::ImageStatisticsContainer::ImageStatisticsObject::VoxelCountType
unsigned long VoxelCountType
Definition: mitkImageStatisticsContainer.h:63
mitk::ImageStatisticsContainer::VerifyRequestedRegion
bool VerifyRequestedRegion() override
Verify that the RequestedRegion is within the LargestPossibleRegion.
Definition: mitkImageStatisticsContainer.h:48
mitk::ImageStatisticsContainer::VoxelCountType
ImageStatisticsObject::VoxelCountType VoxelCountType
Definition: mitkImageStatisticsContainer.h:129
mitk::ImageStatisticsContainer::RealType
ImageStatisticsObject::RealType RealType
Definition: mitkImageStatisticsContainer.h:127
mitk::ImageStatisticsContainer::LabelValueType
LabelSetImage::LabelValueType LabelValueType
Definition: mitkImageStatisticsContainer.h:42
mitk
Find image slices visible on a given plane.
Definition: RenderingTests.dox:1
mitk::ImageStatisticsContainer::SetRequestedRegionToLargestPossibleRegion
void SetRequestedRegionToLargestPossibleRegion() override
Set the RequestedRegion to the LargestPossibleRegion.
Definition: mitkImageStatisticsContainer.h:44
mitk::ImageStatisticsContainer
Container class for storing a StatisticsObject for each time step.
Definition: mitkImageStatisticsContainer.h:34
MITKIMAGESTATISTICS_EXPORT
#define MITKIMAGESTATISTICS_EXPORT
Definition: MitkImageStatisticsExports.h:15
mitk::ImageStatisticsContainer::SetRequestedRegion
void SetRequestedRegion(const itk::DataObject *) override
Set the requested region from this data object to match the requested region of the data object passe...
Definition: mitkImageStatisticsContainer.h:50
mitk::BaseData
Base of all data objects.
Definition: mitkBaseData.h:42
mitk::ImageStatisticsContainer::ImageStatisticsObject::GetValueConverted
TType GetValueConverted(const std::string_view name) const
Converts the requested value to the defined type.
Definition: mitkImageStatisticsContainer.h:102
mitk::ImageStatisticsContainer::ImageStatisticsObject
Container class for storing the computed image statistics.
Definition: mitkImageStatisticsContainer.h:57
mitk::Label::UNLABELED_VALUE
static constexpr PixelType UNLABELED_VALUE
Definition: mitkLabel.h:43
mitk::ImageStatisticsContainer::HistogramType
itk::Statistics::Histogram< double > HistogramType
Definition: mitkImageStatisticsContainer.h:41
mitk::TimeStepType
std::size_t TimeStepType
Definition: mitkTimeGeometry.h:27
mitk::ImageStatisticsContainer::StatisticsVariantType
ImageStatisticsObject::StatisticsVariantType StatisticsVariantType
Definition: mitkImageStatisticsContainer.h:126
mitkBaseData.h
mitkImageStatisticsConstants.h
mitkClassMacro
#define mitkClassMacro(className, SuperClassName)
Definition: mitkCommon.h:36
mitk::ImageStatisticsContainer::RequestedRegionIsOutsideOfTheBufferedRegion
bool RequestedRegionIsOutsideOfTheBufferedRegion() override
Determine whether the RequestedRegion is outside of the BufferedRegion.
Definition: mitkImageStatisticsContainer.h:46
mitk::ImageStatisticsContainer::LabelValueVectorType
LabelSetImage::LabelValueVectorType LabelValueVectorType
Definition: mitkImageStatisticsContainer.h:136
MitkImageStatisticsExports.h
mitk::ImageStatisticsContainer::ImageStatisticsObject::StatisticsVariantType
boost::variant< RealType, VoxelCountType, IndexType > StatisticsVariantType
Definition: mitkImageStatisticsContainer.h:65
mitk::ImageStatisticsContainer::ImageStatisticsObject::StatisticNameVector
std::vector< std::string > StatisticNameVector
Definition: mitkImageStatisticsContainer.h:73
mitk::LabelSetImage::LabelValueVectorType
std::vector< LabelValueType > LabelValueVectorType
Definition: mitkLabelSetImage.h:78
mitk::LabelSetImage::LabelValueType
mitk::Label::PixelType LabelValueType
Definition: mitkLabelSetImage.h:75
mitkLabelSetImage.h