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.
|
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 RichardsonLucyDeconvolutionImageFilter | 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 |
|
virtual void | PrintSelf (std::ostream &os, Indent indent) const override |
|
| RichardsonLucyDeconvolutionImageFilter () |
|
virtual | ~RichardsonLucyDeconvolutionImageFilter () |
|
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 () |
|