Main Content

Image Deblurring

The blurring, or degradation, of an image can be caused by many factors:

  • Movement during the image capture process, by the camera or, when long exposure times are used, by the subject

  • Out-of-focus optics, use of a wide-angle lens, atmospheric turbulence, or a short exposure time, which reduces the number of photons captured

  • Scattered light distortion in confocal microscopy

A blurred or degraded image can be approximately described by this equation g = Hf + n.

g

The blurred image

H

The distortion operator, also called the point spread function (PSF). In the spatial domain, the PSF describes the degree to which an optical system blurs (spreads) a point of light. The PSF is the inverse Fourier transform of the optical transfer function (OTF). In the frequency domain, the OTF describes the response of a linear, position-invariant system to an impulse. The OTF is the Fourier transform of the point spread function (PSF). The distortion operator, when convolved with the image, creates the distortion. Distortion caused by a point spread function is just one type of distortion.

f

The original true image

Note

The image f does not really exist. This image represents what you would have if you had perfect image acquisition conditions.

n

Additive noise, introduced during image acquisition, that corrupts the image

Based on this model, the fundamental task of deblurring is to deconvolve the blurred image with the PSF that exactly describes the distortion. Deconvolution is the process of reversing the effect of convolution.

Note

The quality of the deblurred image is mainly determined by knowledge of the PSF.

To illustrate, this example takes a clear image and deliberately blurs it by convolving it with a PSF. The example uses the fspecial function to create a PSF that simulates a motion blur, specifying the length of the blur in pixels, (LEN=31), and the angle of the blur in degrees (THETA=11). Once the PSF is created, the example uses the imfilter function to convolve the PSF with the original image, I, to create the blurred image, Blurred. To see how deblurring is the reverse of this process, using the same images, see Deblur Images Using a Wiener Filter.

I = imread("peppers.png");
I = I(60+[1:256],222+[1:256],:); % crop the image
figure; imshow(I); title("Original Image");

A clear RGB image.

LEN = 31;
THETA = 11;
PSF = fspecial("motion",LEN,THETA); % create PSF
Blurred = imfilter(I,PSF,"circular","conv");
figure; imshow(Blurred); title("Blurred Image");

The image with simulated motion blur.

Deblurring Functions

The toolbox includes four deblurring functions, listed here in order of complexity. All the functions accept a PSF and the blurred image as their primary arguments.

deconvwnr

Implements a least squares solution. You should provide some information about the noise to reduce possible noise amplification during deblurring. See Deblur Images Using a Wiener Filter for more information.

deconvreg

Implements a constrained least squares solution, where you can place constraints on the output image (the smoothness requirement is the default). You should provide some information about the noise to reduce possible noise amplification during deblurring. See Deblur Images Using Regularized Filter for more information.

deconvlucy

Implements an accelerated, damped Lucy-Richardson algorithm. This function performs multiple iterations, using optimization techniques and Poisson statistics. You do not need to provide information about the additive noise in the corrupted image. See Adapt the Lucy-Richardson Deconvolution for Various Image Distortions for more information.

deconvblind

Implements the blind deconvolution algorithm, which performs deblurring without knowledge of the PSF. You pass as an argument your initial guess at the PSF. The deconvblind function returns a restored PSF in addition to the restored image. The implementation uses the same damping and iterative model as the deconvlucy function. See Adapt Blind Deconvolution for Various Image Distortions for more information.

When using the deblurring functions, note the following:

  • Deblurring is an iterative process. You might need to repeat the deblurring process multiple times, varying the parameters you specify to the deblurring functions with each iteration, until you achieve an image that, based on the limits of your information, is the best approximation of the original scene. Along the way, you must make numerous judgments about whether newly uncovered features in the image are features of the original scene or simply artifacts of the deblurring process.

  • To avoid "ringing" in a deblurred image, you can use the edgetaper function to preprocess your image before passing it to the deblurring functions. See Avoid Ringing in Deblurred Images for more information.

  • For information about creating your own deblurring functions, see Create Your Own Deblurring Functions.