A microscope capturing incoherent light emitted by a specimen always introduces some blur to the image which can be described as a convolution of the object with the point spread function (PSF) of the optical system. Deconvolution is an algorithm which tries to reverse this blurring process providing a sharper image. We offer a flexible deconvolution toolbox called DeconvOptim.jl to solve deconvolution for multidimensional signals.
In our package DeconvOptim.jl we address deconvolution through an optimization problem. However, deconvolution is, due to the band limit of the PSF, an ill-conditioned inverse problem which cannot be solved directly. The forward model is convolution of the PSF with our estimation. The PSF is the mathematical description of the optical system which introduces the blur. Based on an initial estimation we minimize an exchangeable loss function (for microscopy Poisson loss is widely used) with respect to a reconstruction being a consistent solution to the inverse problem. To ensure certain constraints we allow that regularizers like Total Variation (TV) can be used. These regularizers are assembled before the optimization via metaprogramming and Tullio.jl. The gradient of the full inverse problem pipeline is calculated by Zygote.jl and the optimization by Optim.jl (currently L-BFGS). Despite having microscopy images in mind the toolbox can be used for any type of signal deconvolution due to its flexibility. We also offer GPU/CUDA.jl support to a certain extend. The full source code is available at GitHub.