FFT Filtering
Note
Coming in Spatial Integration version 3.
Requires the Professional edition. In the Community edition, grid files written with the Professional edition can still be loaded and viewed as surfaces.
FFT filtering works on gridded potential-field data, magnetics and gravity above all. It separates what you want from what you don't by wavelength and direction: regional from residual, one structural trend from another, shallow sources from deep ones. It also derives new grids: derivatives, and the field continued up or down.
It comes in two stages:
- FFT Prepare makes a grid ready for the Fourier transform, once.
- FFT Filter designs a stack of filters against the grid's spectrum, previews the result and saves it.
Both open from the Data Processing flyout in the right tool panel.
Why a Grid Is Prepared
The Fourier transform treats a grid as one tile of a pattern that repeats forever, so the east edge meets the west edge and the north edge meets the south. A survey grid has none of that. Its edges don't match, it has gaps, and its outline is rarely a rectangle. Filtering it as it stands rings at every edge and gap.
Preparation removes the problem in one pass:
- Detrend. A plane (or the mean) is fitted to the cells with values and taken away, so the edges start closer together. It is kept and put back after filtering when the filters allow it.
- Pad. The grid is centred in a larger array. The pad on each axis is the larger of the Pad fraction of the grid and the Minimum pad, then rounded up to a size the FFT handles quickly.
- Fill. Every cell without a value is filled by minimum curvature gridding that wraps around the edges: interior gaps, the ragged outline and the whole pad. The prepared grid is smooth everywhere, including across the join the FFT makes between opposite edges.
Measured cells keep their exact values. The dialog shows the padded size and the memory both stages will need before anything runs, because both grow quickly with the grid.
Important
FFT filtering needs a projected grid whose cell size is in metres and whose cells are square. A grid in latitude and longitude is refused: reproject it to UTM or another projected system first.
FFT Prepare
| Setting | What it does |
|---|---|
| Grid, Band | The grid to prepare. Drop a file on the box or browse for one |
| Trend | None, Mean or Plane. Plane suits most potential-field grids |
| Pad fraction | Pad as a fraction of the grid on each axis. 0.5 is a safe default |
| Minimum pad | Never less than this many cells each way |
| Output | The prepared grid, a GeoTIFF. It defaults to the grid's name with _fftprep added |
| Sample type | Float32 is enough for display and filtering; Float64 keeps every digit. All computing is done in double precision whichever you choose |
| Fill | The tension, tolerance and iteration limit for the minimum curvature fill, as in Gridding |
Prepare runs with a progress bar and Cancel. When it finishes, the prepared grid opens in the Imager with the pseudocolour preset, so you can check the fill.
The prepared file has two bands: the prepared values, and a mask of the cells that were measured. It also records everything needed to get back to the original grid, including the trend, the crop and the source. The filter stage reads all of this back, so a prepared grid can be filtered again at any time without preparing it again.
FFT Filter
Open a prepared grid in the Grid box. If you choose a grid that has not been prepared, the dialog offers to prepare it with default settings, or to open FFT Prepare so you can choose the settings.
The spectrum is calculated once when the grid loads, so changing the filters afterwards is quick.
The Filter Stack
The left side holds the stack. Add picks a filter from the catalogue, and the buttons beside it duplicate, move and remove the selected filter. The checkbox on each row switches a filter on or off without losing its settings. The filters multiply together, so a directional filter and a band-pass in the same stack apply both at once.
Select a filter to edit its settings below the list. Wavelengths are shown twice, in metres and as wavenumber in cycles per km; change either and the other follows. A setting that cannot work, such as band-pass corners out of order, is shown in red with the reason. The value is never quietly changed for you, and a stack with an error does not run until it is fixed.
| Filter | What it keeps |
|---|---|
| Cosine roll-off | A band of wavelengths, with smooth raised-cosine edges. The low-pass and high-pass variants have one edge |
| Directional cosine | Features along a strike (pass), or everything but them (reject). Both work on the same wedge about the strike; the width power sets how wide it is, 1 being a sharp notch |
| Butterworth | A smooth low-pass or high-pass of a given order. Higher orders cut more sharply |
| Gaussian | A Gaussian regional, or the residual it leaves |
| Continuation | The field as it would be measured higher (upward) or lower (downward) by a height |
| Vertical derivative | The field's vertical derivative. Fractional orders such as 0.5 are allowed |
| Horizontal derivative | The derivative east (x) or north (y) |
| Reduction to pole | Magnetic anomalies as they would look at the magnetic pole, directly over their sources. Needs the field's inclination and declination. At low latitudes set an Amplitude inclination of 20° or more (with the field's sign) to keep noise along the declination in check |
Warning
Downward continuation amplifies short wavelengths exponentially, noise included. The filter says so, and offers Add paired low-pass, which adds a Butterworth low-pass cut where the amplification reaches ten.
Direction
Directional filters take the geological strike, in degrees clockwise from north, as you would read it off a map. Features striking along that direction are what pass keeps and reject removes. In the spectrum their energy lies at right angles to the strike, which is why the line on the 2D spectrum crosses the features' direction.
Trend
The trend removed in preparation goes back into the result only when that makes sense:
- If any filter rejects the regional (a band-pass, a high-pass, a vertical derivative), it stays out.
- If the stack has a single first-order horizontal derivative and every other filter passes the regional, the plane's slope in that direction is added back.
- If every filter passes the regional (a low-pass, upward continuation, a directional filter), the plane is restored.
The line under Restore trend says what will happen and why. Choose Restore or Don't restore to override it.
Mask erosion blanks extra cells around the survey's edges and gaps in the result. Derivatives are least reliable in those places.
The Radial Spectrum
The Radial spectrum tab plots the log of the power, averaged around each ring of wavenumber, against wavenumber. The combined response of the stack is drawn over it in white on the right-hand axis. Each filter adds every filter's own response.
- Bins sets how finely the rings are divided.
- Axis labels the horizontal axis in wavenumber or in wavelength.
- The corners and cutoffs of the selected filter are orange lines. Drag them to change the filter; the numbers follow.
Depth estimate fits a straight line to the part of the spectrum between the two blue lines. Over a straight stretch the depth to the sources is half the slope (Spector and Grant): steep stretches at long wavelengths come from deep sources, gentle ones at short wavelengths from shallow sources. Drag the lines or type their limits, and read the depth on the plot.
The 2D Spectrum
The 2D spectrum tab shows the log power over the whole wavenumber plane, with zero wavenumber at the centre and north up. What the stack rejects is shaded dark, so directional filters can be seen. When a directional filter is selected, drag the handle at the end of its line to turn the strike.
Preview
The result shows in its own FFT Preview Imager window, updated in place as you work.
- With Live preview on, the grid is filtered again a moment after each change.
- With it off, nothing runs until Apply, which shows progress and can be cancelled.
- Grids larger than the limit in Configure > Processing > FFT filtering open with live preview off. A line says why, with an estimate of the time per update. The estimate is corrected by the first update that runs.
Lock stretch holds the preview's colours still while the filters change, so the colours don't jump at every update.
Saving
Choose the Output file once, with the browse button or by typing a path, then press Write whenever you want the file to match the stack. Write filters the whole grid and writes it as a GeoTIFF on the original extent, replacing what is already there, so you can tweak the filters and write again as often as you like. Cells without a value in the source are empty again, with the source's own no-data value. The file records the filter stack, the trend decision and the prepared grid it came from. It opens in the Imager the first time it is written; an Imager already showing it updates in place. The line under the row says whether the file was written with the current stack.
Presets
The two buttons beside the grid box save the stack to a .sifft preset and load one back. Presets are kept in the .si/fftPresets folder in your home folder, so they are available in every project.