ITK  6.0.0
Insight Toolkit
itkIntermodesThresholdCalculator.h
Go to the documentation of this file.
1/*=========================================================================
2 *
3 * Copyright NumFOCUS
4 *
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
8 *
9 * https://www.apache.org/licenses/LICENSE-2.0.txt
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 *
17 *=========================================================================*/
18
19#ifndef itkIntermodesThresholdCalculator_h
20#define itkIntermodesThresholdCalculator_h
21
23
24namespace itk
25{
26
55template <typename THistogram, typename TOutput = double>
56class ITK_TEMPLATE_EXPORT IntermodesThresholdCalculator : public HistogramThresholdCalculator<THistogram, TOutput>
57{
58public:
59 ITK_DISALLOW_COPY_AND_MOVE(IntermodesThresholdCalculator);
60
66
68 itkNewMacro(Self);
69
71 itkOverrideGetNameOfClassMacro(IntermodesThresholdCalculator);
72
74 using HistogramType = THistogram;
75 using OutputType = TOutput;
76
77 using InstanceIdentifier = typename HistogramType::InstanceIdentifier;
78
79 itkSetMacro(MaximumSmoothingIterations, SizeValueType);
80 itkGetConstMacro(MaximumSmoothingIterations, SizeValueType);
81
84 itkSetMacro(UseInterMode, bool);
85 itkGetConstMacro(UseInterMode, bool);
86 itkBooleanMacro(UseInterMode);
89protected:
91 {
92 m_MaximumSmoothingIterations = 10000;
93 m_UseInterMode = true;
94 }
95
96 ~IntermodesThresholdCalculator() override = default;
97
98 void
99 GenerateData() override;
100 void
101 PrintSelf(std::ostream & os, Indent indent) const override;
102
103 using TotalAbsoluteFrequencyType = typename HistogramType::TotalAbsoluteFrequencyType;
104 using AbsoluteFrequencyType = typename HistogramType::AbsoluteFrequencyType;
105
106private:
107 bool
108 BimodalTest(const std::vector<double> & h);
109
110 SizeValueType m_MaximumSmoothingIterations{};
111 bool m_UseInterMode{};
112};
113
114} // end namespace itk
115
116
117#ifndef ITK_MANUAL_INSTANTIATION
118# include "itkIntermodesThresholdCalculator.hxx"
119#endif
120
121#endif
Base class to compute a threshold value based on the histogram of an image.
Control indentation during Print() invocation.
Definition: itkIndent.h:50
Computes the Intermodes's threshold for an image.
typename HistogramType::TotalAbsoluteFrequencyType TotalAbsoluteFrequencyType
~IntermodesThresholdCalculator() override=default
typename HistogramType::AbsoluteFrequencyType AbsoluteFrequencyType
void PrintSelf(std::ostream &os, Indent indent) const override
bool BimodalTest(const std::vector< double > &h)
typename HistogramType::InstanceIdentifier InstanceIdentifier
Light weight base class for most itk classes.
The "itk" namespace contains all Insight Segmentation and Registration Toolkit (ITK) classes....
unsigned long SizeValueType
Definition: itkIntTypes.h:86