18 #ifndef itkTikhonovDeconvolutionImageFilter_h
19 #define itkTikhonovDeconvolutionImageFilter_h
50 template <
typename TInputImage,
51 typename TKernelImage = TInputImage,
52 typename TOutputImage = TInputImage,
53 typename TInternalPrecision =
double>
73 static constexpr
unsigned int ImageDimension = TInputImage::ImageDimension;
103 itkSetMacro(RegularizationConstant,
double);
104 itkGetConstMacro(RegularizationConstant,
double);
113 GenerateData()
override;
116 PrintSelf(std::ostream & os,
Indent indent)
const override;
124 template <
typename TInput1,
typename TInput2,
typename TOutput>
131 : m_RegularizationConstant(f.m_RegularizationConstant)
132 , m_KernelZeroMagnitudeThreshold(f.m_KernelZeroMagnitudeThreshold)
144 return !(*
this != other);
149 typename TOutput::value_type normH = std::norm(H);
150 typename TOutput::value_type denominator = normH + m_RegularizationConstant;
152 if (denominator >= m_KernelZeroMagnitudeThreshold)
154 value = static_cast<TOutput>(I * (std::conj(H) / denominator));
165 m_RegularizationConstant = constant;
170 return m_RegularizationConstant;
179 m_KernelZeroMagnitudeThreshold = mu;
184 return m_KernelZeroMagnitudeThreshold;
189 double m_RegularizationConstant = 0.0;
190 double m_KernelZeroMagnitudeThreshold = 0.0;
196 #ifndef ITK_MANUAL_INSTANTIATION
197 # include "itkTikhonovDeconvolutionImageFilter.hxx"