template<typename TInputImage, typename TKernelImage = TInputImage, typename TOutputImage = TInputImage, typename TInternalPrecision = double>
class itk::RichardsonLucyDeconvolutionImageFilter< TInputImage, TKernelImage, TOutputImage, TInternalPrecision >
Deconvolve an image using the Richardson-Lucy deconvolution algorithm.
This filter implements the Richardson-Lucy deconvolution algorithm 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 Richardson-Lucy algorithm assumes that noise in the image follows a Poisson distribution and that the distribution for each pixel is independent of the other pixels.
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
-
LandweberDeconvolutionImageFilter
-
ProjectedLandweberDeconvolutionImageFilter
Definition at line 59 of file itkRichardsonLucyDeconvolutionImageFilter.h.
|
| using | ConstPointer = SmartPointer< const Self > |
| |
| using | InputImageType = TInputImage |
| |
| using | InternalComplexImagePointerType = typename Superclass::InternalComplexImagePointerType |
| |
| using | InternalComplexImageType = typename Superclass::InternalComplexImageType |
| |
| using | InternalComplexType = typename Superclass::InternalComplexType |
| |
| using | InternalImagePointerType = typename Superclass::InternalImagePointerType |
| |
| using | InternalImageType = typename Superclass::InternalImageType |
| |
| using | KernelImageType = TKernelImage |
| |
| using | OutputImageType = TOutputImage |
| |
| using | Pointer = SmartPointer< Self > |
| |
| using | Self = RichardsonLucyDeconvolutionImageFilter |
| |
| using | Superclass = IterativeDeconvolutionImageFilter< TInputImage, TKernelImage, TOutputImage, TInternalPrecision > |
| |
| using | ConstPointer = SmartPointer< const Self > |
| |
| using | InputImageType = TInputImage |
| |
| using | InternalComplexImagePointerType = typename Superclass::InternalComplexImagePointerType |
| |
| using | InternalComplexImageType = typename Superclass::InternalComplexImageType |
| |
| using | InternalComplexType = typename Superclass::InternalComplexType |
| |
| using | InternalImagePointerType = typename Superclass::InternalImagePointerType |
| |
| using | InternalImageType = typename Superclass::InternalImageType |
| |
| using | KernelImageType = TKernelImage |
| |
| using | OutputImageType = TOutputImage |
| |
| using | Pointer = SmartPointer< Self > |
| |
| using | Self = IterativeDeconvolutionImageFilter |
| |
| using | Superclass = FFTConvolutionImageFilter< TInputImage, TKernelImage, TOutputImage, TInternalPrecision > |
| |
| using | BoundaryConditionPointerType = typename Superclass::BoundaryConditionPointerType |
| |
| using | BoundaryConditionType = typename Superclass::BoundaryConditionType |
| |
| using | ConstPointer = SmartPointer< const Self > |
| |
| using | InputImageType = TInputImage |
| |
| using | InputIndexType = typename InputImageType::IndexType |
| |
| using | InputPixelType = typename InputImageType::PixelType |
| |
| using | InputRegionType = typename InputImageType::RegionType |
| |
| using | InputSizeType = typename InputImageType::SizeType |
| |
| using | InternalComplexImagePointerType = typename InternalComplexImageType::Pointer |
| |
| using | InternalComplexImageType = Image< InternalComplexType, TInputImage::ImageDimension > |
| |
| using | InternalComplexType = std::complex< TInternalPrecision > |
| |
| using | InternalImagePointerType = typename InternalImageType::Pointer |
| |
| using | InternalImageType = Image< TInternalPrecision, TInputImage::ImageDimension > |
| |
| using | KernelImageType = TKernelImage |
| |
| using | KernelIndexType = typename KernelImageType::IndexType |
| |
| using | KernelPixelType = typename KernelImageType::PixelType |
| |
| using | KernelRegionType = typename KernelImageType::RegionType |
| |
| using | KernelSizeType = typename KernelImageType::SizeType |
| |
| using | OutputImageType = TOutputImage |
| |
| using | OutputIndexType = typename OutputImageType::IndexType |
| |
| using | OutputPixelType = typename OutputImageType::PixelType |
| |
| using | OutputRegionType = typename OutputImageType::RegionType |
| |
| using | OutputSizeType = typename OutputImageType::SizeType |
| |
| using | Pointer = SmartPointer< Self > |
| |
| using | Self = FFTConvolutionImageFilter |
| |
| using | SizeValueType = typename InputSizeType::SizeValueType |
| |
| using | Superclass = ConvolutionImageFilterBase< TInputImage, TKernelImage, TOutputImage > |
| |
| using | BoundaryConditionPointerType = BoundaryConditionType * |
| |
| using | BoundaryConditionType = ImageBoundaryCondition< TInputImage > |
| |
| using | ConstPointer = SmartPointer< const Self > |
| |
| using | DefaultBoundaryConditionType = ZeroFluxNeumannBoundaryCondition< TInputImage > |
| |
| using | InputImageType = TInputImage |
| |
| using | InputIndexType = typename InputImageType::IndexType |
| |
| using | InputPixelType = typename InputImageType::PixelType |
| |
| using | InputRegionType = typename InputImageType::RegionType |
| |
| using | InputSizeType = typename InputImageType::SizeType |
| |
| using | KernelImageType = TKernelImage |
| |
| using | KernelIndexType = typename KernelImageType::IndexType |
| |
| using | KernelPixelType = typename KernelImageType::PixelType |
| |
| using | KernelRegionType = typename KernelImageType::RegionType |
| |
| using | KernelSizeType = typename KernelImageType::SizeType |
| |
| using | OutputImageType = TOutputImage |
| |
| using | OutputIndexType = typename OutputImageType::IndexType |
| |
| using | OutputPixelType = typename OutputImageType::PixelType |
| |
| enum | OutputRegionModeType {
SAME = 0,
VALID
} |
| |
| using | OutputRegionType = typename OutputImageType::RegionType |
| |
| using | OutputSizeType = typename OutputImageType::SizeType |
| |
| using | Pointer = SmartPointer< Self > |
| |
| using | Self = ConvolutionImageFilterBase |
| |
| using | SizeValueType = typename InputSizeType::SizeValueType |
| |
| using | Superclass = ImageToImageFilter< TInputImage, TOutputImage > |
| |
| using | ConstPointer = SmartPointer< const Self > |
| |
| using | InputImageConstPointer = typename InputImageType::ConstPointer |
| |
| using | InputImagePixelType = typename InputImageType::PixelType |
| |
| using | InputImagePointer = typename InputImageType::Pointer |
| |
| using | InputImageRegionType = typename InputImageType::RegionType |
| |
| using | InputImageType = TInputImage |
| |
| using | OutputImagePixelType = typename Superclass::OutputImagePixelType |
| |
| using | OutputImageRegionType = typename Superclass::OutputImageRegionType |
| |
| using | Pointer = SmartPointer< Self > |
| |
| using | Self = ImageToImageFilter |
| |
| using | Superclass = ImageSource< TOutputImage > |
| |
| using | ConstPointer = SmartPointer< const Self > |
| |
| using | DataObjectIdentifierType = Superclass::DataObjectIdentifierType |
| |
| using | DataObjectPointer = DataObject::Pointer |
| |
| using | DataObjectPointerArraySizeType = Superclass::DataObjectPointerArraySizeType |
| |
| using | OutputImagePixelType = typename OutputImageType::PixelType |
| |
| using | OutputImagePointer = typename OutputImageType::Pointer |
| |
| using | OutputImageRegionType = typename OutputImageType::RegionType |
| |
| using | OutputImageType = TOutputImage |
| |
| using | Pointer = SmartPointer< Self > |
| |
| using | Self = ImageSource |
| |
| using | Superclass = ProcessObject |
| |
| using | ConstPointer = SmartPointer< const Self > |
| |
| using | DataObjectIdentifierType = DataObject::DataObjectIdentifierType |
| |
| using | DataObjectPointer = DataObject::Pointer |
| |
| using | DataObjectPointerArray = std::vector< DataObjectPointer > |
| |
| using | DataObjectPointerArraySizeType = DataObjectPointerArray::size_type |
| |
| using | MultiThreaderType = MultiThreaderBase |
| |
| using | NameArray = std::vector< DataObjectIdentifierType > |
| |
| using | Pointer = SmartPointer< Self > |
| |
| using | Self = ProcessObject |
| |
| using | Superclass = Object |
| |
| using | ConstPointer = SmartPointer< const Self > |
| |
| using | Pointer = SmartPointer< Self > |
| |
| using | Self = Object |
| |
| using | Superclass = LightObject |
| |
| using | ConstPointer = SmartPointer< const Self > |
| |
| using | Pointer = SmartPointer< Self > |
| |
| using | Self = LightObject |
| |
|
| 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 |
| |
| | RichardsonLucyDeconvolutionImageFilter () |
| |
| | ~RichardsonLucyDeconvolutionImageFilter () override |
| |
| void | GenerateData () override |
| |
| void | GenerateInputRequestedRegion () override |
| |
| | IterativeDeconvolutionImageFilter () |
| |
| | ~IterativeDeconvolutionImageFilter () override |
| |
| 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 () override=default |
| |
| | ConvolutionImageFilterBase () |
| |
| void | GenerateOutputInformation () override |
| |
| OutputRegionType | GetValidRegion () const |
| |
| void | VerifyInputInformation () ITKv5_CONST override |
| |
| | ~ConvolutionImageFilterBase () override=default |
| |
| virtual void | CallCopyInputRegionToOutputRegion (OutputImageRegionType &destRegion, const InputImageRegionType &srcRegion) |
| |
| virtual void | CallCopyOutputRegionToInputRegion (InputImageRegionType &destRegion, const OutputImageRegionType &srcRegion) |
| |
| | ImageToImageFilter () |
| |
| | ~ImageToImageFilter () override |
| |
| void | PushBackInput (const DataObject *input) override |
| |
| void | PushFrontInput (const DataObject *input) override |
| |
| virtual void | AfterThreadedGenerateData () |
| |
| virtual void | AllocateOutputs () |
| |
| virtual void | BeforeThreadedGenerateData () |
| |
| void | ClassicMultiThread (ThreadFunctionType callbackFunction) |
| |
virtual const
ImageRegionSplitterBase * | GetImageRegionSplitter () const |
| |
| | ImageSource () |
| |
| virtual unsigned int | SplitRequestedRegion (unsigned int i, unsigned int pieces, OutputImageRegionType &splitRegion) |
| |
| | ~ImageSource () override=default |
| |
| virtual void | ThreadedGenerateData (const OutputImageRegionType &outputRegionForThread, ThreadIdType threadId) |
| |
| virtual void | DynamicThreadedGenerateData (const OutputImageRegionType &outputRegionForThread) |
| |
| virtual bool | GetDynamicMultiThreading () const |
| |
| virtual void | SetDynamicMultiThreading (bool _arg) |
| |
| virtual void | DynamicMultiThreadingOn () |
| |
| virtual void | DynamicMultiThreadingOff () |
| |
| virtual void | AddInput (DataObject *input) |
| |
| void | AddOptionalInputName (const DataObjectIdentifierType &) |
| |
| void | AddOptionalInputName (const DataObjectIdentifierType &, DataObjectPointerArraySizeType idx) |
| |
| 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 |
| |
| 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 () ITKv5_CONST |
| |
| | ~ProcessObject () override |
| |
| 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 () const |
| |
| DataObject * | GetOutput (const DataObjectIdentifierType &key) |
| |
| const DataObject * | GetOutput (const DataObjectIdentifierType &key) const |
| |
| virtual void | SetPrimaryOutputName (const DataObjectIdentifierType &key) |
| |
| virtual const char * | GetPrimaryOutputName () 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) |
| |
| | ~Object () override |
| |
| 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 () |
| |