ITK  6.0.0
Insight Toolkit
itkRichardsonLucyDeconvolutionImageFilter.h
Go to the documentation of this file.
1/*=========================================================================
2 *
3 * Copyright NumFOCUS
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 * https://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 itkRichardsonLucyDeconvolutionImageFilter_h
19#define itkRichardsonLucyDeconvolutionImageFilter_h
20
22
26
27namespace itk
28{
59template <typename TInputImage,
60 typename TKernelImage = TInputImage,
61 typename TOutputImage = TInputImage,
62 typename TInternalPrecision = double>
64 : public IterativeDeconvolutionImageFilter<TInputImage, TKernelImage, TOutputImage, TInternalPrecision>
65{
66public:
67 ITK_DISALLOW_COPY_AND_MOVE(RichardsonLucyDeconvolutionImageFilter);
68
74
76 using InputImageType = TInputImage;
77 using KernelImageType = TKernelImage;
78 using OutputImageType = TOutputImage;
79
81 using typename Superclass::InternalImageType;
82 using typename Superclass::InternalImagePointerType;
83 using typename Superclass::InternalComplexType;
84 using typename Superclass::InternalComplexImageType;
85 using typename Superclass::InternalComplexImagePointerType;
86
88 itkNewMacro(Self);
89
91 itkOverrideGetNameOfClassMacro(RichardsonLucyDeconvolutionImageFilter);
92
93protected:
96
97 void
98 Initialize(ProgressAccumulator * progress, float progressWeight, float iterationProgressWeight) override;
99
100 void
101 Iteration(ProgressAccumulator * progress, float iterationProgressWeight) override;
102
103 void
104 Finish(ProgressAccumulator * progress, float progressWeight) override;
105
106 using typename Superclass::FFTFilterType;
107 using typename Superclass::IFFTFilterType;
108
109 void
110 PrintSelf(std::ostream & os, Indent indent) const override;
111
112private:
120
122
123 typename ComplexMultiplyType::Pointer m_ComplexMultiplyFilter1{};
124 typename IFFTFilterType::Pointer m_IFFTFilter1{};
125 typename DivideFilterType::Pointer m_DivideFilter{};
126 typename FFTFilterType::Pointer m_FFTFilter{};
127 typename ConjugateAdaptorType::Pointer m_ConjugateAdaptor{};
128 typename ComplexConjugateMultiplyType::Pointer m_ComplexMultiplyFilter2{};
129 typename IFFTFilterType::Pointer m_IFFTFilter2{};
130 typename MultiplyFilterType::Pointer m_MultiplyFilter{};
131};
132} // end namespace itk
133
134#ifndef ITK_MANUAL_INSTANTIATION
135# include "itkRichardsonLucyDeconvolutionImageFilter.hxx"
136#endif
137
138#endif
Presents each pixel of a complex image as its complex conjugate.
Control indentation during Print() invocation.
Definition: itkIndent.h:50
Abstract base class for filters that implement iterative deconvolution algorithms.
Light weight base class for most itk classes.
Pixel-wise multiplication of two images.
Facilitates progress reporting for filters that wrap around multiple other filters.
Deconvolve an image using the Richardson-Lucy deconvolution algorithm.
void Finish(ProgressAccumulator *progress, float progressWeight) override
void Initialize(ProgressAccumulator *progress, float progressWeight, float iterationProgressWeight) override
void Iteration(ProgressAccumulator *progress, float iterationProgressWeight) override
void PrintSelf(std::ostream &os, Indent indent) const override
The "itk" namespace contains all Insight Segmentation and Registration Toolkit (ITK) classes....