Documentation |
On this page… |
---|
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, where
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 |
n | Additive noise, introduced during image acquisition, that corrupts the image |
Note The image f really doesn't exist. This image represents what you would have if you had perfect image acquisition conditions. |
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.
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 Deblurring with the Wiener Filter.)
I = imread('peppers.png'); I = I(60+[1:256],222+[1:256],:); % crop the image figure; imshow(I); title('Original 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 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 Deblurring with the 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 Deblurring with a 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 Deblurring with the Lucy-Richardson Algorithm 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 Deblurring with the Blind Deconvolution Algorithm 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 Avoiding Ringing in Deblurred Images for more information.
For information about creating your own deblurring functions, see Creating Your Own Deblurring Functions.