18 #ifndef itkTikhonovDeconvolutionImageFilter_h
19 #define itkTikhonovDeconvolutionImageFilter_h
49 template<
typename TInputImage,
typename TKernelImage = TInputImage,
typename TOutputImage = TInputImage,
typename TInternalPrecision=
double >
69 itkStaticConstMacro(ImageDimension,
unsigned int,
70 TInputImage::ImageDimension);
100 itkSetMacro(RegularizationConstant,
double);
101 itkGetConstMacro(RegularizationConstant,
double);
109 void GenerateData() ITK_OVERRIDE;
111 virtual
void PrintSelf(std::ostream & os,
Indent indent) const ITK_OVERRIDE;
116 double m_RegularizationConstant;
121 template<
typename TInput1,
typename TInput2,
typename TOutput >
134 return !(*
this != other);
136 inline TOutput
operator()(
const TInput1 & I,
const TInput2 & H)
const
138 typename TOutput::value_type normH = std::norm( H );
139 typename TOutput::value_type denominator = normH + m_RegularizationConstant;
141 if ( denominator >= m_KernelZeroMagnitudeThreshold )
143 value =
static_cast< TOutput
>( I * ( std::conj( H ) / denominator ) );
153 m_RegularizationConstant = constant;
157 return m_RegularizationConstant;
165 m_KernelZeroMagnitudeThreshold = mu;
169 return m_KernelZeroMagnitudeThreshold;
181 #ifndef ITK_MANUAL_INSTANTIATION
182 #include "itkTikhonovDeconvolutionImageFilter.hxx"
Superclass::InputIndexType InputIndexType
Superclass::KernelSizeType KernelSizeType
SmartPointer< const Self > ConstPointer
Superclass::KernelIndexType KernelIndexType
Superclass::OutputIndexType OutputIndexType
double GetKernelZeroMagnitudeThreshold() const
Superclass::InternalImagePointerType InternalImagePointerType
An inverse deconvolution filter regularized in the Tikhonov sense.
Superclass::InputRegionType InputRegionType
double m_RegularizationConstant
Superclass::InternalComplexImagePointerType InternalComplexImagePointerType
Superclass::InternalComplexType InternalComplexType
Superclass::InternalComplexImageType InternalComplexImageType
Base class for all process objects that output image data.
unsigned long SizeValueType
Superclass::SizeValueType SizeValueType
TikhonovDeconvolutionFunctor()
Superclass::OutputRegionType OutputRegionType
TKernelImage KernelImageType
TOutputImage OutputImageType
void SetRegularizationConstant(double constant)
bool operator!=(const TikhonovDeconvolutionFunctor &) const
Superclass::OutputPixelType OutputPixelType
TikhonovDeconvolutionImageFilter Self
~TikhonovDeconvolutionImageFilter() override
double m_KernelZeroMagnitudeThreshold
void SetKernelZeroMagnitudeThreshold(double mu)
~TikhonovDeconvolutionFunctor()
double GetRegularizationConstant() const
Superclass::KernelPixelType KernelPixelType
InverseDeconvolutionImageFilter< TInputImage, TKernelImage, TOutputImage, TInternalPrecision > Superclass
bool operator==(const TikhonovDeconvolutionFunctor &other) const
Superclass::InputSizeType InputSizeType
TInputImage InputImageType
Control indentation during Print() invocation.
Superclass::OutputSizeType OutputSizeType
Superclass::InternalImageType InternalImageType
TOutput operator()(const TInput1 &I, const TInput2 &H) const
Superclass::KernelRegionType KernelRegionType
Superclass::InputPixelType InputPixelType
The direct linear inverse deconvolution filter.
SmartPointer< Self > Pointer