previous up next print clean
Next: USE OF ANTIALIASING PARAMETER Up: Claerbout: Antialiasing with triangles Previous: CODING NMO WITH TRIANGLES

MIGRATION

Subroutine aamig() below does migration and diffraction modeling using subroutine trimo() as the workhorse.
# anti-aliased kirchhoff migration (conj=1) and modeling (conj=0)
#
subroutine aamig( conj,add, slow,antialias,t0,dt, dx, nt,nx, image, data  )
integer conj, add, ix, nx, nt, iy
real	h,              slow(nt),antialias,t0,dt, dx, image(nt,nx), data(nt,nx)
call conjnull(    conj, add,                          image,nt*nx,  data,nt*nx)
do ix= 1, nx {
do iy= 1, nx {
	h  = dx * (iy - ix)
	call trimo( conj, 1, t0,dt,dx, h, nt,slow, 0., 1., antialias,
							image(1,iy), data(1,ix))
	}}
return; end
Figure 8 shows the synthetic image that is used for testing. There is a horizontal layer, a dipping layer, and a few impulses. The impulses are chosen stronger than the layers because they will spread out in the synthetic data.

 
aamod
Figure 8
Model image for migration study.

aamod
view burn build edit restore

The velocity is taken constant. Figure 9 shows synthetic data made without regard for aliasing. The hyperbolas look fine--the way we expect. The horizontal layer, however, is followed by many pseudo layers. These pseudo layers are the result of modeling with an operator that is spatially aliased.

 
aad0
Figure 9
Synthetic data without regard for aliasing. Made from model image with aamig() taking antialias=0.

aad0
view burn build edit restore

Figure 10 shows how the synthetic data improves dramatically when aliasing is taken into account. The layers look fine now. The hyperbolas, however, have a waveform that is rapidly changing with offset from the apex. This changing waveform is an inevitable consequence of the anti-aliasing. The apex has a huge amplitude because the temporal bandwidth is widest at the apex (because the dip is zero there, there is no filtering away of high spatial frequencies). Simple low-pass temporal filtering (not shown) will cause the wavelet to be largely independent of offset.

 
aad1
Figure 10
Synthetic data accounting for aliasing. Made from model image with aamig() taking antialias=1.

aad1
view burn build edit restore

Do not confuse aliased data with synthetic data made by an aliased operator. To make aliased data, you would start from good data, such as Figure 10, and throw out alternate traces. More typically, the earth makes good data and we fail to record all the needed traces for the quality of our field arrays.

The horizontal layer in Figure 10 has a waveform that resembles a damped step function. It can be shown mathematically that: the decay is proportional to $1/\sqrt{t}$;this wavelet has an amplitude spectrum proportional to $1/\sqrt{\omega}$;and the phase is such that this waveform can be converted back to about the impulsive waveform in the original synthetic image by a causal half-order derivative operator. The half-order derivative operator is well known Kjartansson (1979), Claerbout (1985) and 1992. For Figure 11 I used the subroutine halfdif() given in PVI. You can see the final flat-layer waveform is roughly the zero-phase shape we started with.

 
aad1h
Figure 11
Best synthetic data. Made from model image using aamig() with antialias=1 followed by a causal half-order time derivative. Lowpass temporal filtering would make wavelets more independent of location on a hyperbola.

aad1h
view burn build edit restore

Figure 12 shows my best migration of my best synthetic data. All the features of the original model are apparant. Naturally, high frequencies are lost, more on the dipping bed than the level one. Likewise the broadening of the deeper point scatterer compared to the shallow one is a well known aperture effect.

 
aamig2
Figure 12
Best migration of best synthetic data. Uses aamig() with antialias=2 followed by an anticausal half-order time derivative.

aamig2
view burn build edit restore

Figure 13 shows what happens when antialiasing is ignored in migration. Notice many false layers above the given horizontal layer. Notice semicircles above the impulses. Notice apparent noise everywhere.

 
aamig0
Figure 13
Migration of best synthetic data without regard for aliasing. Uses aamig() with antialias=0. (and an anticausal half-order time derivative)

aamig0
view burn build edit restore


previous up next print clean
Next: USE OF ANTIALIASING PARAMETER Up: Claerbout: Antialiasing with triangles Previous: CODING NMO WITH TRIANGLES
Stanford Exploration Project
11/18/1997