18 #ifndef itkImplicitManifoldNormalVectorFilter_h
19 #define itkImplicitManifoldNormalVectorFilter_h
72 template <
typename TInputImage,
typename TSparseOutputImage>
93 static constexpr
unsigned int ImageDimension = Superclass::ImageDimension;
96 using typename Superclass::InputImageType;
99 using typename Superclass::NodeValueType;
100 using typename Superclass::FiniteDifferenceFunctionType;
102 using typename Superclass::SparseOutputImageType;
104 using typename Superclass::NodeListType;
114 using RadiusType =
typename FiniteDifferenceFunctionType::RadiusType;
120 itkSetMacro(MaxIteration,
unsigned int);
121 itkGetConstMacro(MaxIteration,
unsigned int);
122 itkSetMacro(IsoLevelLow, NodeValueType);
123 itkGetConstMacro(IsoLevelLow, NodeValueType);
124 itkSetMacro(IsoLevelHigh, NodeValueType);
125 itkGetConstMacro(IsoLevelHigh, NodeValueType);
126 itkSetMacro(MinVectorNorm, NodeValueType);
127 itkGetConstMacro(MinVectorNorm, NodeValueType);
128 itkSetMacro(UnsharpMaskingFlag,
bool);
129 itkGetConstMacro(UnsharpMaskingFlag,
bool);
130 itkSetMacro(UnsharpMaskingWeight, NodeValueType);
131 itkGetConstMacro(UnsharpMaskingWeight, NodeValueType);
137 PrintSelf(std::ostream & os,
Indent indent)
const override;
141 Initialize()
override;
163 if (this->GetElapsedIterations() == m_MaxIteration)
179 return (data / (m_MinVectorNorm + data.GetNorm()));
186 PostProcessOutput()
override;
193 unsigned int m_MaxIteration{};
200 NodeValueType m_MinVectorNorm{};
203 bool m_UnsharpMaskingFlag{};
207 NodeValueType m_UnsharpMaskingWeight{};
210 unsigned long m_Indicator[Self::ImageDimension]{};
211 unsigned int m_NumVertex{};
212 NodeValueType m_DimConst{};
213 NodeValueType m_DimConst2{};
218 #ifndef ITK_MANUAL_INSTANTIATION
219 # include "itkImplicitManifoldNormalVectorFilter.hxx"