18 #ifndef itkTikhonovDeconvolutionImageFilter_h
19 #define itkTikhonovDeconvolutionImageFilter_h
49 template<
typename TInputImage,
typename TKernelImage = TInputImage,
typename TOutputImage = TInputImage,
typename TInternalPrecision=
double >
71 static constexpr
unsigned int ImageDimension = TInputImage::ImageDimension;
101 itkSetMacro(RegularizationConstant,
double);
102 itkGetConstMacro(RegularizationConstant,
double);
110 void GenerateData()
override;
112 void PrintSelf(std::ostream & os,
Indent indent)
const override;
120 template<
typename TInput1,
typename TInput2,
typename TOutput >
133 return !(*
this != other);
135 inline TOutput
operator()(
const TInput1 & I,
const TInput2 & H)
const
137 typename TOutput::value_type normH = std::norm( H );
138 typename TOutput::value_type denominator = normH + m_RegularizationConstant;
140 if ( denominator >= m_KernelZeroMagnitudeThreshold )
142 value =
static_cast< TOutput
>( I * ( std::conj( H ) / denominator ) );
152 m_RegularizationConstant = constant;
156 return m_RegularizationConstant;
164 m_KernelZeroMagnitudeThreshold = mu;
168 return m_KernelZeroMagnitudeThreshold;
180 #ifndef ITK_MANUAL_INSTANTIATION
181 #include "itkTikhonovDeconvolutionImageFilter.hxx"
typename InternalImageType::Pointer InternalImagePointerType
typename InputImageType::PixelType InputPixelType
double GetKernelZeroMagnitudeThreshold() const
typename KernelImageType::SizeType KernelSizeType
typename OutputImageType::IndexType OutputIndexType
Define numeric traits for std::vector.
typename InputSizeType::SizeValueType SizeValueType
An inverse deconvolution filter regularized in the Tikhonov sense.
typename OutputImageType::PixelType OutputPixelType
unsigned long SizeValueType
double m_RegularizationConstant
typename KernelImageType::PixelType KernelPixelType
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.
typename InputImageType::RegionType InputRegionType
TInputImage InputImageType
TikhonovDeconvolutionFunctor()
TKernelImage KernelImageType
typename InternalComplexImageType::Pointer InternalComplexImagePointerType
std::complex< TInternalPrecision > InternalComplexType
void SetRegularizationConstant(double constant)
TOutputImage OutputImageType
bool operator!=(const TikhonovDeconvolutionFunctor &) const
typename InputImageType::SizeType InputSizeType
typename InputImageType::IndexType InputIndexType
double m_KernelZeroMagnitudeThreshold
void SetKernelZeroMagnitudeThreshold(double mu)
double GetRegularizationConstant() const
bool operator==(const TikhonovDeconvolutionFunctor &other) const
typename KernelImageType::RegionType KernelRegionType
typename OutputImageType::RegionType OutputRegionType
Control indentation during Print() invocation.
typename OutputImageType::SizeType OutputSizeType
TOutput operator()(const TInput1 &I, const TInput2 &H) const
double m_RegularizationConstant
typename KernelImageType::IndexType KernelIndexType
The direct linear inverse deconvolution filter.
Templated n-dimensional image class.