Regularization is model styling |
wellseis
Figure 6. Binning by data push. Left is seismic data. Right is well locations. Values in bins are divided by numbers in bins. (Toldi) |
---|
misseis
Figure 7. Seismic binned (left) and extended (right) by minimizing energy in . |
---|
There are basically two ways to handle boundary conditions. First, as we did in Figure 1, by using a transient filter operator that assumes zero outside to the region of interest. Second is to use an internal filter operator. Internal filters introduce the hazard that solutions could be growing at the boundaries. Growing solutions are rarely desirable. In that case, it is better to assign boundary values, which is what I did here in Figure 7. I did not do it because it is better, but did it to minimize the area surrounding the data of interest.
The first job is to fill the gaps in the seismic data. We did such a job in one dimension in Figures 1-5. More computational details later come later. Let us call the extended seismic data .
Think of a map of a model space of infinitely many hypothetical wells that must match the real wells, where we have real wells. We must find a map that matches the wells exactly and somehow matches the seismic information elsewhere. Let us define the vector , as shown in Figure 6 so is observed values at wells and zeros elsewhere.
Where the seismic data contains sharp bumps or streaks, we want our final Earth model to have those features. The wells cannot provide the rough features, because the wells are too far apart to provide high-spatial frequencies. The well information generally conflicts with the seismic data at low-spatial frequencies because of systematic discrepancies between the two types of measurements. Thus we must accept that and may differ at low-spatial frequencies (where gradient and Laplacian are small).
Our final map would be very unconvincing if
it simply jumped from a well value at one point
to a seismic value at a neighboring point.
The map would contain discontinuities around each well.
Our philosophy of finding an Earth model
is that our Earth map should contain no obvious
``footprint'' of the data acquisition (well locations).
We adopt the philosophy that the difference
between the final map (extended wells),
and the seismic information
should be smooth.
Thus,
we seek the minimum residual ,
which is the roughened difference between the seismic data
and the map of hypothetical omnipresent wells.
With roughening operator we fit:
(13) |
Now, we prepare some roughening operators . We have already coded a 2-D gradient operator igrad2. Let us combine it with its adjoint to get the 2-D Laplacian operator. (You might notice that the Laplacian operator is ``self-adjoint,'' meaning that the operator does the same calculation that its adjoint does. Any operator of the form is self-adjoint because . )
for (i2=0; i2 < n2; i2++) { for (i1=0; i1 < n1; i1++) { j = i1+i2*n1; if (i1 > 0) { if (adj) { p[j-1] -= r[j]; p[j] += r[j]; } else { r[j] += p[j] - p[j-1]; } } if (i1 < n1-1) { if (adj) { p[j+1] -= r[j]; p[j] += r[j]; } else { r[j] += p[j] - p[j+1]; } } if (i2 > 0) { if (adj) { p[j-n1] -= r[j]; p[j] += r[j]; } else { r[j] += p[j] - p[j-n1]; } } if (i2 < n2-1) { if (adj) { p[j+n1] -= r[j]; p[j] += r[j]; } else { r[j] += p[j] - p[j+n1]; } } } } |
void lapfill(int niter /* number of iterations */, float* mm /* model [m1*m2] */, bool *known /* mask for known data [m1*m2] */) /*< interpolate >*/ { if (grad) { sf_solver (sf_igrad2_lop, sf_cgstep, n12, 2*n12, mm, zero, niter, "x0", mm, "known", known, "verb", verb, "end"); } else { sf_solver (laplac2_lop, sf_cgstep, n12, n12, mm, zero, niter, "x0", mm, "known", known, "verb", verb, "end"); } sf_cgstep_close (); } |
Subroutine lapfill() can be used for each of our two applications: (1) extending the seismic data to fill space, and (2) fitting the map exactly to the wells and approximately to the seismic data. When extending the seismic data, the initially non-zero components are fixed and cannot be changed.
The final map is shown in Figure 8.
finalmap
Figure 8. Final map based on Laplacian roughening. |
---|
Results can be computed with various filters. I tried both and . There are disadvantages of each, being too cautious and perhaps being too aggressive. Figure 9 shows the difference between the extended seismic data and the extended wells. Notice that for the difference shows a localized ``tent pole'' disturbance about each well. For , there could be a large overshoot between wells, especially if two nearby wells have significantly different values. I do not see that problem here.
My overall opinion is that the Laplacian does the better job in this case. I have that opinion because in viewing the extended gradient, I can clearly see where the wells are. The wells are where we have acquired data. We would like our map of the world to not show where we acquired data. Perhaps our estimated map of the world cannot help but show where we have and have not acquired data, but we would like to minimize that aspect.
A good image of the Earth hides our data acquisition footprint. |
diffdiff
Figure 9. Difference between wells (the final map) and the extended seismic data. Left is plotted at the wells (with gray background for zero). Center is based on gradient roughening and shows tent-pole-like residuals at wells. Right is based on Laplacian roughening. |
---|
To understand the behavior theoretically, recall that in one dimension the filter interpolates with straight lines and interpolates with cubics. The reason is that the fitting goal , leads to or ; whereas, the fitting goal leads to , which is satisfied by cubics. In two dimensions, minimizing the output of gives us solutions of Laplace's equation with sources at the known data. It is as if stretches a rubber sheet over poles at each well; whereas, bends a stiff plate.
Just because gives smoother maps than does not mean those maps are closer to reality. An objectively better choice for the model styling goal is addressed in Chapter . It is the same issue we noticed when comparing Figures 1-5.
Regularization is model styling |