ITK  5.0.0
Insight Segmentation and Registration Toolkit
itkMinMaxCurvatureFlowImageFilter.h
Go to the documentation of this file.
1 /*=========================================================================
2  *
3  * Copyright Insight Software Consortium
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  * http://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 itkMinMaxCurvatureFlowImageFilter_h
19 #define itkMinMaxCurvatureFlowImageFilter_h
20 
23 
24 namespace itk
25 {
76 template< typename TInputImage, typename TOutputImage >
77 class ITK_TEMPLATE_EXPORT MinMaxCurvatureFlowImageFilter:
78  public CurvatureFlowImageFilter< TInputImage, TOutputImage >
79 {
80 public:
81  ITK_DISALLOW_COPY_AND_ASSIGN(MinMaxCurvatureFlowImageFilter);
82 
88 
90  itkNewMacro(Self);
91 
94 
96  using FiniteDifferenceFunctionType = typename Superclass::FiniteDifferenceFunctionType;
97  using OutputImageType = typename Superclass::OutputImageType;
98 
101 
104  static constexpr unsigned int ImageDimension = Superclass::ImageDimension;
105 
107  using RadiusType = typename FiniteDifferenceFunctionType::RadiusType;
109 
111  itkSetMacro(StencilRadius, RadiusValueType);
112  itkGetConstMacro(StencilRadius, RadiusValueType);
114 
115 #ifdef ITK_USE_CONCEPT_CHECKING
116  // Begin concept checking
117  itkConceptMacro( UnsignedLongConvertibleToOutputCheck,
119  itkConceptMacro( OutputLessThanComparableCheck,
121  itkConceptMacro( LongConvertibleToOutputCheck,
123  itkConceptMacro( OutputDoubleComparableCheck,
125  itkConceptMacro( OutputDoubleMultiplyAndAssignOperatorCheck,
126  ( Concept::MultiplyAndAssignOperator< typename TOutputImage::PixelType,
127  double > ) );
128  itkConceptMacro( OutputGreaterThanUnsignedLongCheck,
129  ( Concept::GreaterThanComparable< typename TOutputImage::PixelType,
130  unsigned long > ) );
131  itkConceptMacro( UnsignedLongOutputAditiveOperatorsCheck,
132  ( Concept::AdditiveOperators< unsigned long,
133  typename TOutputImage::PixelType > ) );
134  // End concept checking
135 #endif
136 
137 protected:
139  ~MinMaxCurvatureFlowImageFilter() override = default;
140  void PrintSelf(std::ostream & os, Indent indent) const override;
141 
144  void InitializeIteration() override;
145 
146 private:
148 };
149 } // end namspace itk
150 
151 #ifndef ITK_MANUAL_INSTANTIATION
152 #include "itkMinMaxCurvatureFlowImageFilter.hxx"
153 #endif
154 
155 #endif
unsigned long SizeValueType
Definition: itkIntTypes.h:83
typename RadiusType::SizeValueType RadiusValueType
The base class for all process objects (source, filters, mappers) in the Insight data processing pipe...
Base class for all process objects that output image data.
TOutputImage OutputImageType
Denoise an image using min/max curvature flow.
typename Superclass::FiniteDifferenceFunctionType FiniteDifferenceFunctionType
Control indentation during Print() invocation.
Definition: itkIndent.h:49
typename FiniteDifferenceFunctionType::RadiusType RadiusType
#define itkConceptMacro(name, concept)
Denoise an image using curvature driven flow.