Medical Imaging Interaction Toolkit  2023.04.00
Medical Imaging Interaction Toolkit
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
mitkThresholdSplit.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 mitkThresholdSplit_h
14 #define mitkThresholdSplit_h
15 
16 #include <vigra/multi_array.hxx>
17 #include <vigra/random_forest.hxx>
18 #include <mitkAdditionalRFData.h>
19 
20 namespace mitk
21 {
22  template<class TColumnDecisionFunctor, class TFeatureCalculator, class TTag = vigra::ClassificationTag>
23  class ThresholdSplit: public vigra::SplitBase<TTag>
24  {
25  public:
27 // ThresholdSplit(const ThresholdSplit & other);
28 
29  void SetFeatureCalculator(TFeatureCalculator processor);
30  TFeatureCalculator GetFeatureCalculator() const;
31 
32  void SetCalculatingFeature(bool calculate);
33  bool IsCalculatingFeature() const;
34 
35  void UsePointBasedWeights(bool weightsOn);
36  bool IsUsingPointBasedWeights() const;
37 
38  void UseRandomSplit(bool split) {m_UseRandomSplit = split;}
39  bool IsUsingRandomSplit() const { return m_UseRandomSplit; }
40 
41  void SetPrecision(double value);
42  double GetPrecision() const;
43 
44  void SetMaximumTreeDepth(int value);
45  int GetMaximumTreeDepth() const override;
46 
49 
50  void SetWeights(vigra::MultiArrayView<2, double> weights);
51  vigra::MultiArrayView<2, double> GetWeights() const;
52 
53  // From vigra::ThresholdSplit
54  double minGini() const;
55  int bestSplitColumn() const;
56  double bestSplitThreshold() const;
57 
58  template<class T>
59  void set_external_parameters(vigra::ProblemSpec<T> const & in);
60 
61  template<class T, class C, class T2, class C2, class Region, class Random>
62  int findBestSplit(vigra::MultiArrayView<2, T, C> features,
63  vigra::MultiArrayView<2, T2, C2> labels,
64  Region & region,
65  vigra::ArrayVector<Region>& childRegions,
66  Random & randint);
67 
68  double region_gini_;
69 
70  private:
71 
72  // From vigra::ThresholdSplit
73  typedef vigra::SplitBase<TTag> SB;
74 
75  // splitter parameters (used by copy constructor)
76  bool m_CalculatingFeature;
77  bool m_UseWeights;
78  bool m_UseRandomSplit;
79  double m_Precision;
80  int m_MaximumTreeDepth;
81  TFeatureCalculator m_FeatureCalculator;
82  vigra::MultiArrayView<2, double> m_Weights;
83 
84  // variabels to work with
85  vigra::ArrayVector<vigra::Int32> splitColumns;
86  TColumnDecisionFunctor bgfunc;
87  vigra::ArrayVector<double> min_gini_;
88  vigra::ArrayVector<std::ptrdiff_t> min_indices_;
89  vigra::ArrayVector<double> min_thresholds_;
90  int bestSplitIndex;
91  AdditionalRFDataAbstract* m_AdditionalData;
92 
93  };
94 }
95 
96 
97 #include <../src/Splitter/mitkThresholdSplit.cpp>
98 #endif
mitk::ThresholdSplit::IsCalculatingFeature
bool IsCalculatingFeature() const
mitk::ThresholdSplit::SetMaximumTreeDepth
void SetMaximumTreeDepth(int value)
mitkAdditionalRFData.h
mitk::ThresholdSplit::region_gini_
double region_gini_
Definition: mitkThresholdSplit.h:68
mitk::ThresholdSplit::minGini
double minGini() const
mitk::ThresholdSplit::SetPrecision
void SetPrecision(double value)
mitk::ThresholdSplit::GetWeights
vigra::MultiArrayView< 2, double > GetWeights() const
mitk::ThresholdSplit::SetWeights
void SetWeights(vigra::MultiArrayView< 2, double > weights)
mitk::ThresholdSplit::GetAdditionalData
AdditionalRFDataAbstract * GetAdditionalData() const
mitk
DataCollection - Class to facilitate loading/accessing structured data.
Definition: RenderingTests.dox:1
mitk::ThresholdSplit::SetCalculatingFeature
void SetCalculatingFeature(bool calculate)
mitk::ThresholdSplit::SetAdditionalData
void SetAdditionalData(AdditionalRFDataAbstract *data)
mitk::AdditionalRFDataAbstract
Definition: mitkAdditionalRFData.h:21
mitk::ThresholdSplit::ThresholdSplit
ThresholdSplit()
mitk::ThresholdSplit::UseRandomSplit
void UseRandomSplit(bool split)
Definition: mitkThresholdSplit.h:38
mitk::ThresholdSplit::GetFeatureCalculator
TFeatureCalculator GetFeatureCalculator() const
mitk::ThresholdSplit::findBestSplit
int findBestSplit(vigra::MultiArrayView< 2, T, C > features, vigra::MultiArrayView< 2, T2, C2 > labels, Region &region, vigra::ArrayVector< Region > &childRegions, Random &randint)
mitk::ThresholdSplit::SetFeatureCalculator
void SetFeatureCalculator(TFeatureCalculator processor)
mitk::ThresholdSplit::IsUsingRandomSplit
bool IsUsingRandomSplit() const
Definition: mitkThresholdSplit.h:39
mitk::ThresholdSplit::bestSplitColumn
int bestSplitColumn() const
mitk::ThresholdSplit
Definition: mitkThresholdSplit.h:23
mitk::ThresholdSplit::UsePointBasedWeights
void UsePointBasedWeights(bool weightsOn)
mitk::ThresholdSplit::set_external_parameters
void set_external_parameters(vigra::ProblemSpec< T > const &in)
mitk::ThresholdSplit::GetMaximumTreeDepth
int GetMaximumTreeDepth() const override
mitk::ThresholdSplit::GetPrecision
double GetPrecision() const
mitk::ThresholdSplit::IsUsingPointBasedWeights
bool IsUsingPointBasedWeights() const
mitk::ThresholdSplit::bestSplitThreshold
double bestSplitThreshold() const