next up previous print clean
Next: About this document ... Up: DIP PICKING WITHOUT DIP Previous: The plane-wave destructor

Moving windows for nonstationarity

Wavefronts generally curve. But a curved line viewed only over a small range is barely distinguishable from a straight line. A straight-line wavefront is much easier to manage than a curved one. If we think of the slope of the line as a parameter estimated statistically, then it is a nonstationary variable--it varies from place to place. So we can work with curved wavefronts by working in a small window that is moved around. The main thing to beware of about small windows is that unless we are very careful, their side boundaries may bias the result.

The puck() method was designed to be ignorant of side boundaries: it can be applied in a small window and the window moved freely around the data. A strength of the puck() method is that the window can be smaller than a wavelength--it can be merely two traces wide. A sample based on synthetic data is shown in Figures 9 through 11. The synthetic data in 9 mimics a reflection seismic field profile, including one trace that is slightly delayed as if recorded on a patch of unconsolidated soil.

Figure 7
Input synthetic data.

view burn build edit restore

Notice a low level of noise in the synthetic data.

Figure 10 shows the residual.

Figure 8
Residuals, i.e., an evaluation of Ux +p Ut.

view burn build edit restore

The residual is small in the central region of the data; it is large where there is spatial aliasing; and it is large at the transient onset of the signal. The residual is rough because of the noise in the signal, because it is made from derivatives, and because the synthetic data was made by nearest-neighbor interpolation. Notice that the residual is not particularly large for the delayed trace.

Figure 11 shows the dips.

Figure 9
Output values of p are shown by the slope of short line segments.

view burn build edit restore

The most significant feature of this figure is the sharp localization of the dips surrounding the delayed trace. Other methods based on wave or Fourier concepts might lead us to conclude that the aperture must be large to resolve a wide range of angles. Here we have a narrow aperture (two traces), but the dip can change rapidly and widely.

Subroutine slider() [*] below shows the code that generated Figure 9 through 11. 

# slide a window around on a wall of data measuring coherency, dip, residual
subroutine slider( n1,n2, w1,w2, k1,k2, data, coh, pp, res)
integer i1,i2,     n1,n2, w1,w2, k1,k2,                    s1,s2, e1,e2
integer p1,p2                           # number of subwindows is p1*p2
real    data(n1,n2)                     # input
real    res(n1,n2)                      # outputs. math size (n1-1,n2-1)
real    pp(n1,n2), coh(n1,n2)           # outputs defined at pp( 1..p1, 1..p2)
temporary real  count( n1,n2)
temporary real  window(w1,w2), tres(w1-1,w2-1)
call null(      count, n1*n2)
call null(        res, n1*n2)
p2=0; e2=w2; while( e2<=n2) {  p2=p2+1; s2=e2-w2+1
p1=1; e1=w1; while( e1<=n1) {  p1=p1+1; s1=e1-w1+1
        do i1 = 1, w1 {
        do i2 = 1, w2 { window(i1,i2) = data(i1+s1-1,i2+s2-1)
        call null(                                         tres, (w1-1)*(w2-1))
        call puck ( w1, w2, window, coh(p1,p2), pp(p1,p2), tres)
        do i1= s1, e1-1 {
        do i2= s2, e2-1 {
                res(  i1,i2) =    res(i1,i2) + tres( i1-s1+1, i2-s2+1)
                count(i1,i2) =  count(i1,i2) + 1.
        e1=e1+k1            }
        e2=e2+k2            }
do i2= 1, n2-1 {
do i1= 1, n1-1 {        if( count(i1,i2) > 0. )
                                res(i1,i2) = res(i1,i2) / count(i1,i2)
return; end

A disadvantage of the puck() method is that the finite-difference operator is susceptible to spatial aliasing as well as to distortions at spatial frequencies that are high but not yet aliased. This suggests a logical step--estimating missing interlaced traces--which we take up in chapter [*].


  1. It is possible to reject two dips with the operator
(\partial_x+p_1\partial_t)(\partial_x+p_2\partial_t)\end{displaymath} (32)
    This is equivalent to
 {\partial^2 \over \partial x^2}
 + a
 {\partial^2 \o...
 ...partial t^2}
 \right) \, u(t,x)
 \eq v(t,x) \quad\approx\quad 0\end{displaymath} (33)
    where u is the input signal and v is the output signal. Show how to solve for a and b by minimizing the energy in v.
  2. Given a and b from the previous exercise, what are p1 and p2?


next up previous print clean
Next: About this document ... Up: DIP PICKING WITHOUT DIP Previous: The plane-wave destructor
Stanford Exploration Project