Hilbert Transform

Use the 1D FFT > Hilbert Transform menu option (HILBERT GX) to perform a Hilbert transform on a channel using Fast Fourier Transform (FFT).

Hilbert Transform dialog

Channel to transform

Name of the input channel.

Script Parameter: HILBERT.IN

Output channel

Name of the channel for the transform result.

Script Parameter: HILBERT.OUT

[Options]

Click to set de-trend, expansion, and re-trend parameters.

Hilbert Transform Options dialog

Type of trend line to remove

Type of trend line to remove:

  • 3: Remove mean value

  • 2: Remove trend line based on all data points (default)

  • 1: Remove trend line based on two edge points

  • 0: Do not remove trend

Script Parameter: HILBERT.DETRD

Minimum expansion (%)

Minimum data expansion before FFT. Default = 10%.

Script Parameter: HILBERT.EXP

Application Notes

The GX performs the Hilbert transform using FFT based on the following known relation:

F[H[f(x)] ] = -i sgn(ω) F[f(x)] (equation 7 in the reference paper1)

Where:

F[f(x)]: Fourier transform of f(x),  

H[f(x)]: Hilbert transform of f(x) 

sgn(ω): ω / |ω| = +1 for ω >0, 0 for ω=0, -1 for ω <0. 

Process

Firstly, the GX performs a forward FFT transform on the input channel. For non-array input channels, three output channels are created and stored in a newly created GDB named after the input channel with the extension "_Freq". These output channels share the input channel’s name but use the extensions "_r" and "_i" for the real and imaginary components of the transform, and "_ω" for the wavenumber in radians per fiducial.

The trend is removed before applying the FFT.

The output values represent the real and imaginary components of the positive frequencies of the transform. Since the input data is real-valued in the spatial domain, the negative part of the spectrum is simply the conjugate of the corresponding positive part, i.e., h(−f)=[h(f)]∗, and is therefore not included in the output.

  • Fiducial number: cycles per fiducial

  • Wavenumber channel: radians per fiducial

Next, the one-dimensional Hilbert transform operator, −i sgn(ω), is applied to the FFT-transformed data.

Finally, the GX performs an inverse FFT to obtain the Hilbert transform results in the output channel.

Best Practices for Real Data

  • Trend Removal: It is recommended to remove the trend line based on all data points (default) before the FFT process to avoid discontinuities at the data edges. The removed trend will be restored after the FFT in the same manner.

  • Data Expansion: To prevent edge discontinuities, it is also suggested to expand the data by about 10% before the FFT process. The GX first extends the data by the user-specified percentage, then further pads it to the next power of 2 for FFT.

    Example: Original data = 60 points → expand by 10% (6 points) → total = 66 → padded to 128 points (next power of 2) for FFT.

The extended area is interpolated using the Maximum Entropy Prediction (MEP) method. MEP samples the original data points to determine their spectral content and then predicts a data function that will have the same spectral signature as the original data. As a result, the predicted data will not significantly alter the energy spectrum that would result from the original data alone.

However, for a particular synthetic data test, using the removing mean value trend removal option and 0% expansion may yield accurate results.

Reference

  • [1] Misac N. Nabighian, "Toward a three-dimensional automatic interpretation of potential field data via generalized Hilbert transforms: Fundamental relations", Geophysics, vol. 49, no. 6 (1984), pp. 780-786.