Deblur image using Lucy-Richardson method
J = deconvlucy(I, PSF)
J = deconvlucy(I, PSF, NUMIT)
J = deconvlucy(I, PSF, NUMIT, DAMPAR)
J = deconvlucy(I, PSF, NUMIT, DAMPAR,
WEIGHT)
J = deconvlucy(I, PSF, NUMIT, DAMPAR,
WEIGHT, READOUT)
J = deconvlucy(I, PSF, NUMIT, DAMPAR,
WEIGHT, READOUT, SUBSMPL)
J = deconvlucy(I, PSF)
restores
image I
that was degraded by convolution with a
point-spread function PSF
and possibly by additive
noise. The algorithm is based on maximizing the likelihood of the
resulting image J
's
being an
instance of the original image I
under Poisson
statistics.
I
can be a N-dimensional array.
To improve the restoration, deconvlucy
supports
several optional parameters. Use []
as a placeholder
if you do not specify an intermediate parameter.
J = deconvlucy(I, PSF, NUMIT)
specifies
the number of iterations the deconvlucy
function
performs. If this value is not specified, the default is 10.
J = deconvlucy(I, PSF, NUMIT, DAMPAR)
specifies
the threshold deviation of the resulting image from the image I
(in
terms of the standard deviation of Poisson noise) below which damping
occurs. Iterations are suppressed for pixels that deviate beyond the DAMPAR
value
from their original value. This suppresses the noise generation in
such pixels, preserving necessary image details elsewhere. The default
value is 0 (no damping).
J = deconvlucy(I, PSF, NUMIT, DAMPAR,
WEIGHT)
specifies the weight to be assigned to each pixel
to reflect its recording quality in the camera. A bad pixel is excluded
from the solution by assigning it zero weight value. Instead of giving
a weight of unity for good pixels, you can adjust their weight according
to the amount of flat-field correction. The default is a unit array
of the same size as input image I
.
J = deconvlucy(I, PSF, NUMIT, DAMPAR,
WEIGHT, READOUT)
specifies a value corresponding to the
additive noise (e.g., background, foreground noise) and the variance
of the readout camera noise. READOUT
has to be
in the units of the image. The default value is 0.
J = deconvlucy(I, PSF, NUMIT, DAMPAR,
WEIGHT, READOUT, SUBSMPL)
, where SUBSMPL
denotes
subsampling and is used when the PSF
is given on
a grid that is SUBSMPL
times finer than the image.
The default value is 1.
Note
The output image |
If I
is a cell array, it can contain a single
numerical array (the blurred image) or it can be the output from
a previous run of deconvlucy
.
When you pass a cell array to deconvlucy
as
input, it returns a 1-by-4 cell array J
, where
J{1}
contains I
, the original
image.
J{2}
contains the result of the last iteration.
J{3}
contains the result of the next-to-last
iteration.
J{4}
is an array generated by the iterative
algorithm.
I
and PSF
can be uint8
, uint16
, int16
, double
,
or single
. DAMPAR
and READOUT
must
have the same class as the input image. Other inputs have to be double
.
The output image J
(or the first array of the output
cell) has the same class as the input image I
.
I = checkerboard(8); PSF = fspecial('gaussian',7,10); V = .0001; BlurredNoisy = imnoise(imfilter(I,PSF),'gaussian',0,V); WT = zeros(size(I)); WT(5:end-4,5:end-4) = 1; J1 = deconvlucy(BlurredNoisy,PSF); J2 = deconvlucy(BlurredNoisy,PSF,20,sqrt(V)); J3 = deconvlucy(BlurredNoisy,PSF,20,sqrt(V),WT); subplot(221);imshow(BlurredNoisy); title('A = Blurred and Noisy'); subplot(222);imshow(J1); title('deconvlucy(A,PSF)'); subplot(223);imshow(J2); title('deconvlucy(A,PSF,NI,DP)'); subplot(224);imshow(J3); title('deconvlucy(A,PSF,NI,DP,WT)');
[1] Biggs, D.S.C. "Acceleration of Iterative Image Restoration Algorithms." Applied Optics. Vol. 36. Number 8, 1997, pp. 1766–1775.
[2] Hanisch, R.J., R.L. White, and R.L. Gilliland. "Deconvolution of Hubble Space Telescope Images and Spectra." Deconvolution of Images and Spectra (P.A. Jansson, ed.). Boston, MA: Academic Press, 1997, pp. 310–356.