Summary: Here we compare two different methods for interpreting data from a seismic survey.
Note: Your browser may not currently support MathML. See our browser support page for additional details. You can always view the correct math in the PDF version.
The data from a seismic survey appears in the form of time series vectors, representing samples of the received acoustic signals over a fixed period of time. In our simulation example, the samples come every 4 ms (Fs = 250 Hz) and the vectors are 512 samples (2.048 s) in length. There is one time vector for each source/receiver combination, so for our example, we have 32 sources and 128 receivers for a total of 4096 time vectors. Therefore, our raw data will be represented as a 512x4096 matrix which we will load into MATLAB.
At this point, it is necessary to process this matrix and map this data onto a grid so that the shape of the formations we are studying may be determined. The basic technique involving ellipses has been described above, so all the program needs to do is to draw the ellipses, weighted by the magnitude of the time samples, and add the results for each time vector.
We consider now, two possible algorithms for drawing the necessary ellipses. The first method will traverse every pixel on the grid and at each point plot the value of the correct sample from the time vector. The second method will traverse the time vector and for each sample will plot an ellipse of appropriate magnitude.
What do we need to consider when comparing these two methods? First of all, there are 4096 vectors so this problem can become computationally very costly. For each method, we seek to find a standard run-time and evaluate different methods of optimizing this run time. Additionally, we hope to resolve as clear a picture as possible, so we should compare the graphs of the final answers to see which resolution is clearer.
For every point, we can calculate the total distance required to travel from the source to that point and then to the receiver using the distance formula on the (X,Y) coordinates of the point, the source, and the receiver.
We may now divide by velocity to get the time in seconds, and then we may again divide by the sample period to get an index for the time series vector that corresponds to this point.
Note that this value for time will not be an integer, so we must interpolate using the time series indices above and below it.
A simple linear interpolation method will give us an appropriate value that is weighted based on how close t is to t-minus and t-plus.
We finish by applying these equations to every point on the grid. This will trace out the ellipse patterns we desire for a given source-receiver pair.
Taking one source-receiver pair's time vector, we first find the distance between the source and receiver. This distance is the minimum distance a signal must traverse. Since each sample in a time vector is 4ms, and we know that a wave travels at 1500m/s, the nth sample in a time vector takes n*4ms to travel n*0.004s*1500m/s. If the nth sample distance less than the distance between the source and receiver, it is ignored since it is bad data. Usually these samples have a received signal value of 0 anyway.
If the sample qualifies as valid, we must find the ellipse which satisfies the condition that the sample distance equals the distance to the reflection surface and back. Using ellipse properties, we can see that the points of this ellipse can be found relative either the source or receiver.The equation for the ellipse in polar coordinates (r,phi) from one focus is:
where e is the eccentricity of the ellipse, a is the semi-major axes, and c is the distance of the focus to the center of the ellipse. The geometry for finding a and c is shown below:
We know c as the distance between the source and receiver divided by 2. a can be found by realizing that:
b can be obtained since the hypotenuse of each right triangle is equal to half the sample distance. A little trigonometry takes care of finding b:
Eccentricity e is simply defined as:
We then plug all this into Equation (6) and get a vector of radii for all phi between pi and 2*pi (the negative half of the unit circle).
This vector is mapped to the image grid via the matlab command pol2cart and the shifted by c to bring the ellipse into line with the focii (source and receiver).
Finally, the value of the time sample is then added to these grid coordinates. The process is repeated for each source-receiver time vector.
Both methods require treating each of the 4096 vectors separately and traversing the vectors one by one. Therefore, we can talk about efficiency in terms of the time required to process one vector and extrapolate this to total processing time. Without any optimizations, both methods take several seconds to process one vector, which means that total process time is on the order of 5-10 hours. So how can we reduce these times? Well, one obvious answer would be to use a different computing simulator or work with a language more optimized for this type of processing. However, for our purposes, let’s only consider optimizations to the actual algorithms.
For method one, the main factor we can control is the size of the grid. We may greatly reduce our processing time by simply searching a smaller grid. The idea is to traverse the entire grid for the first few vectors and then to only traverse the areas where the magnitude is greater than some threshold. It is possible, in this way, to decrease the area by a factor of 2-10 and thus improve the speed.
For method two, we set a threshold value and only consider time samples above this value. This is helpful in eliminating all of the zero values in the early part of the time vectors that occur before any pulse returns. We must be careful however in this optimization because if we set the threshold too high, we will be hurting our resolution and/or creating noise in the graph.
| Experiment | Algorithm | ||
|---|---|---|---|
| Method 1 | Method 2 | ||
| Mountain (Full Algorithm) | 10-12 sec | 5 sec | |
| Mountain (Optimized) | 3-4 sec | 1-2 sec | |
| ELEC (Optimized) | 5-6 sec | 3-4 sec | |
Here are two pictures of the same image reconstructed using each method
|
As you can see, Method 1 shows details much more clearly because it uses a linear interpolation formula, while Method 2 rounds off the ellipse coordinates to fit them to the grid. This means that method one should be more accurate and should show less error from the discrete nature of the samples. Method 2 is faster, but method 1 shows higher resolution.
You can download copies of the matlab code for method 1, the optimizing wrapper for method 1 and method 2.