pylops.waveeqprocessing.Deghosting#
- pylops.waveeqprocessing.Deghosting(p, nt, nr, dt, dr, vel, zrec, kind='p', pd=None, win=None, npad=(11, 11), ntaper=(11, 11), restriction=None, sptransf=None, solver=<function lsqr>, dottest=False, dtype='complex128', **kwargs_solver)[source]#
Wavefield deghosting.
Apply seismic wavefield decomposition from single-component (pressure or vertical velocity) data. This process is also generally referred to as model-based deghosting.
- Parameters
- p
np.ndarray
Pressure (or vertical velocity) data of of size \(\lbrack n_{r_x}\,(\times n_{r_y}) \times n_t \rbrack\) (or \(\lbrack n_{r_{x,\text{sub}}}\, (\times n_{r_{y,\text{sub}}}) \times n_t \rbrack\) in case a
restriction
operator is provided. Note that \(n_{r_{x,\text{sub}}}\) (and \(n_{r_{y,\text{sub}}}\)) must agree with the size of the output of this operator)- nt
int
Number of samples along the time axis
- nr
int
ortuple
Number of samples along the receiver axis (or axes)
- dt
float
Sampling along the time axis
- dr
float
ortuple
Sampling along the receiver array of the separated pressure consituents
- vel
float
Velocity along the receiver array (must be constant)
- zrec
float
Depth of receiver array
- kind
str
, optional New in version 2.3.0.
Type of data (
p
orvz
)- pd
np.ndarray
, optional Direct arrival to be subtracted from
p
- win
np.ndarray
, optional Time window to be applied to
p
to remove the direct arrival (ifpd=None
)- ntaper
float
ortuple
, optional Number of samples of taper applied to propagator to avoid edge effects
- npad
float
ortuple
, optional Number of samples of padding applied to propagator to avoid edge effects angle
- restriction
pylops.LinearOperator
, optional Restriction operator
- sptransf
pylops.LinearOperator
, optional Sparsifying operator
- solver
float
, optional Function handle of solver to be used if
kind='inverse'
- dottest
bool
, optional Apply dot-test
- dtype
str
, optional Type of elements in input array. If
None
, directly inferred fromp
- **kwargs_solver
Arbitrary keyword arguments for chosen
solver
- p
- Returns
- pup
np.ndarray
Up-going pressure (or particle velocity) wavefield
- pdown
np.ndarray
Down-going (or particle velocity) wavefield
- pup
- Raises
- ValueError
If
kind
is not “p” or “vz”.
Notes
The up- and down-going components of a seismic data (\(p^-(x, t)\) and \(p^+(x, t)\)) can be estimated from single-component data \(p(x, t)\) using a ghost model.
The basic idea [1] is that of using a one-way propagator in the f-k domain (also referred to as ghost model) to predict the down-going field from the up-going one (excluded the direct arrival and its source ghost referred here to as \(p_d(x, t)\)):
\[p^+ - p_d = e^{-j k_z 2 z_\text{rec}} p^-\]where \(k_z\) is the vertical wavenumber and \(z_\text{rec}\) is the depth of the array of receivers
In a matrix form we can thus write the total wavefield as:
\[\mathbf{p} - \mathbf{p_d} = (\mathbf{I} \pm \Phi) \mathbf{p}^-\]where \(\Phi\) is one-way propagator implemented via the
pylops.waveeqprocessing.PhaseShift
operator. Note that \(+\) is used for the pressure data, whilst \(-\) is used for the vertical velocity data.- 1
Amundsen, L., 1993, Wavenumber-based filtering of marine point-source data: GEOPHYSICS, 58, 1335–1348.