Adapt the Lucy-Richardson Deconvolution for Various Image Distortions
Use the deconvlucy
function to deblur an image
using the accelerated, damped, Lucy-Richardson algorithm. The algorithm maximizes the
likelihood that the resulting image, when convolved with the PSF, is an instance of the
blurred image, assuming Poisson noise statistics. This function can be effective when
you know the PSF but know little about the additive noise in the image.
The deconvlucy
function implements several adaptations to the
original Lucy-Richardson maximum likelihood algorithm that address complex image
restoration tasks.
Reduce the Effect of Noise Amplification
Noise amplification is a common problem of maximum likelihood methods that attempt to fit data as closely as possible. After many iterations, the restored image can have a speckled appearance, especially for a smooth object observed at low signal-to-noise ratios. These speckles do not represent any real structure in the image, but are artifacts of fitting the noise in the image too closely.
To control noise amplification, the deconvlucy
function uses
a damping parameter, DAMPAR
. This parameter specifies the
threshold level for the deviation of the resulting image from the original image,
below which damping occurs. For pixels that deviate in the vicinity of their
original values, iterations are suppressed.
Damping is also used to reduce ringing, the appearance of high-frequency structures in a restored image. Ringing is not necessarily the result of noise amplification. See Avoid Ringing in Deblurred Images for more information.
Account for Nonuniform Image Quality
Another complication of real-life image restoration is that the data might include
bad pixels, or that the quality of the receiving pixels might vary with time and
position. By specifying the WEIGHT
argument with the
deconvlucy
function, you can specify that certain pixels in
the image be ignored. To ignore a pixel, assign a weight of zero to the element in
the WEIGHT
array that corresponds to the pixel in the
image.
The algorithm converges on predicted values for the bad pixels based on the
information from neighborhood pixels. The variation in the detector response from
pixel to pixel (the so-called flat-field correction) can also be accommodated by the
WEIGHT
array. Instead of assigning a weight of 1.0 to the
good pixels, you can specify fractional values and weight the pixels according to
the amount of the flat-field correction.
Handle Camera Read-Out Noise
Noise in charge coupled device (CCD) detectors has two primary components:
Photon counting noise with a Poisson distribution
Read-out noise with a Gaussian distribution
The Lucy-Richardson iterations intrinsically account for the first type of noise. You must account for the second type of noise; otherwise, it can cause pixels with low levels of incident photons to have negative values.
The deconvlucy
function uses the READOUT
input argument to handle camera read-out noise. The value of this parameter is
typically the sum of the read-out noise variance and the background noise, such as
the number of counts from the background radiation. The value of the
READOUT
argument specifies an offset that ensures that all
values are positive.
Handling Undersampled Images
The restoration of undersampled data can be improved significantly if it is done
on a finer grid. The deconvlucy
function uses the
SUBSMPL
parameter to specify the subsampling rate, if the PSF
is known to have a higher resolution.
If the undersampled data is the result of camera pixel binning during image acquisition, the PSF observed at each pixel rate can serve as a finer grid PSF. Otherwise, the PSF can be obtained via observations taken at subpixel offsets or via optical modeling techniques. This method is especially effective for images of stars (high signal-to-noise ratio), because the stars are effectively forced to be in the center of a pixel. If a star is centered between pixels, it is restored as a combination of the neighboring pixels. A finer grid redirects the consequent spreading of the star flux back to the center of the star's image.
Refine the Result
The deconvlucy
function, by default, performs multiple
iterations of the deblurring process. You can stop the processing after a certain
number of iterations to check the result, and then restart the iterations from the
point where processing stopped. To do this, pass in the input image as a cell array,
for example, {BlurredNoisy}
. The deconvlucy
function returns the output image as a cell array that you can then pass as an input
argument to deconvlucy
to restart the deconvolution.
The output cell array contains these four elements:
Element | Description |
---|---|
| Original input image |
| Image produced by the last iteration |
| Image produced by the next to last iteration |
| Internal information used by
|