SimpleITK
|
Deconvolve an image using the Richardson-Lucy deconvolution algorithm. More...
#include <sitkRichardsonLucyDeconvolutionImageFilter.h>
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://doi.org/10.54294/tvgfv1
Definition at line 62 of file sitkRichardsonLucyDeconvolutionImageFilter.h.
Public Types | |
enum | BoundaryConditionType { ZERO_PAD , ZERO_FLUX_NEUMANN_PAD , PERIODIC_PAD } |
enum | OutputRegionModeType { SAME , VALID } |
using | PixelIDTypeList = BasicPixelIDTypeList |
using | Self = RichardsonLucyDeconvolutionImageFilter |
![]() | |
using | Self = ImageFilter |
![]() | |
using | Self = ProcessObject |
Public Member Functions | |
Image | Execute (const Image &image1, const Image &image2) |
BoundaryConditionType | GetBoundaryCondition () const |
std::string | GetName () const |
bool | GetNormalize () const |
int | GetNumberOfIterations () const |
OutputRegionModeType | GetOutputRegionMode () const |
Self & | NormalizeOff () |
Self & | NormalizeOn () |
RichardsonLucyDeconvolutionImageFilter () | |
Self & | SetBoundaryCondition (BoundaryConditionType BoundaryCondition) |
Self & | SetNormalize (bool Normalize) |
Self & | SetNumberOfIterations (int NumberOfIterations) |
Self & | SetOutputRegionMode (OutputRegionModeType OutputRegionMode) |
std::string | ToString () const |
virtual | ~RichardsonLucyDeconvolutionImageFilter () |
![]() | |
ImageFilter () | |
virtual | ~ImageFilter ()=0 |
![]() | |
virtual void | Abort () |
virtual int | AddCommand (itk::simple::EventEnum event, const std::function< void()> &func) |
Directly add a callback to observe an event. | |
virtual int | AddCommand (itk::simple::EventEnum event, itk::simple::Command &cmd) |
Add a Command Object to observer the event. | |
virtual float | GetProgress () const |
An Active Measurement of the progress of execution. | |
virtual bool | HasCommand (itk::simple::EventEnum event) const |
Query of this object has any registered commands for event. | |
ProcessObject () | |
virtual void | RemoveAllCommands () |
Remove all registered commands. | |
virtual | ~ProcessObject () |
virtual void | DebugOn () |
virtual void | DebugOff () |
virtual bool | GetDebug () const |
virtual void | SetDebug (bool debugFlag) |
virtual void | SetNumberOfThreads (unsigned int n) |
virtual unsigned int | GetNumberOfThreads () const |
virtual void | SetNumberOfWorkUnits (unsigned int n) |
virtual unsigned int | GetNumberOfWorkUnits () const |
Private Types | |
using | MemberFunctionType = Image (Self::*)( const Image& image1, const Image& image2 ) |
Private Member Functions | |
template<class TImageType> | |
Image | ExecuteInternal (const Image &image1, const Image &image2) |
Private Attributes | |
BoundaryConditionType | m_BoundaryCondition {itk::simple::RichardsonLucyDeconvolutionImageFilter::ZERO_FLUX_NEUMANN_PAD} |
std::unique_ptr< detail::MemberFunctionFactory< MemberFunctionType > > | m_MemberFactory |
bool | m_Normalize {false} |
int | m_NumberOfIterations {1} |
OutputRegionModeType | m_OutputRegionMode {itk::simple::RichardsonLucyDeconvolutionImageFilter::SAME} |
Friends | |
struct | detail::MemberFunctionAddressor< MemberFunctionType > |
Additional Inherited Members | |
![]() | |
static bool | GetGlobalDefaultDebug () |
static void | GlobalDefaultDebugOff () |
static void | GlobalDefaultDebugOn () |
static void | SetGlobalDefaultDebug (bool debugFlag) |
static void | GlobalWarningDisplayOn () |
static void | GlobalWarningDisplayOff () |
static void | SetGlobalWarningDisplay (bool flag) |
static bool | GetGlobalWarningDisplay () |
static double | GetGlobalDefaultCoordinateTolerance () |
Access the global tolerance to determine congruent spaces. | |
static void | SetGlobalDefaultCoordinateTolerance (double) |
Access the global tolerance to determine congruent spaces. | |
static double | GetGlobalDefaultDirectionTolerance () |
Access the global tolerance to determine congruent spaces. | |
static void | SetGlobalDefaultDirectionTolerance (double) |
Access the global tolerance to determine congruent spaces. | |
static bool | SetGlobalDefaultThreader (const std::string &threader) |
Set/Get the default threader used for process objects. | |
static std::string | GetGlobalDefaultThreader () |
Set/Get the default threader used for process objects. | |
static void | SetGlobalDefaultNumberOfThreads (unsigned int n) |
static unsigned int | GetGlobalDefaultNumberOfThreads () |
Set/Get the default threader used for process objects. | |
![]() | |
void | CheckImageMatchingDimension (const Image &image1, const Image &image2, const std::string &image2Name) |
void | CheckImageMatchingPixelType (const Image &image1, const Image &image2, const std::string &image2Name) |
void | CheckImageMatchingSize (const Image &image1, const Image &image2, const std::string &image2Name) |
![]() | |
virtual unsigned long | AddITKObserver (const itk::EventObject &, itk::Command *) |
virtual itk::ProcessObject * | GetActiveProcess () |
virtual void | OnActiveProcessDelete () |
virtual void | onCommandDelete (const itk::simple::Command *cmd) noexcept |
virtual void | PreUpdate (itk::ProcessObject *p) |
virtual void | RemoveITKObserver (EventCommand &e) |
![]() | |
NonCopyable ()=default | |
NonCopyable (const NonCopyable &)=delete | |
NonCopyable & | operator= (const NonCopyable &)=delete |
![]() | |
template<class TImageType> | |
static void | FixNonZeroIndex (TImageType *img) |
![]() | |
template<class TImageType> | |
static TImageType::ConstPointer | CastImageToITK (const Image &img) |
template<class TPixelType, unsigned int VImageDimension, unsigned int VLength, template< typename, unsigned int > class TVector> | |
static Image | CastITKToImage (itk::Image< TVector< TPixelType, VLength >, VImageDimension > *img) |
template<unsigned int VImageDimension, unsigned int VLength, template< unsigned int > class TVector> | |
static Image | CastITKToImage (itk::Image< TVector< VLength >, VImageDimension > *img) |
template<class TImageType> | |
static Image | CastITKToImage (TImageType *img) |
static const itk::EventObject & | GetITKEventObject (EventEnum e) |
template<typename T> | |
static std::ostream & | ToStringHelper (std::ostream &os, const T &v) |
static std::ostream & | ToStringHelper (std::ostream &os, const char &v) |
static std::ostream & | ToStringHelper (std::ostream &os, const signed char &v) |
static std::ostream & | ToStringHelper (std::ostream &os, const unsigned char &v) |
|
private |
Setup for member function dispatching
Definition at line 136 of file sitkRichardsonLucyDeconvolutionImageFilter.h.
Define the pixels types supported by this filter
Definition at line 74 of file sitkRichardsonLucyDeconvolutionImageFilter.h.
using itk::simple::RichardsonLucyDeconvolutionImageFilter::Self = RichardsonLucyDeconvolutionImageFilter |
Definition at line 64 of file sitkRichardsonLucyDeconvolutionImageFilter.h.
Enumerator | |
---|---|
ZERO_PAD | |
ZERO_FLUX_NEUMANN_PAD | |
PERIODIC_PAD |
Definition at line 101 of file sitkRichardsonLucyDeconvolutionImageFilter.h.
Enumerator | |
---|---|
SAME | |
VALID |
Definition at line 111 of file sitkRichardsonLucyDeconvolutionImageFilter.h.
|
virtual |
Destructor
itk::simple::RichardsonLucyDeconvolutionImageFilter::RichardsonLucyDeconvolutionImageFilter | ( | ) |
Default Constructor that takes no arguments and initializes default parameters
Image itk::simple::RichardsonLucyDeconvolutionImageFilter::Execute | ( | const Image & | image1, |
const Image & | image2 ) |
Execute the filter on the input images
|
private |
Referenced by detail::MemberFunctionAddressor< MemberFunctionType >.
|
inline |
Definition at line 109 of file sitkRichardsonLucyDeconvolutionImageFilter.h.
References m_BoundaryCondition.
|
inlinevirtual |
Name of this class
Implements itk::simple::ProcessObject.
Definition at line 122 of file sitkRichardsonLucyDeconvolutionImageFilter.h.
|
inline |
Definition at line 99 of file sitkRichardsonLucyDeconvolutionImageFilter.h.
References m_Normalize.
|
inline |
Get the number of iterations.
Definition at line 85 of file sitkRichardsonLucyDeconvolutionImageFilter.h.
References m_NumberOfIterations.
|
inline |
Definition at line 119 of file sitkRichardsonLucyDeconvolutionImageFilter.h.
References m_OutputRegionMode.
|
inline |
Definition at line 95 of file sitkRichardsonLucyDeconvolutionImageFilter.h.
References SetNormalize().
|
inline |
Set the value of Normalize to true or false respectfully.
Definition at line 94 of file sitkRichardsonLucyDeconvolutionImageFilter.h.
References SetNormalize().
|
inline |
Definition at line 105 of file sitkRichardsonLucyDeconvolutionImageFilter.h.
References m_BoundaryCondition.
|
inline |
Normalize the output image by the sum of the kernel components
Definition at line 91 of file sitkRichardsonLucyDeconvolutionImageFilter.h.
References m_Normalize, and itk::simple::Normalize().
Referenced by NormalizeOff(), and NormalizeOn().
|
inline |
Set the number of iterations.
Definition at line 80 of file sitkRichardsonLucyDeconvolutionImageFilter.h.
References m_NumberOfIterations.
|
inline |
Definition at line 115 of file sitkRichardsonLucyDeconvolutionImageFilter.h.
References m_OutputRegionMode.
|
virtual |
Print ourselves out
Reimplemented from itk::simple::ProcessObject.
|
friend |
Definition at line 137 of file sitkRichardsonLucyDeconvolutionImageFilter.h.
References ExecuteInternal().
|
private |
Definition at line 150 of file sitkRichardsonLucyDeconvolutionImageFilter.h.
Referenced by GetBoundaryCondition(), and SetBoundaryCondition().
|
private |
Definition at line 142 of file sitkRichardsonLucyDeconvolutionImageFilter.h.
|
private |
Definition at line 148 of file sitkRichardsonLucyDeconvolutionImageFilter.h.
Referenced by GetNormalize(), and SetNormalize().
|
private |
Definition at line 145 of file sitkRichardsonLucyDeconvolutionImageFilter.h.
Referenced by GetNumberOfIterations(), and SetNumberOfIterations().
|
private |
Definition at line 152 of file sitkRichardsonLucyDeconvolutionImageFilter.h.
Referenced by GetOutputRegionMode(), and SetOutputRegionMode().