ITK 6.0.0
Insight Toolkit
 
Loading...
Searching...
No Matches
itkAnisotropicDiffusionFunction.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 itkAnisotropicDiffusionFunction_h
19#define itkAnisotropicDiffusionFunction_h
20
22
23namespace itk
24{
135template <typename TImage>
136class ITK_TEMPLATE_EXPORT AnisotropicDiffusionFunction : public FiniteDifferenceFunction<TImage>
137{
138public:
139 ITK_DISALLOW_COPY_AND_MOVE(AnisotropicDiffusionFunction);
141
147
149 itkOverrideGetNameOfClassMacro(AnisotropicDiffusionFunction);
150
152 using typename Superclass::ImageType;
153 using typename Superclass::PixelType;
155 using typename Superclass::RadiusType;
156 using typename Superclass::NeighborhoodType;
157 using typename Superclass::TimeStepType;
158 using typename Superclass::FloatOffsetType;
159
161 static constexpr unsigned int ImageDimension = Superclass::ImageDimension;
162
168 virtual void
170
174 void
176 {
177 m_TimeStep = t;
178 }
179
180 const TimeStepType &
182 {
183 return m_TimeStep;
184 }
185
187 void
189 {
191 }
192
193 const double &
195 {
197 }
198
200 const double &
205
206 void
211
214 TimeStepType
215 ComputeGlobalTimeStep(void * itkNotUsed(GlobalData)) const override
216 {
217 return this->GetTimeStep();
218 }
219
222 void *
223 GetGlobalDataPointer() const override
224 {
225 return nullptr;
226 }
227
229 void
230 ReleaseGlobalDataPointer(void * itkNotUsed(GlobalData)) const override
231 {
232 /* do nothing */
233 }
234
235protected:
237 {
239 m_ConductanceParameter = 1.0; // default value
240 m_TimeStep = 0.125f; // default value
241 }
242
243 ~AnisotropicDiffusionFunction() override = default;
244
245 void
246 PrintSelf(std::ostream & os, Indent indent) const override
247 {
248 Superclass::PrintSelf(os, indent);
249 os << indent << "TimeStep: " << m_TimeStep << std::endl;
250 os << indent << "ConductanceParameter: " << m_ConductanceParameter << std::endl;
251 }
252
253private:
257};
258} // end namespace itk
259
260#endif
typename Superclass::PixelRealType PixelrealType
void PrintSelf(std::ostream &os, Indent indent) const override
virtual void CalculateAverageGradientMagnitudeSquared(ImageType *)=0
void ReleaseGlobalDataPointer(void *GlobalData) const override
FiniteDifferenceFunction< TImage > Superclass
TimeStepType ComputeGlobalTimeStep(void *GlobalData) const override
~AnisotropicDiffusionFunction() override=default
ConstNeighborhoodIterator< TImage, DefaultBoundaryConditionType > NeighborhoodType
Vector< float, Self::ImageDimension > FloatOffsetType
void PrintSelf(std::ostream &os, Indent indent) const override
typename ConstNeighborhoodIterator< TImage >::RadiusType RadiusType
Control indentation during Print() invocation.
Definition itkIndent.h:50
Implements transparent reference counting.
The "itk" namespace contains all Insight Segmentation and Registration Toolkit (ITK) classes....