Script: Filtering/


This Python ExternalAttrib script applies lowpass, highpass, bandpass or band reject circularly symmetric spatial filters. The filters are applied by direct spatial convolution using the MAXFLAT operators presented by Khan and Ohba (2001).

Filter responses
Filter responses

Note that the filter cutoff or band pass/reject frequency is specified in Normalised Spatial Frequency. Normalised Frequency ranges from 0 to 1 at the spatial nyquist. Converting a spatial frequency in cycles/metre to the equivalent Normalised Spatial Frequency is as simple as dividing it by the spatial nyquist frequency.

As written the filter does not take into account differences in spatial sampling in the inline and crossline directions.


This example uses a Low Pass filter to remove acquisition footprint from the F3 Demo dataset.

FK spectrum of inline 425
FK spectrum of inline 425

Note the noise at 0.0133 cycles/metre or 0.67 normalised frequency (i.e. 0.0133/0.02).

A spatial low pass filter with a normalised frequency cutoff of 0.5 is very effective at attenuating this acquisition footprint.

FK spectrum of inline 425 after filter
FK spectrum of inline 425 after filter

Input Parameters input parameters input parameters

Stepout Determines the size of the convolution operator. Minimum of 9 (filter kernel size of 19) recommended.
Type Filter type - Low Pass, High Pass, Band Pass or Band Reject.
Normalised Spatial Frequency For Low Pass and High Pass filters this specifies the filter cutoff. For Band Pass/Reject filters this is the centre of the pass/reject band. The width of the band is hardwired to +/- 0.1 in the script. The filter cutoff corresponds to the half amplitude point.