Deconvolution Tools for Seismic Signals

Introduction

A software developed by Wolfgang Stefan in cooperation with Rosie Renaut and Ed Garnero to deblur seismograms using Total Variation regularized deconvolution. An interactive Java application demonstrates the method and can be used to explore the impact of different parameter choices. Two Matlab examples show how this software can be used in a Matlab environment.

Download and install instructions

  • download the whole package including the sample data (~5Mb) and uncompress. This software requires Java VM >= 1.4.2.

The software is published under the GNU License. We ask everyone who uses our software to mention the following reference:

[1] Stefan, W., Garnero, E. and Renaut, R. A., Signal restoration through deconvolution applied to deep mantle seismic probes, preprint, http://math.asu.edu/~rosie.

Using the examples


In the main directory there is a java program called deconvDemo.java. To run it

  • set the CLASSPATH variable: e.g. "export CLASSPATH=$CLASSPATH:.:jnt.jar:jfft.jar:riso.jar:deblurrseismo.jar" (in Windows "set CLASSPATH=.;jnt.jar;jfftw.jar;riso.jar;deblurrseismo.jar")

  • run the program with: java deconvDemo

The top graph shows the original wave train and the deconvolved. The lower graph shows the original wave train and the forward projection of the deconvolved data i.e. the data fit. The labels are arrival time predictions from ray theory. Press the "run" button to start the reconstruction. The default settings should give a reconstruction similar to those in [1]. You can use the sliding controls to adjust the parameters while the algorithm is running. The left control changes the regularization parameter \lambda the right the PSF width \sigma.

  • \lambda controls the trade off between the smoothness of the reconstruction and the data fit. Very small values of \lambda will have a very good data fit in the lower graph, but also high noise in the reconstruction i.e. large oscillations. Large \lambda result in a smooth reconstruction. Very large \lambda will result in over smoothing of the signal and the reconstruction looses details until it is almost constant.

  • \sigma governs the width of the PSF, thus the amount of deblurring. A small \sigma will result in little deblurring, larger \sigma in more deblurring, however if \sigma is too large the forward projection looses the data fit, resulting in unwanted oscillations in the reconstruction.

Note you may have to press "run" again after a solution was found and the minimization is stopped.

Matlab

Two matlab programs, in the directory "matlab", demonstrate the usage of the code in Matlab. The file synth.m produces the graphs for the synthetic seismograms in [1], and realdata.m the graphs for the real data in [1].

Direct deconvolution in Matlab

Due to the java integration in Matlab it is very easy to use the code in Matlab. Assuming there is a vector g (the blurred signal) and a vector h (the PSF) the following code deconvolves g:

javaaddpath('deblurrseismo.jar');
javaaddpath('jnt.jar');
javaaddpath('riso.jar');
import edu.asu.seismo.signals.oned.*;
f_hat=blurset.deconvf(doubleSignal1d(g),psf1d(h),'v',lambda,1,1e-6,0,1e-6 );
plot(f_hat.vec());

Acknowledgment

This software uses parts of

  • JNT (The FFT routine is by Dr. Bruce R. Miller the Stopwatch is taken from SciMark 2.0 by Roldan Pozo and Bruce Miller.

  • The RISO Project.

  • A Java wrapper for FFTW by Daniel Darabos. In order to use FFTW you also have to download the original wrapper and FFTW 1.2 from www.fftw.org and compile the FFTW library as well as the wrapper library (jfftwlib) and set an appropriate path (e.g. LD_LIBRARY_PATH). The deconvolution tools will also work without fftw using a the native java FFT implementation from JNT but it will be considerably slower.

  • TauP.

  • The work was supported in part by an NSF Collaboration in Mathematical and Geosciences grant CMG-02223, and grant NSF 0513214.