ImageGather.jl documentation

ImageGather.jl provides computational QC tools for wave-equation based inversion. Namely we provides two main widely used workflows:

  • Surface offset gathers (also called surface common image gather). Surface gather compute images of (RTMs) for different offset to verify the accuracy of the background velocity. The method we implement here is based on the double-rtm method (Giboli et al., 2012) that allows the computation of the gather with two RTMs only instead of one per offset (or offset bin).
  • Subsurface offset gathers (also called subsurface common image gather) (Dafni and Symes, 2018).

Surface offset gathers

ImageGather.surface_gatherFunction
surface_gather(model, q, data; offsets=nothing, options=Options())

Compute the surface offset gathers volume (nx (X ny) X nz X no) for via the double rtm method whith no offsets.

Parameters

  • model: JUDI Model structure.
  • q: Source, judiVector.
  • data: Obeserved data, judiVector.
  • offsets: List of offsets to compute the gather at. Optional (defaults to 0:10*model.d:model.extent)
  • options: JUDI Options structure.
source
ImageGather.double_rtm_cigFunction
double_rtm_cig(model, q, data, offsets, options)

Compute the single shot contribution to the surface offset gather via double rtm. This single source contribution consists of the following steps:

  1. Mute direct arrival in the data.
  2. Compute standard RTM $R$.
  3. Compute the offset RTM $R_o$ for the the weighted data where each trace is weighted by its offset (rec_x - src_x).
  4. Compute the envelope $R_e = \mathcal{E}(R)$ and $R_{oe} = \mathcal{E}(R_o)$.
  5. Compute the offset map $\frac{R_e \odot R_{oe}}{R_e \odot R_e + \epsilon}$.
  6. Apply illumination correction and laplace filter $R_l = \mathcal{D} \Delta R$.
  7. Compute each offset contribution $\mathcal{I}[:, h] = R_l \odot \delta[ha - h]_{tol}$ delta_h.
  8. Return $\mathcal{I}$.
source

Subsurface offset gathers

ImageGather.judiExtendedJacobianType
J = judiExtendedJacobian(F, q, offsets; options::JUDIOptions, omni=false, dims=nothing)

Extended jacobian (extended Born modeling operator) for subsurface horsizontal offsets offsets. Its adjoint comput the subsurface common offset volume. In succint way, the extened born modeling Operator can summarized in a linear algebra frmaework as:

Options structure for seismic modeling.

omni: If true, the extended jacobian will be computed for all dimensions. dims: If omni is false, the extended jacobian will be computed for the dimension(s) specified in dims.

source

Utility functions

ImageGather.envelopeMethod
envelope(x)

Envelope of a vector or a 2D matrix. The envelope over the first dimension is taken for a 2D matrix (see DSP hilbert)

source
ImageGather.mute!Method
mute!(shot, offsets;vp=1500, t0=1/10, dt=0.004)

In place direct wave muting of a shot record with water sound speed vp, time sampling dt and firing time t0.

source
ImageGather.muteMethod
mute(shot, offsets;vp=1500, t0=1/10, dt=0.004)

Direct wave muting of a shot record with water sound speed vp, time sampling dt and firing time t0.

source
ImageGather.offset_mapMethod
offset_map(rtm, rtmo; scale=0)

Return the regularized least-square division of rtm and rtmo. The regularization consists of the envelope and moving average followed by the least-square division surface_gather

source

References