ITK  5.4.0
Insight Toolkit
itkAnisotropicDiffusionImageFilter.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 itkAnisotropicDiffusionImageFilter_h
19 #define itkAnisotropicDiffusionImageFilter_h
20 
23 #include "itkNumericTraits.h"
24 
25 namespace itk
26 {
72 template <typename TInputImage, typename TOutputImage>
73 class ITK_TEMPLATE_EXPORT AnisotropicDiffusionImageFilter
74  : public DenseFiniteDifferenceImageFilter<TInputImage, TOutputImage>
75 {
76 public:
77  ITK_DISALLOW_COPY_AND_MOVE(AnisotropicDiffusionImageFilter);
78 
84 
86  itkOverrideGetNameOfClassMacro(AnisotropicDiffusionImageFilter);
87 
89  using typename Superclass::InputImageType;
90  using typename Superclass::OutputImageType;
91  using typename Superclass::UpdateBufferType;
92 
95  static constexpr unsigned int ImageDimension = Superclass::ImageDimension;
96 
99  using typename Superclass::PixelType;
100  using typename Superclass::TimeStepType;
101 
103  itkSetMacro(TimeStep, TimeStepType);
104  itkGetConstMacro(TimeStep, TimeStepType);
109  itkSetMacro(ConductanceParameter, double);
110  itkGetConstMacro(ConductanceParameter, double);
115  itkSetMacro(ConductanceScalingUpdateInterval, unsigned int);
116  itkGetConstMacro(ConductanceScalingUpdateInterval, unsigned int);
121  itkSetMacro(ConductanceScalingParameter, double);
122  itkGetConstMacro(ConductanceScalingParameter, double);
132  void
134  {
135  m_FixedAverageGradientMagnitude = a;
136  this->Modified();
137  m_GradientMagnitudeIsFixed = true;
138  }
141  itkGetConstMacro(FixedAverageGradientMagnitude, double);
142 
143 protected:
145  ~AnisotropicDiffusionImageFilter() override = default;
146  void
147  PrintSelf(std::ostream & os, Indent indent) const override;
148 
151  // virtual bool Halt();
152 
154  void
155  InitializeIteration() override;
156 
157  bool m_GradientMagnitudeIsFixed{};
158 
159 private:
160  double m_ConductanceParameter{};
161  double m_ConductanceScalingParameter{};
162  unsigned int m_ConductanceScalingUpdateInterval{};
163  double m_FixedAverageGradientMagnitude{};
164 
165  TimeStepType m_TimeStep{};
166 };
167 } // namespace itk
168 
169 #ifndef ITK_MANUAL_INSTANTIATION
170 # include "itkAnisotropicDiffusionImageFilter.hxx"
171 #endif
172 
173 #endif
itkAnisotropicDiffusionFunction.h
itk::SmartPointer< Self >
itk::Indent
Control indentation during Print() invocation.
Definition: itkIndent.h:49
itk::DenseFiniteDifferenceImageFilter
Definition: itkDenseFiniteDifferenceImageFilter.h:70
itk::ImageSource
Base class for all process objects that output image data.
Definition: itkImageSource.h:67
itk::AnisotropicDiffusionImageFilter::SetFixedAverageGradientMagnitude
void SetFixedAverageGradientMagnitude(double a)
Definition: itkAnisotropicDiffusionImageFilter.h:133
itkDenseFiniteDifferenceImageFilter.h
itk
The "itk" namespace contains all Insight Segmentation and Registration Toolkit (ITK) classes....
Definition: itkAnnulusOperator.h:24
itk::ProcessObject
The base class for all process objects (source, filters, mappers) in the Insight data processing pipe...
Definition: itkProcessObject.h:139
itkNumericTraits.h
itk::AnisotropicDiffusionImageFilter
Definition: itkAnisotropicDiffusionImageFilter.h:73