Appendix L: Design of Hilbert transforms/en
<languages/>
|
| |
| Series | Geophysical References Series |
|---|---|
| Title | Digital Imaging and Deconvolution: The ABCs of Seismic Exploration and Processing |
| Author | Enders A. Robinson and Sven Treitel |
| Chapter | 12 |
| DOI | http://dx.doi.org/10.1190/1.9781560801610 |
| ISBN | 9781560801481 |
| Store | SEG Online Store |
We have spent a lot of time and effort worrying about whether a signal is causal. A causal signal is a signal that vanishes for negative time. Now we will worry about something else. No longer will we concern ourselves with whether the signal is causal; instead, we will worry about whether a signal is analytic. An analytic signal is a complex signal whose frequency spectrum vanishes for negative frequency.
Our starting point is a real-valued signal $ x_{n} $. Let us take the simplest possible case. We construct a signal $ x_{n} $ that has a frequency spectrum $ X\left(\omega \right) $ that is made up of two spikes, each of strength 0.5. One spike is at a point $ \Omega $ on the positive side of the frequency $ \omega $ axis. This spike can be represented as $ {0.5}{\delta }_{\Omega } $ The other spike is at the mirror point $ {\rm {-}}\Omega $ on the negative side of the frequency $ \omega $ axis. This second spike can be represented as $ 0.5\delta _{{\rm {-}}\Omega } $. The frequency spectrum for all other points is zero. Because the frequency spectrum does not vanish for all negative points, the signal $ x_{n} $ is not analytic. However, we will not give up. We will construct an analytic signal $ z_{n} $ whose real part is the given signal $ x_{n} $.
The signal $ x_{n} $ is called the in-phase signal. Now we will construct the quadrature signal $ y_{n} $. The word quadrature refers to a phase difference of 90° between two waves of the same frequency, as in the color-difference signals of a television screen. Thus, we multiply the frequency spectrum $ X\left(\omega \right) $ by the imaginary number -i on the positive-frequency side and by the imaginary number i on the negative-frequency side. The result is the frequency spectrum $ {\rm {y}}\left(\omega \right) $ of the quadrature signal.
The quadrature spectrum is made up of two spikes, each of strength 0.5. One spike is at a point $ \Omega $ on the positive side of the frequency $ \omega $ axis. This spike can be represented as $ -{0.5}i{\delta }_{\Omega } $. The other spike is at the mirror point -$ \Omega $ on the negative side of the frequency $ \omega $ axis. This second spike can be represented as $ {0.5}i{\delta }_{-\Omega } $. The frequency spectrum for all other points is zero.
We next claim that the complex signal $ z_{n}=x_{n}+iy_{n} $, whose real part is the in-phase signal $ x_{n} $ and whose imaginary part is the quadrature signal Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://en.wikipedia.org/api/rest_v1/":): y_n , which is the sought-after analytic signal. We must verify that its frequency spectrum Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://en.wikipedia.org/api/rest_v1/":): Z\left(\omega \right) vanishes for negative frequency. We have
Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://en.wikipedia.org/api/rest_v1/":): \begin{align} {\rm Z}\left(\omega \right)={X}\left(\omega \right)+i{\rm Y}\left(\omega \right)={0.5}{\delta }_{\Omega }+{0.5}{\delta }_{-\Omega }+i\left(-{ 0.5}i{\delta }_{\Omega }+{0.5}i{\delta }_{-\Omega }\right)= {\delta }_{\Omega }. \end{align} ()
We see that the two positive-frequency spikes add together to give a unit spike at positive frequency Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://en.wikipedia.org/api/rest_v1/":): \Omega , and the two negative-frequency spikes sum to give nothing at negative frequency Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://en.wikipedia.org/api/rest_v1/":): \Omega . Therefore, the complex signal Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://en.wikipedia.org/api/rest_v1/":): z_n is analytic, as we wanted.
Let us now look at the above example in the time domain. The frequency spectrum Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://en.wikipedia.org/api/rest_v1/":): X\left(\omega \right) tells us that the in-phase signal Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://en.wikipedia.org/api/rest_v1/":): x_n is the cosine wave given by
Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://en.wikipedia.org/api/rest_v1/":): \begin{align} x_n={0.5}e^{i\Omega n}+{0.5}e^{-i\Omega n}={\rm cos\ }\left(\Omega n\right). \end{align} ()
The frequency spectrum Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://en.wikipedia.org/api/rest_v1/":): Y(\omega ) tells us that the quadrature signal Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://en.wikipedia.org/api/rest_v1/":): x_n is the sine wave given by
Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://en.wikipedia.org/api/rest_v1/":): \begin{array}{l} y_n = - 0.5ie^{i\Omega n} + 0.5ie^{ - i\Omega n} \\ \;\;\;\; = - 0.5i(\cos \Omega n + i{\rm sin}\Omega n) + 0.5i(\cos \Omega n - i\sin \Omega n) = \sin (\Omega n). \\ \end{array} ()
The analytic signal is then
Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://en.wikipedia.org/api/rest_v1/":): \begin{align} z_n= x_n+iy_n={\rm cos\ }\left(\Omega n\right)+i{\rm \ sin\ }\left(\Omega n\right)= e^{i\Omega n}. \end{align} ()
In the sum Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://en.wikipedia.org/api/rest_v1/":): x_n+iy_n , we observe that the negative-frequency components of Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://en.wikipedia.org/api/rest_v1/":): x_n and Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://en.wikipedia.org/api/rest_v1/":): y_n cancel out, leaving only the positive-frequency components. In other words, the analytic signal has the property that all negative frequencies have been filtered out.
In the above development, we introduced a filter that multiplies the frequency spectrum of the input by the imaginary number -i for positive frequencies and by the imaginary number i for negative frequencies. The filter transforms the cosine-wave input $ {\rm {\ cos\ }}\left(\omega n\right) $ to the sine-wave output Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://en.wikipedia.org/api/rest_v1/":): {\rm \ sin\ }\left(\omega n\right) . This filter has a special name. It is called the Hilbert transformer filter Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://en.wikipedia.org/api/rest_v1/":): h_n . In other words, the discrete-time Hilbert transformer is a filter with a frequency response
Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://en.wikipedia.org/api/rest_v1/":): \begin{array}{l} H(\omega ) = i = e^{i\pi /2} \;\;\;\;\;\;\;{\rm for}\;\;\;\; - \pi \le \omega < 0 \\ H(\omega ) = i - ie^{ - i\pi /2} \;\;\;\,{\rm for}\;\;\;\;\,\,\,\,0 \le \omega < \pi . \\ \end{array} ()
The output of the filter is called the Hilbert transform of the input. The input to this filter is called the in-phase signal, and the output is called the quadrature signal.
Let us now give a more formal presentation of the Hilbert transform. A function Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://en.wikipedia.org/api/rest_v1/":): X\left(\omega \right) is said to exhibit Hermitian symmetry about the origin if Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://en.wikipedia.org/api/rest_v1/":): \left(-\omega \right)= X\left(\omega \right) . It follows that the real part of such a function is symmetric about the origin, and the imaginary part is antisymmetric about the origin. Moreover, the integral of such a function is real; that is,
Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://en.wikipedia.org/api/rest_v1/":): \begin{array}{l} \int\limits_{ - \pi }^\pi {X(\omega )\;d\omega } = \int\limits_{ - \pi }^0 {X(\omega )\;d\omega + \int\limits_0^\pi {X(\omega )\;d\omega = \int\limits_0^\pi {[X( - \omega ) + X(\omega )]\;d\omega } } } \\ \;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\,\,\, = \int\limits_0^\pi {[X^* (\omega ) + X(\omega )]\;d\omega = 2\int\limits_0^\pi {{\mathop{\rm Re}\nolimits} [X(\omega )]\;d\omega .} } \\ \end{array} ()
It follows that a signal Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://en.wikipedia.org/api/rest_v1/":): x_n is real-valued if and only if its spectrum Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://en.wikipedia.org/api/rest_v1/":): X\left(\omega \right) exhibits Hermitian symmetry. More specifically, the information of a real-valued time signal is contained completely within its frequency spectrum for positive frequencies, except for a possible ambiguity at Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://en.wikipedia.org/api/rest_v1/":): \omega ={0} . Thus, there is a redundancy between the positive and negative portions of the angular frequency spectrum.
Now let us eliminate this redundancy by filling in the missing information as follows: We consider the real signal $ x_{n} $ to be the real part of a complex signal Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://en.wikipedia.org/api/rest_v1/":): z_n . We then construct another real-valued signal Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://en.wikipedia.org/api/rest_v1/":): y_n and consider this new signal to be the imaginary part of the complex signal Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://en.wikipedia.org/api/rest_v1/":): z_n . Thus, we can write
Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://en.wikipedia.org/api/rest_v1/":): \begin{align} z_n= x_n+iy_n. \end{align} ()
It is important to remember that both signals Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://en.wikipedia.org/api/rest_v1/":): x_n and Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://en.wikipedia.org/api/rest_v1/":): y_n are real. The new signal Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://en.wikipedia.org/api/rest_v1/":): y_n will be created in a special way to meet the requirements that the complex signal Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://en.wikipedia.org/api/rest_v1/":): z_n be an analytic signal. All the information we need is contained in the real and imaginary parts Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://en.wikipedia.org/api/rest_v1/":): X_R\left(\omega \right){\;\rm and\;}X_I\left(\omega \right) for positive angular frequencies $ 0\leq \omega {<}\pi $. Because the new signal Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://en.wikipedia.org/api/rest_v1/":): y_n is also real, we need only to know its spectrum for the same positive angular frequencies. Let us represent its spectrum by Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://en.wikipedia.org/api/rest_v1/":): Y\left(\omega \right) . Let us do the simplest thing. For a given positive angular frequency Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://en.wikipedia.org/api/rest_v1/":): \omega , treat Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://en.wikipedia.org/api/rest_v1/":): X\left(\omega \right) as a complex vector and rotate it by -90°. We call the result Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://en.wikipedia.org/api/rest_v1/":): {\rm Y}\left(\omega \right) . That is, we let
Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://en.wikipedia.org/api/rest_v1/":): \begin{align} {\rm y}\left(\omega \right)= X\left(\omega \right)e^{-i\pi { /2}} = -iX\left(\omega \right) \mathrm{\;\; for\;\; } 0\le \omega { <}\pi. \end{align} ()
Thus, the filter Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://en.wikipedia.org/api/rest_v1/":): h_n is has the angular frequency response
Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://en.wikipedia.org/api/rest_v1/":): \begin{align} H\left(\omega \right)= e^{-i\pi { /2}} = -i \mathrm{\;\;\; for\;\;\; } 0\le \omega { <}\pi . \end{align} ()
Note that the real part of the complex sequence Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://en.wikipedia.org/api/rest_v1/":): z_n is merely the original sequence $ x_{n} $ and that the imaginary part of the complex sequence Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://en.wikipedia.org/api/rest_v1/":): z_n is the signal Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://en.wikipedia.org/api/rest_v1/":): y_n . The signal Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://en.wikipedia.org/api/rest_v1/":): y_n is obtained by passing Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://en.wikipedia.org/api/rest_v1/":): x_n through a linear filter with the impulse response Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://en.wikipedia.org/api/rest_v1/":): h_n . The filter Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://en.wikipedia.org/api/rest_v1/":): h_n is called the ideal discrete-time Hilbert transform. Because Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://en.wikipedia.org/api/rest_v1/":): x_n and Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://en.wikipedia.org/api/rest_v1/":): y_n are both real, the filter Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://en.wikipedia.org/api/rest_v1/":): h_n is also real. By Hermitian symmetry, we have
$ {\begin{aligned}H\left(\omega \right)=H^{*}\left(-\omega \right)={\left(-i\right)}^{*}=i\mathrm {\;\;\;for\;\;\;} -\pi \leq \omega {<0}.\end{aligned}} $ ()
The discrete-time Hilbert transformer can be regarded as an all-pass filter with the constant phase lead of Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://en.wikipedia.org/api/rest_v1/":): \pi/2 at all negative angular frequencies and with the constant phase lead of Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://en.wikipedia.org/api/rest_v1/":): -\pi/2 at all positive angular frequencies. The result of passing Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://en.wikipedia.org/api/rest_v1/":): x_n through the Hilbert transformer is the Hilbert transform Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://en.wikipedia.org/api/rest_v1/":): y_n .
The coefficients of the Hilbert transform, as given by the inverse Fourier transform, are
Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://en.wikipedia.org/api/rest_v1/":): h_n = \frac{1}{{2\pi }} \int\limits_{ - \pi }^\pi {H(\omega )\;e^{i\omega n} \;d\omega = \left\langle \begin{array}{l} 0\;\;\;\;\;\;\;{\rm for}\;{\rm (positive}\;{\rm or}\;{\rm negative)}\;{\rm even}\;{\rm integers} \\ \frac{2}{{n\pi }}\;\;\;\;\,{\rm for}\,{\rm (positive}\;{\rm or}\;{\rm negative)}\,\,{\rm odd}\,{\rm integers}{\rm .} \\ \end{array} \right.} ()
We see that Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://en.wikipedia.org/api/rest_v1/":): h_n is a doubly infinite antisymmetric impulse.
Continue reading
| Previous section | Next section |
|---|---|
| SSAM and C3 | Appendix M: Exercises |
| Previous chapter | Next chapter |
| Fine Points | Phase |
Also in this chapter
- Interpretive processing
- Seismic attributes
- Instantaneous attributes
- Seismic sequence attribute map (SSAM)
- Coherence cube (C3)
- SSAM and C3
- Appendix M: Exercises