next up previous [pdf]

Next: Cost-cutting avenues Up: Vlad and Biondi: Log-stretch Previous: Stretching and aliasing

F-K filtering

As it can be seen in Fig. 4, 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 4.
AMO impulse response artifacts
[pdf] [png] [scons]

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$, $k_x$ and $k_y$ 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 > 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 $m_x$ and $m_y$ 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. 5: the slices through the cube are taken at exactly the same locations as those in Fig. 4, but now the artefacts are gone.

fkfilter
fkfilter
Figure 5.
AMO impulse response after f-k filtering
[pdf] [png] [scons]


next up previous [pdf]

Next: Cost-cutting avenues Up: Vlad and Biondi: Log-stretch Previous: Stretching and aliasing

2013-03-03