Exercise in Prestack Migration under the Born Approximation

Figure 1. Velocity model obtained from SEG/EAGE salt model.

Goal: The goal is to learn how to compute prestack migration images under the Born approximation for prestack data.

Expected Outcome: Valuable prestack migration tool for generating synthetic shot gathers.

Skills Learned: Connecting theory and mathematics of Lippmmann-Schwinger Born approximation to generating migration images by MATLAB code.


  1. Download the prestack migration+modeling program migrate1.m and Ricker wavelet generator ricker.m. Also download the traveltime modeling program Mray.m and an example traveltime modeling program raymodel3.m, plotting routine plot1.m, and the prestack migration subroutine migvsp.m. Also download the model velvector vector in ascii format.

    The velocity model "velvector" is a vector of the velocity model in units of m/s. To display it type

    load velvector; %or load velvector.mat

  2. Examine the migration subroutine migvsp.m and convince yourself it performs prestack migration.
  3. Type migrate1 in MATLAB and generate final image. Which parts of image are well resolved and which parts are poorly resolved? Why?
  4. Current image is for every fifth shot gather. Test image results using coarser shot sampling. Comment on why image changes. Repeat test for finer sampling.
  5. Why are the imaged reflectors deeper than they are in the actual model? Hint, look at Ricker wavelet and how it is shifted from time zero.
  6. Implement dip limitation on code. Does it eliminate artifacts. Apply AGC to final migration image. Does it help bring up amplitudes. Would AGC applied to data be roughly equivalent?
  7. Apply obliquity factor to code. Comment on accuracy of resulting image compared to previous images.