An algorithm for 3D residual static corrections

William S. Harlan (based on ideas from Greg Lazear)

1996

This algorithm is designed to obtain enough information in one pass through 3D surface seismic data to estimate reflection static corrections. During this pass, a running buffer retains traces whose sources and receivers are close to the next expected trace. Each new trace is cross-correlated with traces in the buffer, and the cross-correlations are saved in a disk file. The necessary static corrections are optimized iteratively from the saved correlation functions, and corrections are applied in a second and final pass through the data. This note uses a notation which might clarify the details.

Assume that surface seismic data amplitudes d(x_{i}, x^{k}, t) were recorded over time t for many pairs of 3D ground positions for sources x_{i} and receivers x^{k}. Sources are indexed with subscripts, and receivers with superscripts.

The time axis has been stretched according to some “normal moveout” which is a function of the source-receiver offset ∥x_{i} − x^{k}∥ and the midpoint ∥x_{i} + x^{k}∥/2. After such adjustments, nearby traces are assumed to resemble each other within a time window, except for time-invariant, surface-consistent source shifts Δt_{i} and receiver shifts Δt^{k}:

d(x_{i}, x^{k}, t) ≈ d(t − Δt_{i} − Δt^{k}) for t_{1} < t < t_{2}.  (1)

The approximation is expected to worsen as the collection of traces includes sources and receivers farther apart. The time window should be as deep as possible and should include strong reflections.

Define a cross correlation c_{ij}^{kl}(τ) for specific pairs of nearby sources and receivers:

c_{ij}^{kl}(τ) ≡ c_{ji}^{lk}(−τ) ≡ ∫_{t_{1}}^{t_{2}} d(x_{i}, x^{k}, t − τ) d(x_{j}, x^{l}, t) dt.  (2)

These crosscorrelations are calculated only between traces whose sources, receivers, and/or midpoints are within a limited distance of each other:

∥x_{i} − x_{j}∥ < x_{max} , ∥x^{k} − x^{l}∥ < x^{max} and ∥(x_{i} + x^{k})/2 − (x_{j} + x^{l})/2∥ < x^{max} . (3)

To the extent that our data model (1) is correct, then

the lags τ_{ij}^{kl} ≈ Δt_{i} − Δt_{j} + Δt^{k} − Δt^{l} will maximize c_{ij}^{kl}(τ_{ij}^{kl}). (4)

The following algorithm suggests itself. Pick lags τ_{ij}^{kl} that do maximize the correlations, then solve a least-squares problem:

find Δt_{i} and Δt^{k} to minimize ∑_{ijkl}(τ_{ij}^{kl} − Δt_{i} + Δt_{j} − Δt^{k} + Δt^{l})^{2}. (5)

The above algorithm requires that a great many noisy cross-correlations be picked for possibly unreliable peaks. Instead, we can prepare and model crosscorrelations of different partial sums of the data. Some information will be lost, but the sums will improve the signal-to-noise ratio of the correlations and will improve the reliability of the picked lags at correlation peaks.

Several partial sums are possible. The most common is probably a crosscorrelation of each trace with a stack of those traces that share a particular midpoint. (Remember the nearby-midpoint constraint in (3) applies to all crosscorrelations.)

C_{i}^{k}(τ) ≡ ∑_{jl} c_{ij}^{kl}(τ).  (6)

In addition we could calculate the following sums of all crosscorrelations sharing a trace with a particular source or receiver

C_{i}(τ) ≡ ∑_{jkl} c_{ij}^{kl}(τ) and C^{k}(τ) ≡ ∑_{ijl} c_{ij}^{kl}(τ)  (7)

or also calculate the sum of all crosscorrelations sharing traces with a particular pair of sources or receivers

C_{ij}(τ) ≡ ∑_{kl} c_{ij}^{kl}(τ) and C^{kl}(τ) ≡ ∑_{ij} c_{ij}^{kl}(τ).  (8)

Again we limit sums to nearby traces as in (3). We can examine the lags over a limited range |τ| < τ_{max} and find the peaks of any of these summed crosscorrelations:

{τ_{i}^{k}, τ_{i}, τ^{k}, τ_{ij}, τ^{kl}} maximize C_{i}^{k}(τ_{i}^{k}), C_{i}(τ_{i}), C^{k}(τ^{k}), C_{ij}(τ_{ij}), and C^{kl}(τ^{kl}).

(9)

The peaks of the crosscorrelations should ideally coincide with sums of surfaceconsistent shifts. To fit any or all of these picked peaks, find the sum of source shifts Δt_{i} and receiver shifts Δt^{k} which fit the picked lags in a least-squares sense:

min_{Δt_{i}Δt^{k}} ∑_{i,k}(τ_{i}^{k} − Δt_{i} − Δt^{k})^{2} + ∑_{i}(τ_{i} − Δt_{i})^{2} + ∑_{k}(τ^{k} − Δt^{k})^{2} +

∑_{i,j}(τ_{ij} − Δt_{i} + Δt_{j})^{2} + ∑_{k,l}(τ^{kl} − Δt^{k} + Δt^{l})^{2} (10)

The simplest algorithm would use only the first of these sums.

We could also maximize summed crosscorrelations more directly, but the non-linearity is more inconvenient:

max_{Δt_{i}Δt^{k}} [C_{i}^{k}(Δt_{i} + Δt^{k}) + C_{i}(Δt_{i}) + C^{k}(Δt^{k}) + C_{ij}(Δt_{i} + Δt_{j}) + C^{kl}(Δt^{k} + Δt^{l})]

(11)

The original data are corrected implicitly with these shifts:

d(x_{i}, x^{k}, t) ⇐ d(x_{i}, x^{k}, t − Δt_{i} − Δt^{k}).  (12)

We could begin the algorithm again with these corrected data, improving the ability to pick correlation peaks. In practice we need not correct the data explicitly. We only adjust the original crosscorrelations:

c_{ij}^{kl}(τ) ⇐ c_{ij}^{kl}(τ − Δt_{i} + Δt_{j} − Δt^{k} + Δt^{l}).  (13)

We can then recalculate the sums (6), (7), and (8) and repeat the rest of the algorithm. After convergence, the data are explicitly corrected with the accumulated shifts.