Deconvolution is the converse of convolution in the sense that division is the
converse of multiplication. If you know that mx equals n, where m and n are known but x is unknown, then x equals n/m. Converselyif you know that m convoluted with x equalsn, where m and n are known but x is unknown, then x equals m deconvoluted from n. In practice, the deconvolution of one signal from
another is usually performed by point-by-point division of the two signals in the Fourier
that is, dividing the Fourier transforms of the two signals point-by-point and then
inverse-transforming the result. Fourier transforms are usually expressed in terms of complex numbers,
with real and imaginary parts. If the Fourier transform of the first
signal is a + ib, and the Fourier transform of the second signal is c + id, then the ratio of the two Fourier transforms is
by the usual rules for the division of complex numbers.
The term "deconvolution" is also sometimes used for the process of
resolving or decomposing a set of overlapping peaks into their separate
components by the technique of iterative least-squares curve fitting
of a putative peak model to the data set. That process is actually
conceptually distinct from deconvolution, because in deconvolution, the
underlying peak shape is unknown but the broadening function is assumed
to be known; whereas in iterative least-squares curve fitting, the underlying peak shape is assumed to be known but the
broadening process (which determines the width of the peaks in the recorded data) is unknown.
The practical significance of
Fourier deconvolution in signal processing is that it can be used as
an artificial (i.e. computational) way to reverse the result of a
occurring in the physical domain, for example, to reverse the signal
effect of an electrical filter or of the finite resolution of a
Two examples of the application of Fourier deconvolution are shown in Figures
Figure 12. Fourier deconvolution
is used here to remove the distorting
influence of an exponential tailing response function from a recorded
(Window 1, top left) that is the result of an unavoidable RC low-pass
action in the electronics. The response function (Window 2, top right)
usually either calculated on the basis of some theoretical model or is
experimentally as the output signal produced by applying an impulse
function to the input of the system. The response function, with its
at x=0, is deconvoluted from the original signal . The result (bottom,
shows a closer approximation to the real shape of the peaks; however,
signal-to-noise ratio is unavoidably degraded compared to the recorded
signal, because the deconvolution operation is simply recovering the
original signal before the low-pass filtering, noise and all.
Note that this process in figure 12 has an effect that is visually similar to resolution enhancement, although the later is done without knowledge of the broadening function that caused the peaks to overlap.
Figure 13. A different application of the deconvolution function is
the nature of an unknown data transformation function that has been
to a data set by the measurement instrument itself. In this example,
(top left) is a uv-visible absorption spectrum recorded from a
photodiode array spectrometer (X-axis: nanometers; Y-axis:
Window 2 (top right) is the first derivative of this spectrum produced
(unknown) algorithm in the software supplied with the spectrometer. The
objective here is to understand the nature of the
differentiation/smoothing algorithm that the instrument's software
uses. The signal in the bottom left is the result of deconvoluting the derivative spectrum (top right) from the original spectrum (top left). This therefore must be the convolution
function used by the differentiation algorithm
in the spectrometer's software. Rotating and expanding it on the x-axis
function easier to see (bottom right). Expressed in terms of the
whole numbers, the convolution series is seen to be +2, +1, 0, -1, -2.
This simple example of "reverse engineering" would make it easier
to compare results from other instruments or to duplicate these result
on other equipment.
When applying deconvolution to experimental data, to remove the effect
of a known broadening or low-pass filter operator caused by the
experimental system, a very serious signal-to-noise degradation
commonly occurs. Any noise added to the signal by the system after
the convolution by the broadening or low-pass filter operator will be
when the Fourier transform of the signal is divided by the Fourier
transform of the broadening operator, because the high frequency
components of the broadening operator (the denominator in the division
of the Fourier transforms) are typically very small, resulting in a
great amplification of high frequency noise in the resulting
deconvoluted signal. (See the Matlab/Octave code example at the bottom of this page). This can be controlled but not completely
eliminated by smoothing and by constraining the deconvolution to a
frequency region where the signal has a sufficiently high
signal-to-noise ratio. You can see this happening in the example in
Figure 12. However, this is not observed in the example in
Figure 13 because
in that case the noise is only in the original signal. The high frequency
components of the denominator in the division
of the Fourier transforms are typically much larger than in the previous example, and the only
additional noise comes from numerical round-off errors in the math
computations performed by the derivative and smoothing operation, which are almost always much smaller than the noise in
SPECTRUM, the freeware signal-processing application that accompanies this tutorial, includes a deconvolution function.
Matlab and Octave have a built-in function for deconvolution: deconv. An example of its application is shown below: the vector yc (line 6) represents a noisy measured signal that has been convoluted with a transfer function c before being measured. In line 7, c is deconvoluted from yc, in an attempt to recover the original y. This requires that the transfer function c be known. As explained above, there is significant amplification of any noise that is added after
the convolution by the transfer function (line 5). This script demonstrates
that there is a big difference beween noise added before the convolution (line 3) and noise added after the convolution (line 6).
x=0:.01:20;y=zeros(size(x)); y(900:1100)=1; % Create a rectangular function y, 200 points wide y=y+.01.*randn(size(y)); % Noise added before the convolution c=exp(-(1:length(y))./30); % exponential trailing convolution function, c yc=conv(y,c,'full')./sum(c); % Create exponential trailing rectangular function, yc % yc=yc+.01.*randn(size(yc)); % Noise added after the convolution ydc=deconv(yc,c).*sum(c); % Attempt to recover y by deconvoluting c from yc subplot(2,2,1);plot(x,y);title('original y');subplot(2,2,2);plot(x,c);title('c') subplot(2,2,3);plot(x,yc(1:2001));title('yc');subplot(2,2,4);plot(x,ydc);title('recovered y')Revised February, 2013. This page is maintained by Prof. Tom O'Haver , Department of Chemistry and
Biochemistry, The University of Maryland at College Park.
Comments, suggestions and questions should be directed to
Prof. O'Haver at firstname.lastname@example.org.
Unique visits since May 17, 2008: