Commit 6b65540e authored by thomas.forbriger's avatar thomas.forbriger Committed by thomas.forbriger
Browse files

finished theory behind blind deconvolution

This is a legacy commit from before 2015-03-01.
It may be incomplete as well as inconsistent.
See COPYING.legacy and README.history for details.

SVN Path:     http://gpitrsvn.gpi.uni-karlsruhe.de/repos/TFSoftware/trunk
SVN Revision: 3987
SVN UUID:     67feda4a-a26e-11df-9d6e-31afc202ad0c
parent 8c95367b
......@@ -105,6 +105,83 @@ namespace stfinv {
* Now \f$\eta\f$ and \f$\lambda\f$ have to be used to balance the
* regularization.
* We aim to specify a waterlevel as a fraction of synthetic data energy.
* .
* The misfit equals one if the scaled energy of the residual
* \f$d_{lk}-s_{lk}q_l\f$ equals the scaled energy of the synthetics
* \f$s_{lk}\f$ and
* \f[
* \eta^2=\frac{1}{\sum\limits_k f_k\sum\limits_l \left|s_{lk}\right|^2}
* \f]
* is the reciprocal of the scaled energy of the synthetics.
* If we then choose
* \f[
* \frac{\lambda^2}{\eta^2}=\frac{\epsilon^2}{N\eta^2}=
* \frac{\epsilon^2}{N}\sum\limits_k f_k\sum\limits_{l=0}^{N-1}
* \left|s_{lk}\right|^2
* \f]
* where \f$N\f$ is the number of frequencies, then \f$\epsilon^2\f$
* will specify a waterlevel as a fraction of the scaled energy of the
* synthetics.
*
* \par Using Parceval's Theorem to calculate signal energy
* Parceval's Theorem for a signal \f$a(t)\f$ and its Fourier transform
* \f$\tilde{a}(\omega)\f$ is
* \f[
* \int\limits_{-\infty}^{+\infty}\bigl|a(t)\bigr|^2\,\textrm{d} t=
* \int\limits_{-\infty}^{+\infty}\bigl|\tilde{a}(\omega)\bigr|^2\,
* \frac{\textrm{d} \omega}{2\pi}.
* \f]
* If \f$S_k\f$ are the time series samples corresponding to the Fourier
* coefficients \f$\tilde{s}_l\f$ and \f$\Delta t\f$ is the sampling
* interval then
* \f[
* \sum\limits_{k=0}^{M-1}\left|S_k\right|^2\,\Delta t=
* \sum\limits_{l=0}^{M-1}\left|\tilde{s}_l\right|^2\,\frac{1}{M\,\Delta t}.
* \f]
* In the above calculation the energy sum only uses the positive
* frequencies
* \f[
* \sum\limits_k f_k\sum\limits_{l=0}^{N-1}\left|\tilde{s}_{lk}\right|^2
* =
* 2N\,(\Delta t)^2\,
* \sum\limits_k f_k
* \sum\limits_{k=0}^{2N-1}\left|S_{lk}\right|^2.
* \f]
* Fourier coefficients \f$s_{lk}\f$ calculated by the
* stfinv::STFFourierDomainEngine are not scaled (see documentation of
* libfourierxx and libfftw3), such that
* \f[
* \Delta t\,s_{lk}=\tilde{s}_{lk}.
* \f]
* Consequently
* \f[
* \sum\limits_k f_k\sum\limits_{l=0}^{N-1}\left|s_{lk}\right|^2
* =
* 2N\,
* \sum\limits_k f_k
* \sum\limits_{k=0}^{2N-1}\left|S_{lk}\right|^2.
* \f]
*
* \par Final calculation recipe
* The solution to our problem is
* \f[
* q_l=\frac{
* \sum\limits_{k}f_k^2\,s_{kl}^\ast\,d_{kl}
* }{
* 2\epsilon^2\,\sum\limits_k f_k
* \sum\limits_{k=0}^{2N-1}\left|S_{lk}\right|^2
* +\sum\limits_{k}f_k^2\,s_{kl}^\ast\,s_{kl}
* }
* \quad\forall\, l,
* \f]
* where
* \f[
* \sum\limits_{k=0}^{2N-1}\left|S_{lk}\right|^2
* \f]
* is the sum of the squared sample values \f$S_{lk}\f$ of the synthetic
* time series for receiver \f$k\f$, \f$f_k\f$ are the scaling factors
* provided by stfinv::STFBaseEngine::weight(), and \f$\epsilon^2\f$
* is the water level parameter passed to STFEngineBlindDeconvolution.
*/
class STFEngineBlindDeconvolution: public stfinv::STFFourierDomainEngine {
public:
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment