next up previous print clean
Next: Implementation and Interface Up: Mathematics Previous: Splitting and merging

Interpolation

If done carelessly, the merging of individually processed patches in equation (2) can cause visible patch boundaries in the final image. I implemented Claerbout's1994 interpolation scheme, which linearly interpolates overlapping patches.

 
patchwt
Figure 4
Patch weight. The weight function is applied to individual patches to prepare the patch for the linear interpolation of neighboring, overlapping patches.

patchwt
view burn build edit restore

Interpolation requires the application of weights to each data element. The weighting is easily implemented as the element-wise scaling of two vectors: one contains the data that is to be interpolated, the other one each element's corresponding weight. Algebraically, weighting of a vector amounts to a matrix multiplication by a diagonal matrix . The diagonal elements are the elements of the weight vector.

To interpolate the area of overlap linearly, each patch ${\bf m}_i$ is weighted by a patch ${\bf w}_i$ of identical size but tent-like amplitudes (Figure 4). Equation  (3) expresses the weighting as the multiplications of the diagonal matrices ${\bf W}_i$.After zero padding and stacking the weighted patches by the row of ${\bf Q}_i$ operators, the operator ${\bf W}_m$ is another weighting operator that compensates for the variable amount of contributions every output element received:  
 \begin{displaymath}
{\bf m} 
= 
{\bf W}_m 
\left[
\begin{array}
{ccc}
{\bf Q}_1 ...
 ...}
{c}
{\bf m}_1 \\ {\bf m}_2 \\ {\bf m}_3 \\ \end{array}\right]\end{displaymath} (3)

How do we compute the operator ${\bf W}_m$? The same row of zero-padding operators ${\bf Q}_i$ that add the weighted patches ${\bf m}_i$ in equation (3) adds the patch weights into a data quilt $\hat{\bf w}_m$.  
 \begin{displaymath}
\hat{\bf w}_m 
= 
\left[
\begin{array}
{ccc}
{\bf Q}_1 & {\b...
 ...{array}
{c}
{\bf 1} \\ {\bf 1} \\ {\bf 1} \\ \end{array}\right]\end{displaymath} (4)
The elements of $\hat{\bf w}_m$ measure the weighted contributions each quilt element received. To balance the variable number of contributions, each element of the output quilt is scaled by the inverse of the corresponding element of the weight quilt $\hat{\bf w}_m$.This final weighting ensures that all weights applied to a single output sample sum up to one. Algebraically, the weighting is again expressed as a matrix multiplication by a diagonal matrix ${\bf W}_m$ in equation (3). The weights ${\bf W}_i$ and ${\bf W}_m$ can be interpreted as a heuristic preconditioning by row and column weighting Golub and Van Loan (1989).

A user can modify the interpolation by supplying any alternative weight function ${\bf w}_i$ for the individual patches. The algorithm will apply the correct corresponding weight operator ${\bf W}_m$. Figure 5 shows the weight vector $\hat{\bf w}_m$ that corresponds to four slightly separated tent weights ${\bf w}_i$ as shown in Figure 4.

 
quiltwt
Figure 5
Superposition of overlapping patch weights. The shown quilt vector is used to balance the weighted patch contributions of the linear interpolation of neighboring, overlapping patches. The shown quilt vector is the result of zero padding and stacking of four slightly separated patch weights. The amplitudes indicate the number of weighted contributions each image quilt element received. The weighting operator ${\bf W}_m$ applies the inverses of these weight quilt elements to the corresponding image quilt elements.

quiltwt
view burn build edit restore

Figure 6 demonstrates the effect of the weighted interpolation on the example in Figure 1. The top panel shows the input trace. The bottom panel shows an estimate of the signal's time variable variance. The weight ${\bf w}_m$, shown in the second panel, correct the brute stack, shown in the third panel, to the final result in the bottom panel.

 
nStatVarEnum
nStatVarEnum
Figure 6
Variance computation of nonstationary seismogram. The top panel shows a seismic trace. The bottom panel shows the local variance of that trace. The two traces in the center panels display intermediate results of the algorithm. The quilt weight in the second panel is used to normalize the weighted stack in the third panel.


view burn build edit restore


next up previous print clean
Next: Implementation and Interface Up: Mathematics Previous: Splitting and merging
Stanford Exploration Project
3/8/1999