ITK 6.0.0
Insight Toolkit
 
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);
97
103
105 itkNewMacro(Self);
106
108 itkOverrideGetNameOfClassMacro(CurvatureFlowImageFilter);
109
111 using typename Superclass::InputImageType;
112
114 using typename Superclass::OutputImageType;
115 using OutputImagePointer = typename OutputImageType::Pointer;
116
119
122
125 static constexpr unsigned int ImageDimension = Superclass::ImageDimension;
126
129 using typename Superclass::PixelType;
130
132 using typename Superclass::TimeStepType;
133
135 itkSetMacro(TimeStep, TimeStepType);
136
138 itkGetConstMacro(TimeStep, TimeStepType);
139
140 itkConceptMacro(DoubleConvertibleToOutputCheck, (Concept::Convertible<double, PixelType>));
141 itkConceptMacro(OutputConvertibleToDoubleCheck, (Concept::Convertible<PixelType, double>));
142 itkConceptMacro(OutputDivisionOperatorsCheck, (Concept::DivisionOperators<PixelType>));
146 itkConceptMacro(OutputDoubleAdditiveOperatorsCheck, (Concept::AdditiveOperators<PixelType, double>));
147
148protected:
150 ~CurvatureFlowImageFilter() override = default;
151 void
152 PrintSelf(std::ostream & os, Indent indent) const override;
153
156 bool
157 Halt() override
158 {
159 if (this->GetElapsedIterations() == this->GetNumberOfIterations())
160 {
161 return true;
162 }
163
164 return false;
165 }
166
169 void
171
175 void
177
181 void
183
184private:
186};
187} // namespace itk
188
189#ifndef ITK_MANUAL_INSTANTIATION
190# include "itkCurvatureFlowImageFilter.hxx"
191#endif
192
193#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....