![]() |
![]() |
![]() |
![]() | Moveout, velocity, and stacking | ![]() |
![]() |
![]() |
![]() |
![]() |
(8) |
![]() |
![]() |
![]() |
(9) |
A seismic trace is a signal
recorded at some constant
.
We can convert the trace
to a ``vertical propagation'' signal
by stretching
to
.
This process is called
``normal moveout correction'' (NMO).
Typically we have many traces at different
distances
each of which theoretically produces the same
hypothetical zero-offset trace.
Figure 4.1 shows a marine shot profile
before and after NMO correction at the water velocity.
You can notice that the wave packet reflected from the ocean bottom
is approximately a constant width on the raw data.
After NMO, however,
this waveform broadens considerably--a phenomenon known
as ``NMO stretch."
stretch
Figure 1. Marine data moved out with water velocity. Input on the left, output on the right. |
![]() |
---|---|
![]() ![]() ![]() |
The NMO transformation is representable as a square matrix.
The matrix
is a
-plane containing all zeros
except an interpolation operator centered along the hyperbola.
The dots in the matrix below are zeros.
The input signal
is put into the vector
.
The output vector
--i.e., the NMO'ed signal--is simply
.
In real life examples such as Figure 4.1
the subscript goes up to about one thousand instead of
merely to ten.
You can think of the matrix as having a horizontal -axis and
a vertical
-axis.
The 1's in the matrix are arranged on the hyperbola
.
The transpose matrix defining some
from
gives synthetic data
from the zero-offset
(or stack) model
, namely,
A program for nearest-neighbor normal moveout as defined by
equations (4.10) and (4.11)
is nmo0().
Because of the limited alphabet of programming languages,
I used the keystroke z to denote .
for (iz=0; iz < n; iz++) { z = t0 + dt*iz; /* Travel-time depth */ xs= x * slow[iz]; t = hypotf(z,xs); /* Hypotenuse */ it = 0.5 + (t - t0) / dt; /* Round to nearest neighbor. */ if( it < n ) { if( adj ) zz[iz] += tt[it]; else tt[it] += zz[iz]; } } |
Normal moveout is a linear operation.
This means that data can be decomposed into any two parts,
early and late,
high frequency and low,
smooth and rough,
steep and shallow dip, etc.;
and whether the two parts
are NMO'ed either separately or together, the result is the same.
The reason normal moveout is a linear operation
is that we have shown it is effectively a matrix multiply operation
and that operation fulfills
.
![]() |
![]() |
![]() |
![]() | Moveout, velocity, and stacking | ![]() |
![]() |