2D ocean-bottom marine acquisition via jittered sampling: examples and results
Author: Haneet Wason (hwason@eos.ubc.ca)
Date: April, 2013
Contents
Time-jittered acquisition with 1 boat
See the scripts under examples/TimeJitAcq_1boat/.
Load the parameters file
load([resultsdir '/TimeJitAcq_1boat/TimeJitAcq_1boat_params.mat'])
Conventional vs. time-jittered acquisition scenario
flipflop = 'no'; fig = 'yes'; convacq_2arrays(flipflop, tfireint_min, ns, dt, boatspeed, fig); jitter_airgunarrays(ns, ds, dt, p, nboats, randseed, boatspeed, tfireint_min, tdelay, delayboat, fig);
Boat 1 - airgun array 1 Minimum interval between jittered firing times: 10.228 s Maximum interval between jittered firing times: 29.7719 s First jittered shot number: 1 Last jittered shot number: 126 Boat 1 - airgun array 2 Minimum interval between jittered firing times: 10.4796 s Maximum interval between jittered firing times: 29.5199 s First jittered shot number: 2 Last jittered shot number: 124
Original data
frame.t = 300; frame.r = 60; frame.s = 92; caxmin = 100; caxmax = 100; cmap = 'gray'; image2DTRSframe([resultsdir '/TimeJitAcq_1boat/Suez_ds25m.rsf'], frame, nt, dt, caxmin, caxmax, cmap);
Time-jittered (or blended) data volume: view 30 seconds of the jittered data volume
t1 = 130.0;
t2 = 160.0;
imageJitteredData([resultsdir '/TimeJitAcq_1boat/TimeJitAcq_1boat_jitdata.rsf'], t1, t2, dt, nr, dr, caxmin, caxmax, cmap);
Recovery by conventional processing: apply the adjoint of the sampling operator
image2DTRSframe([resultsdir '/TimeJitAcq_1boat/TimeJitAcq_1boat_adjrecov.rsf'], frame, nt, dt, caxmin, caxmax, cmap);
NOTE: an empty shot gather image implies that none of the airguns fired at that location.
This step is usually followed by some kind of median filtering on common receiver or CMP gathers. We address the challenge of deblending by a (curvelet-based) sparsity-promoting recovery technique.
Recovery by sparse inversion (via L1 minimization)
image2DTRSframe([resultsdir '/TimeJitAcq_1boat/TimeJitAcq_1boat_L1recov.rsf'], frame, nt, dt, caxmin, caxmax, cmap);
Difference
image2DTRSframe([resultsdir '/TimeJitAcq_1boat/TimeJitAcq_1boat_L1diff.rsf'], frame, nt, dt, caxmin, caxmax, cmap);
Time-jittered acquisition with 2 boats
See the scripts under examples/TimeJitAcq_2boats/.
Load the parameters file
load([resultsdir '/TimeJitAcq_2boats/TimeJitAcq_2boats_params.mat'])
Time-jittered acquisition scenario
fig = 'yes';
jitter_airgunarrays(ns, ds, dt, p, nboats, randseed, boatspeed, tfireint_min, tdelay, delayboat, fig);
Boat 1 - airgun array 1 Minimum interval between jittered firing times: 10.228 s Maximum interval between jittered firing times: 29.695 s First jittered shot number: 3 Last jittered shot number: 124 Boat 1 - airgun array 2 Minimum interval between jittered firing times: 10.4861 s Maximum interval between jittered firing times: 29.2786 s First jittered shot number: 2 Last jittered shot number: 119 Boat 2 - airgun array 1 Minimum interval between jittered firing times: 10.4796 s Maximum interval between jittered firing times: 29.5199 s First jittered shot number: 2 Last jittered shot number: 122 Boat 2 - airgun array 2 Minimum interval between jittered firing times: 10.498 s Maximum interval between jittered firing times: 29.5598 s First jittered shot number: 2 Last jittered shot number: 128
Original data
frame.t = 300;
frame.r = 70;
frame.s = 30;
image2DTRSframe([resultsdir '/TimeJitAcq_2boats/Suez_ds12pt5m.rsf'], frame, nt, dt, caxmin, caxmax, cmap);
Time-jittered (or blended) data volume: view 30 seconds of the jittered data volume
t1 = 330.0;
t2 = 360.0;
imageJitteredData([resultsdir '/TimeJitAcq_2boats/TimeJitAcq_2boats_jitdata.rsf'], t1, t2, dt, nr, dr, caxmin, caxmax, cmap);
Recovery by conventional processing: apply the adjoint of the sampling operator
image2DTRSframe([resultsdir '/TimeJitAcq_2boats/TimeJitAcq_2boats_adjrecov.rsf'], frame, nt, dt, caxmin, caxmax, cmap);
This step is usually followed by some kind of median filtering on common receiver or CMP gathers. We address the challenge of deblending by a (curvelet-based) sparsity-promoting recovery technique.
Recovery by sparse inversion (via L1 minimization)
image2DTRSframe([resultsdir '/TimeJitAcq_2boats/TimeJitAcq_2boats_L1recov.rsf'], frame, nt, dt, caxmin, caxmax, cmap);
Difference
image2DTRSframe([resultsdir '/TimeJitAcq_2boats/TimeJitAcq_2boats_L1diff.rsf'], frame, nt, dt, caxmin, caxmax, cmap);
Running the code on your own data
Template scripts are included that can be adapted to run the code on your own data. See the scripts directory.