Code description

There are two testing Matlab scripts and four main subroutines and three related subroutines that are required by the Matlab scripts in the Matlab package.

  1. test_dmssa_denoise.m This script is used to run the denoising demonstration using the synthetic 3D seismic data. It is based on the algorithm described in Huang et al. (2016).
  2. test_dmssa_recon.m This script is used to run the simultaneous denoising and reconstruction of the incomplete and noisy synthetic 3D seismic data. It will generate all the required binary files for Figures 1,3,4. For quick look at the performance, some 2D image comparisons will also be generated automatically.

The main source subroutines are listed below. All the input and output parameters are clearly annotated in the subroutines.

  1. fxymssa.m This code is used for MSSA based denoising for 2D/3D seismic data.

  2. fxydmssa.m This code is used for DMSSA based denoising for 2D/3D seismic data.

  3. fxymssa_recon.m This code is used for MSSA based simultaneous denoising and reconstruction for 2D/3D seismic data.

  4. fxydmssa_recon.m This code is used for DMSSA based simultaneous denoising and reconstruction for 2D/3D seismic data.

The other source subroutines are listed below.

  1. genmask.m This code is used for generating the random mask sampling operator (Chen et al., 2015) for the reconstruction test.

  2. rperm.m This code is used for permutating the seismic traces randomly.

  3. snrcyk.m This code is used to numerically measure the signal-to-noise ratio (SNR) of the reconstructed and denoised data based on the criteria introduced in Chen and Fomel (2015).

There are five different functions in the main subroutines

  1. P_H() This function corresponds to the Hankelization operator $\mathcal{H}$ in equations 11 and 12.
  2. P_R() This function corresponds to the rank reduction operator $\mathcal{R}$ in equation 12.
  3. P_RD() This function corresponds to the damped rank reduction operator $\mathcal{R}_d$ in equation 11.
  4. P_A() This function corresponds to the averaging operator $\mathcal{A}$ in equations 11 and 12.
  5. ave_antid() This function applies averaging along the anti-diagonals of an input matrix.

The only difference between the traditional MSSA program and the proposed DMSSA program is the rank reduction operator. For a better comparison, we copy the interior functions P_R() and P_RD() as follows:

The second to fourth lines in P_RD() correspond to applying the damping operator expressed in 9. It is worth mentioning that for truncated singular value decomposition, it is faster to use the Matlab function svds() instead of svd() when the size of the input matrix is large. However, svd() is faster than svds() when data size is small. Readers are encouraged to adjust such trivial modification according to specific tasks.

There is also a Python script called SConstruct. It is used for generating the final 2D/3D figures used in the paper. It should be run in the Madagascar software platform (Fomel et al., 2013), which is an open-source geophysical processing software package, which is available for download at $www.ahay.org$.


2020-03-10