Loading [MathJax]/extensions/tex2jax.js
ITK 6.0.0
Insight Toolkit
 
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
Loading...
Searching...
No Matches
itkCurvatureFlowImageFilter.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#ifndef itkCurvatureFlowImageFilter_h
19#define itkCurvatureFlowImageFilter_h
20
23
24namespace itk
25{
91template <typename TInputImage, typename TOutputImage>
92class ITK_TEMPLATE_EXPORT CurvatureFlowImageFilter : public DenseFiniteDifferenceImageFilter<TInputImage, TOutputImage>
93{
94public:
95 ITK_DISALLOW_COPY_AND_MOVE(CurvatureFlowImageFilter);
96
102
104 itkNewMacro(Self);
105
107 itkOverrideGetNameOfClassMacro(CurvatureFlowImageFilter);
108
110 using typename Superclass::InputImageType;
111
113 using typename Superclass::OutputImageType;
114 using OutputImagePointer = typename OutputImageType::Pointer;
115
118
121
124 static constexpr unsigned int ImageDimension = Superclass::ImageDimension;
125
128 using typename Superclass::PixelType;
129
131 using typename Superclass::TimeStepType;
132
134 itkSetMacro(TimeStep, TimeStepType);
135
137 itkGetConstMacro(TimeStep, TimeStepType);
138
139 itkConceptMacro(DoubleConvertibleToOutputCheck, (Concept::Convertible<double, PixelType>));
140 itkConceptMacro(OutputConvertibleToDoubleCheck, (Concept::Convertible<PixelType, double>));
141 itkConceptMacro(OutputDivisionOperatorsCheck, (Concept::DivisionOperators<PixelType>));
145 itkConceptMacro(OutputDoubleAdditiveOperatorsCheck, (Concept::AdditiveOperators<PixelType, double>));
146
147protected:
149 ~CurvatureFlowImageFilter() override = default;
150 void
151 PrintSelf(std::ostream & os, Indent indent) const override;
152
155 bool
156 Halt() override
157 {
158 if (this->GetElapsedIterations() == this->GetNumberOfIterations())
159 {
160 return true;
161 }
162
163 return false;
164 }
165
168 void
170
174 void
176
180 void
182
183private:
185};
186} // namespace itk
187
188#ifndef ITK_MANUAL_INSTANTIATION
189# include "itkCurvatureFlowImageFilter.hxx"
190#endif
191
192#endif
This class encapsulate the finite difference equation which drives a curvature flow denoising algorit...
typename FiniteDifferenceFunctionType::TimeStepType TimeStepType
void PrintSelf(std::ostream &os, Indent indent) const override
void EnlargeOutputRequestedRegion(DataObject *) override
void InitializeIteration() override
static constexpr unsigned int ImageDimension
DenseFiniteDifferenceImageFilter< TInputImage, TOutputImage > Superclass
typename OutputImageType::Pointer OutputImagePointer
CurvatureFlowFunction< OutputImageType > CurvatureFlowFunctionType
~CurvatureFlowImageFilter() override=default
void GenerateInputRequestedRegion() override
Base class for all data objects in ITK.
typename FiniteDifferenceFunctionType::TimeStepType TimeStepType
FiniteDifferenceFunction< TOutputImage > FiniteDifferenceFunctionType
virtual const IdentifierType & GetNumberOfIterations() const
virtual const IdentifierType & GetElapsedIterations() const
Control indentation during Print() invocation.
Definition itkIndent.h:50
Implements transparent reference counting.
#define itkConceptMacro(name, concept)
The "itk" namespace contains all Insight Segmentation and Registration Toolkit (ITK) classes....