Deconvolution problem is a subset of inversion, in which observed data is deconvolved to reconstruct the model given the blurring function or source wavelet. Items of inversion including “resolution”, “error”, “regularization”, et. al also apply to deconvolution. Besides, deconvolution always associates transformation between time domain and frequency domain. Thus, principles inherited from digital singal processing apply to deconvolution. In other words, deconvolution is very complex, though massive codes and programs could output a time series in a blink of eye given no matter what kind of data input. Without comprehension of deconvolution and inversion, programs could be misused to provide wrong results. This blog attempts to theories and implementations of deconvolution.
- Convolution
- Deconvolution in frequency domain
- Iterative deconvolution in time domain
- Error and resolution estimation
- Implementations
Convolution
Convolution in time domain corresponds to multiplication in frequency domain:
$$\begin{eqnarray} r(t) & = & m(t) \otimes s(t) \label{convo_time}\\ R(\omega) & = & M(\omega) S(\omega) \label{convo_freq} \end{eqnarray}$$in $\eqref{convo_time}$, $s(t)$ is the source wavelet or blurring function, $r(t)$ is the observed data, and $m(t)$ is the impulse repsonse of the model. Theoretically, given $s(t)$ and $r(t)$, $m(t)$ could be calculated by division according to $\eqref{convo_freq}$
However, $\eqref{decon_div}$ always present problematic results because observations $r(t)$ contain noise, and some values of $s(\omega)$ approach zero, which result in instablities in the division.
Deconvolution in frequency domain
Considering noise $n(t)$, $\eqref{convo_time}$ should be:
In deconvolution, we aim to find a time series $s’(t)$, which acts like the inverse of the source wavelet or blurring function $s(t)$. So the convolution of $s’(t)$ and $s(t)$ will produces a desired resolution function $h(t)$, being impulse function theoretically.
Let us define:
$\hat{m}(t)$ is the calculated model, $res(t)$ is the resolution function, and $err(t)$ is the model error:
In deconvolution, the real resolution function $res(t)$ should approximates desired one $h(t)$, and model error $err(t)$ should approximates zero. Trade-off exists for these two approaches. Thus, an objective function is built:
according to Parseval’s theorem, in the frequency domain, $\eqref{obj_func}$ has the form of:
When objective function approach the minimal value, the derivative of $obj$ to $S’(\omega)$ should be zero. Corresponding $S’(\omega)$ is :
Choose gaussian function as desired resolution function, and estimate the noise $|N(\omega)|^2$ on the basis of observation and signal to noise energy ratio $\nu$.
$\sigma_0^2$ is the self-correlation of $S(t)$, and $c = b \nu$.
From the viewpoint to regularization, an item of $c\sigma_0^2$ is added to the denominator. So instablity result from the near-zero value of $S(\omega)S^*(\omega)$ is reduced.
Likewise, we could build the solver equation of:
which is the water-level regularization deconvolution.
Iterative deconvolution in time domain
For time series, the model $m(t)$ is superposition of impulse functions:
To determine $m_1$ and $t_1$, the error $\eqref{err_iter}$ should approach its minimal value.
Corresponding $m_1$ and $\Delta_1$ could be calculated assuming $ \frac{\partial \Delta_1} {\partial m_1} = 0 $:
Obviously, $[\int_{-\infty}^{+\infty}r(t)s(t-t_1)dt ]^2 $ should approach its maximal value so that the error $\Delta_1 $ approach its minimum. Under this criterion, $t_1$ could be acquired by traversal.
After obtaining $m_1$ and $t_1$, we subtract $m_1h(t-t_1)$ from $r(t)$ and get residual time series:
Likewise, $m_2$ and $t_2$ could be obtain by applying above procedure to $r’(t)$. This kind of procedure is iterated for N times until no more significant decrease in the residual time series occurs. The model could be applying a gausssian function to $\eqref{superposition}$ with $ m_i$ and $t_i(i=1,2,…N)$. Besides, synthetic observation and error are:
Error and resolution estimation
It is important to evaluate the results of deconvolution, thus to choose the optimal regularization factor $c$ in $ \eqref{mod} $, $\eqref{mod_water_level}$, $N$ for iteration deconvolution, and gaussian factor.
First, to determine the error of our result, the calculated model $\hat{m}{t}$ is convolved with $s(t)$, and then compared with observation $r(t)$:
Second, for resolution estimation. A simply way to obtain resolution function is to deconvolve $s(t)$ from itself. Since we desire a gaussian shape resolution function in derivations, the calculated one will approximates gaussian function.
Resolution estimation for $eqref{mod}$ and $\eqref{mod_water_level}$:
Implementations
You could design your codes according to deconvolution equtions. CPS provide programs of sacdecon
for deconvolution in frequency domain, and saciterd
for iteration deconvolution in time domain. Besides, package of hk provides decon
and iter_decon
as well. These programs differs slighty in the output. To find their usages details, please vist package homepage or XX.
You could find examples of deconvolution for receiver functions at XX.