template<typename TInputImage, typename TKernelImage = TInputImage, typename TOutputImage = TInputImage, typename TInternalPrecision = double>
class itk::LandweberDeconvolutionImageFilter< TInputImage, TKernelImage, TOutputImage, TInternalPrecision >
Deconvolve an image using the Landweber deconvolution algorithm.
This filter implements the Landweber deconvolution algorthm as defined in Bertero M and Boccacci P, "Introduction to Inverse
Problems in Imaging", 1998. The algorithm assumes that the input image has been formed by a linear shift-invariant system with a known kernel.
The Landweber algorithm converges to a solution that minimizes the sum of squared errors where is the estimate of the unblurred image, is the convolution operator, is the blurring kernel, and is the blurred input image. As such, it is best suited for images that have zero-mean Gaussian white noise.
This is the base implementation of the Landweber algorithm. It may produce results with negative values. For a version of this algorithm that enforces a positivity constraint on each intermediate solution, see ProjectedLandweberDeconvolutionImageFilter.
This code was adapted from the Insight Journal contribution:
"Deconvolution: infrastructure and reference algorithms" by Gaetan Lehmann https://hdl.handle.net/10380/3207
- Author
- Gaetan Lehmann, Biologie du Developpement et de la Reproduction, INRA de Jouy-en-Josas, France
-
Cory Quammen, The University of North Carolina at Chapel Hill
- See also
- IterativeDeconvolutionImageFilter
-
RichardsonLucyDeconvolutionImageFilter
-
ProjectedLandweberDeconvolutionImageFilter
Definition at line 101 of file itkLandweberDeconvolutionImageFilter.h.
|
typedef SmartPointer< const Self > | ConstPointer |
|
typedef TInputImage | InputImageType |
|
typedef Superclass::InternalComplexImagePointerType | InternalComplexImagePointerType |
|
typedef Superclass::InternalComplexImageType | InternalComplexImageType |
|
typedef Superclass::InternalComplexType | InternalComplexType |
|
typedef Superclass::InternalImagePointerType | InternalImagePointerType |
|
typedef Superclass::InternalImageType | InternalImageType |
|
typedef TKernelImage | KernelImageType |
|
typedef TOutputImage | OutputImageType |
|
typedef SmartPointer< Self > | Pointer |
|
typedef LandweberDeconvolutionImageFilter | Self |
|
typedef IterativeDeconvolutionImageFilter< TInputImage, TKernelImage, TOutputImage, TInternalPrecision > | Superclass |
|
typedef SmartPointer< const Self > | ConstPointer |
|
typedef TInputImage | InputImageType |
|
typedef Superclass::InternalComplexImagePointerType | InternalComplexImagePointerType |
|
typedef Superclass::InternalComplexImageType | InternalComplexImageType |
|
typedef Superclass::InternalComplexType | InternalComplexType |
|
typedef Superclass::InternalImagePointerType | InternalImagePointerType |
|
typedef Superclass::InternalImageType | InternalImageType |
|
typedef TKernelImage | KernelImageType |
|
typedef TOutputImage | OutputImageType |
|
typedef SmartPointer< Self > | Pointer |
|
typedef IterativeDeconvolutionImageFilter | Self |
|
typedef FFTConvolutionImageFilter< TInputImage, TKernelImage, TOutputImage, TInternalPrecision > | Superclass |
|
typedef Superclass::BoundaryConditionPointerType | BoundaryConditionPointerType |
|
typedef Superclass::BoundaryConditionType | BoundaryConditionType |
|
typedef SmartPointer< const Self > | ConstPointer |
|
typedef TInputImage | InputImageType |
|
typedef InputImageType::IndexType | InputIndexType |
|
typedef InputImageType::PixelType | InputPixelType |
|
typedef InputImageType::RegionType | InputRegionType |
|
typedef InputImageType::SizeType | InputSizeType |
|
typedef InternalComplexImageType::Pointer | InternalComplexImagePointerType |
|
typedef Image< InternalComplexType, TInputImage::ImageDimension > | InternalComplexImageType |
|
typedef std::complex< TInternalPrecision > | InternalComplexType |
|
typedef InternalImageType::Pointer | InternalImagePointerType |
|
typedef Image< TInternalPrecision, TInputImage::ImageDimension > | InternalImageType |
|
typedef TKernelImage | KernelImageType |
|
typedef KernelImageType::IndexType | KernelIndexType |
|
typedef KernelImageType::PixelType | KernelPixelType |
|
typedef KernelImageType::RegionType | KernelRegionType |
|
typedef KernelImageType::SizeType | KernelSizeType |
|
typedef TOutputImage | OutputImageType |
|
typedef OutputImageType::IndexType | OutputIndexType |
|
typedef OutputImageType::PixelType | OutputPixelType |
|
typedef OutputImageType::RegionType | OutputRegionType |
|
typedef OutputImageType::SizeType | OutputSizeType |
|
typedef SmartPointer< Self > | Pointer |
|
typedef FFTConvolutionImageFilter | Self |
|
typedef InputSizeType::SizeValueType | SizeValueType |
|
typedef ConvolutionImageFilterBase< TInputImage, TKernelImage, TOutputImage > | Superclass |
|
typedef BoundaryConditionType * | BoundaryConditionPointerType |
|
typedef ImageBoundaryCondition< TInputImage > | BoundaryConditionType |
|
typedef SmartPointer< const Self > | ConstPointer |
|
typedef ZeroFluxNeumannBoundaryCondition< TInputImage > | DefaultBoundaryConditionType |
|
typedef TInputImage | InputImageType |
|
typedef InputImageType::IndexType | InputIndexType |
|
typedef InputImageType::PixelType | InputPixelType |
|
typedef InputImageType::RegionType | InputRegionType |
|
typedef InputImageType::SizeType | InputSizeType |
|
typedef TKernelImage | KernelImageType |
|
typedef KernelImageType::IndexType | KernelIndexType |
|
typedef KernelImageType::PixelType | KernelPixelType |
|
typedef KernelImageType::RegionType | KernelRegionType |
|
typedef KernelImageType::SizeType | KernelSizeType |
|
typedef TOutputImage | OutputImageType |
|
typedef OutputImageType::IndexType | OutputIndexType |
|
typedef OutputImageType::PixelType | OutputPixelType |
|
enum | OutputRegionModeType {
SAME = 0,
VALID
} |
|
typedef OutputImageType::RegionType | OutputRegionType |
|
typedef OutputImageType::SizeType | OutputSizeType |
|
typedef SmartPointer< Self > | Pointer |
|
typedef ConvolutionImageFilterBase | Self |
|
typedef InputSizeType::SizeValueType | SizeValueType |
|
typedef ImageToImageFilter< TInputImage, TOutputImage > | Superclass |
|
typedef SmartPointer< const Self > | ConstPointer |
|
typedef InputImageType::ConstPointer | InputImageConstPointer |
|
typedef InputImageType::PixelType | InputImagePixelType |
|
typedef InputImageType::Pointer | InputImagePointer |
|
typedef InputImageType::RegionType | InputImageRegionType |
|
typedef TInputImage | InputImageType |
|
typedef Superclass::OutputImagePixelType | OutputImagePixelType |
|
typedef Superclass::OutputImageRegionType | OutputImageRegionType |
|
typedef SmartPointer< Self > | Pointer |
|
typedef ImageToImageFilter | Self |
|
typedef ImageSource< TOutputImage > | Superclass |
|
typedef SmartPointer< const Self > | ConstPointer |
|
typedef Superclass::DataObjectIdentifierType | DataObjectIdentifierType |
|
typedef DataObject::Pointer | DataObjectPointer |
|
typedef Superclass::DataObjectPointerArraySizeType | DataObjectPointerArraySizeType |
|
typedef OutputImageType::PixelType | OutputImagePixelType |
|
typedef OutputImageType::Pointer | OutputImagePointer |
|
typedef OutputImageType::RegionType | OutputImageRegionType |
|
typedef TOutputImage | OutputImageType |
|
typedef SmartPointer< Self > | Pointer |
|
typedef ImageSource | Self |
|
typedef ProcessObject | Superclass |
|
typedef SmartPointer< const Self > | ConstPointer |
|
typedef DataObject::DataObjectIdentifierType | DataObjectIdentifierType |
|
typedef DataObject::Pointer | DataObjectPointer |
|
typedef std::vector< DataObjectPointer > | DataObjectPointerArray |
|
typedef DataObjectPointerArray::size_type | DataObjectPointerArraySizeType |
|
typedef std::vector< DataObjectIdentifierType > | NameArray |
|
typedef SmartPointer< Self > | Pointer |
|
typedef ProcessObject | Self |
|
typedef Object | Superclass |
|
typedef SmartPointer< const Self > | ConstPointer |
|
typedef SmartPointer< Self > | Pointer |
|
typedef Object | Self |
|
typedef LightObject | Superclass |
|
typedef SmartPointer< const Self > | ConstPointer |
|
typedef SmartPointer< Self > | Pointer |
|
typedef LightObject | Self |
|
|
virtual void | Finish (ProgressAccumulator *progress, float progressWeight) override |
|
virtual void | Initialize (ProgressAccumulator *progress, float progressWeight, float iterationProgressWeight) override |
|
virtual void | Iteration (ProgressAccumulator *progress, float iterationProgressWeight) override |
|
| LandweberDeconvolutionImageFilter () |
|
virtual void | PrintSelf (std::ostream &os, Indent indent) const override |
|
virtual | ~LandweberDeconvolutionImageFilter () |
|
virtual void | GenerateData () override |
|
virtual void | GenerateInputRequestedRegion () override |
|
| IterativeDeconvolutionImageFilter () |
|
virtual | ~IterativeDeconvolutionImageFilter () |
|
void | CropOutput (InternalImageType *paddedOutput, ProgressAccumulator *progress, float progressWeight) |
|
| FFTConvolutionImageFilter () |
|
InputSizeType | GetPadLowerBound () const |
|
InputSizeType | GetPadSize () const |
|
bool | GetXDimensionIsOdd () const |
|
void | PadInput (const InputImageType *input, InternalImagePointerType &paddedInput, ProgressAccumulator *progress, float progressWeight) |
|
void | PrepareInput (const InputImageType *input, InternalComplexImagePointerType &preparedInput, ProgressAccumulator *progress, float progressWeight) |
|
void | PrepareInputs (const InputImageType *input, const KernelImageType *kernel, InternalComplexImagePointerType &preparedInput, InternalComplexImagePointerType &preparedKernel, ProgressAccumulator *progress, float progressWeight) |
|
void | PrepareKernel (const KernelImageType *kernel, InternalComplexImagePointerType &preparedKernel, ProgressAccumulator *progress, float progressWeight) |
|
void | ProduceOutput (InternalComplexImageType *paddedOutput, ProgressAccumulator *progress, float progressWeight) |
|
void | TransformPaddedInput (const InternalImageType *paddedInput, InternalComplexImagePointerType &transformedInput, ProgressAccumulator *progress, float progressWeight) |
|
| ~FFTConvolutionImageFilter () |
|
| ConvolutionImageFilterBase () |
|
void | GenerateOutputInformation () override |
|
OutputRegionType | GetValidRegion () const |
|
virtual void | VerifyInputInformation () override |
|
| ~ConvolutionImageFilterBase () |
|
virtual void | CallCopyInputRegionToOutputRegion (OutputImageRegionType &destRegion, const InputImageRegionType &srcRegion) |
|
virtual void | CallCopyOutputRegionToInputRegion (InputImageRegionType &destRegion, const OutputImageRegionType &srcRegion) |
|
| ImageToImageFilter () |
|
| ~ImageToImageFilter () |
|
void | PushBackInput (const DataObject *input) override |
|
void | PushFrontInput (const DataObject *input) override |
|
virtual void | AfterThreadedGenerateData () |
|
virtual void | AllocateOutputs () |
|
virtual void | BeforeThreadedGenerateData () |
|
virtual const ImageRegionSplitterBase * | GetImageRegionSplitter () const |
|
| ImageSource () |
|
virtual unsigned int | SplitRequestedRegion (unsigned int i, unsigned int pieces, OutputImageRegionType &splitRegion) |
|
virtual void | ThreadedGenerateData (const OutputImageRegionType &outputRegionForThread, ThreadIdType threadId) |
|
virtual | ~ImageSource () |
|
virtual void | AddInput (DataObject *input) |
|
virtual void | AddOutput (DataObject *output) |
|
bool | AddRequiredInputName (const DataObjectIdentifierType &) |
|
bool | AddRequiredInputName (const DataObjectIdentifierType &, DataObjectPointerArraySizeType idx) |
|
virtual void | CacheInputReleaseDataFlags () |
|
virtual void | GenerateOutputRequestedRegion (DataObject *output) |
|
DataObject * | GetInput (const DataObjectIdentifierType &key) |
|
const DataObject * | GetInput (const DataObjectIdentifierType &key) const |
|
virtual const DataObjectPointerArraySizeType & | GetNumberOfRequiredInputs () const |
|
virtual const DataObjectPointerArraySizeType & | GetNumberOfRequiredOutputs () const |
|
bool | IsIndexedInputName (const DataObjectIdentifierType &) const |
|
bool | IsIndexedOutputName (const DataObjectIdentifierType &) const |
|
bool | IsRequiredInputName (const DataObjectIdentifierType &) const |
|
| itkLegacyMacro (virtual void RemoveOutput(DataObject *output)) |
|
| itkLegacyMacro (void SetNumberOfOutputs(DataObjectPointerArraySizeType num)) |
|
| itkLegacyMacro (virtual void RemoveInput(DataObject *input)) |
|
| itkLegacyMacro (void SetNumberOfInputs(DataObjectPointerArraySizeType num)) |
|
DataObjectPointerArraySizeType | MakeIndexFromInputName (const DataObjectIdentifierType &name) const |
|
DataObjectPointerArraySizeType | MakeIndexFromOutputName (const DataObjectIdentifierType &name) const |
|
DataObjectIdentifierType | MakeNameFromInputIndex (DataObjectPointerArraySizeType idx) const |
|
DataObjectIdentifierType | MakeNameFromOutputIndex (DataObjectPointerArraySizeType idx) const |
|
| ProcessObject () |
|
virtual void | PropagateResetPipeline () |
|
virtual void | ReleaseInputs () |
|
virtual void | RemoveInput (const DataObjectIdentifierType &key) |
|
virtual void | RemoveInput (DataObjectPointerArraySizeType) |
|
virtual void | RemoveOutput (const DataObjectIdentifierType &key) |
|
virtual void | RemoveOutput (DataObjectPointerArraySizeType idx) |
|
bool | RemoveRequiredInputName (const DataObjectIdentifierType &) |
|
virtual void | RestoreInputReleaseDataFlags () |
|
virtual void | SetInput (const DataObjectIdentifierType &key, DataObject *input) |
|
virtual void | SetNthInput (DataObjectPointerArraySizeType num, DataObject *input) |
|
virtual void | SetNthOutput (DataObjectPointerArraySizeType num, DataObject *output) |
|
void | SetNumberOfIndexedInputs (DataObjectPointerArraySizeType num) |
|
void | SetNumberOfIndexedOutputs (DataObjectPointerArraySizeType num) |
|
virtual void | SetNumberOfRequiredInputs (DataObjectPointerArraySizeType) |
|
virtual void | SetNumberOfRequiredOutputs (DataObjectPointerArraySizeType _arg) |
|
virtual void | SetOutput (const DataObjectIdentifierType &key, DataObject *output) |
|
virtual void | SetPrimaryInput (DataObject *input) |
|
virtual void | SetPrimaryOutput (DataObject *output) |
|
void | SetRequiredInputNames (const NameArray &) |
|
virtual void | VerifyPreconditions () |
|
| ~ProcessObject () |
|
DataObject * | GetInput (DataObjectPointerArraySizeType idx) |
|
const DataObject * | GetInput (DataObjectPointerArraySizeType idx) const |
|
DataObject * | GetPrimaryInput () |
|
const DataObject * | GetPrimaryInput () const |
|
virtual void | SetPrimaryInputName (const DataObjectIdentifierType &key) |
|
virtual const char * | GetPrimaryInputName (void) const |
|
DataObject * | GetOutput (const DataObjectIdentifierType &key) |
|
const DataObject * | GetOutput (const DataObjectIdentifierType &key) const |
|
virtual void | SetPrimaryOutputName (const DataObjectIdentifierType &key) |
|
virtual const char * | GetPrimaryOutputName (void) const |
|
DataObject * | GetOutput (DataObjectPointerArraySizeType idx) |
|
const DataObject * | GetOutput (DataObjectPointerArraySizeType idx) const |
|
DataObject * | GetPrimaryOutput () |
|
const DataObject * | GetPrimaryOutput () const |
|
| Object () |
|
bool | PrintObservers (std::ostream &os, Indent indent) const |
|
virtual void | SetTimeStamp (const TimeStamp &time) |
|
virtual | ~Object () |
|
virtual LightObject::Pointer | InternalClone () const |
|
| LightObject () |
|
virtual void | PrintHeader (std::ostream &os, Indent indent) const |
|
virtual void | PrintTrailer (std::ostream &os, Indent indent) const |
|
virtual | ~LightObject () |
|