next up previous print clean
Next: Cost-cutting avenues Up: Vlad and Biondi: Log-stretch Previous: Stretching and aliasing

F-K filtering

As it can be seen in Fig. 3, the impulse response of the AMO computed in the log-stretch, frequency-wavenumber domain has some artifacts: high amplitude, large saddle corners. Low temporal frequencies and high spatial slopes are also present. These artifacts can be eliminated easily using a f-k filter, which is described below.

 
impresp2
impresp2
Figure 3
AMO impulse response artifacts
view burn build edit restore

Suppose we want to attenuate all spatial frequencies k that are larger than a certain threshold $ k_{\max }$, where  
 \begin{displaymath}
\begin{array}
{l}
 k = \sqrt {k_x^2 + k_y^2 } \quad and \\  ...
 ...left\vert \omega \right\vert}}{{v_{\min } }}, \\  
 \end{array}\end{displaymath} (10)
with $\omega$, kx and ky being the coordinates in the frequency-wavenumber domain (without logstretch), and v being the minimum apparent velocity of the events that we want the filtered data cube to contain. Thus, the data cube will become:  
 \begin{displaymath}
P_{filtered} \left( {\omega ,k_x ,k_y } \right) = \left\{ {\...
 ...right)\quad if\quad k \gt k_{\max } } \\ 
\end{array}} \right.
\end{displaymath} (11)
Too small an $\varepsilon$ will result in an abrupt transition in the f-k domain, and thus ringing artifacts in the t-x domain. An $\varepsilon$ which is too big will result in no visible filtering of the targeted artifacts. Moreover, $\varepsilon$ depends on the choice of units and the number of samples for the mx and my axes: since the exponential needs to be dimensionless, we have

\begin{displaymath}
\varepsilon = \frac{{\varepsilon _0 }}{{dk_x dk_y }}\end{displaymath}

where

\begin{displaymath}
dk_x = \frac{1}{{n_x d_x }}\;and\,dk_y = \frac{1}{{n_y d_y }}.\end{displaymath}

Thus, the final expression of $\varepsilon$ is  
 \begin{displaymath}
\varepsilon = \varepsilon _0 n_x d_x n_y d_y ,\end{displaymath} (12)
where $\varepsilon _0$ is a value that is hand-picked only once, and embedded in the code. This way, we will not have to change anything at all in the code or in the parameters in order to set $\varepsilon _0$, no matter what the units of the data cube may be.

The result of the filtering can be seen in Fig. 4: the slices through the cube are taken at exactly the same locations as those in Fig. 3, but now the artefacts are gone.

 
fkfilter
fkfilter
Figure 4
AMO impulse response after f-k filtering
view burn build edit restore


next up previous print clean
Next: Cost-cutting avenues Up: Vlad and Biondi: Log-stretch Previous: Stretching and aliasing
Stanford Exploration Project
9/18/2001