sfsmooth, one of the most useful Madagascar programs, implements smoothing by triangle filtering.

The idea of triangle filtering is explained in Jon Claerbout's

books *Processing versus Inversion* and

*Image Estimation by Example*. You can find the explanation in the chapter

Smoothing with box and triangle.

The triangle filter of radius is a correlation of two box filters. In the

*Z*-transform notation,

| (1) |

where

| (2) |

and

*k* is the smoothing radius.

Triangle filtering is a very efficient operation, because it requires only

*N* multiplications for the input of size

*N*.

Triangle filtering serves as a good approximation to more expensive Gaussian filtering. Repeated triangle filtering rapidly approaches Gaussian filtering (a consequence of the central limit theorem). The following example from

jsg/shape/smoo demonstrates how repeated application of triangle smoothing turns a triangle filter into a Gaussian filter

The following example from

gee/ajt/triangle demonstrated how

**sfsmooth** handles boundary conditions: the energy is reflected from the side in order to preserve the zero-frequency (DC) component of the input signal. Repeated smoothing or smoothing with a very large radius turns every signal into a constant.

In multiple dimensions, triangle smoothing is applied sequentially in different directions, possible with different radii (controlled by

**rect#=** ) parameter. The following example from

gee/ajt/mound shows shapes created by 2-D triangle smoothing after one pass and two passes (

**repeat=2**).

Triangle smoothing is theoretically a self-adjoint operator. Numerically, the adjoint and forward operators are different. The action is controlled by the

**adj=** parameter.

For smoothing with a box instead of a triangle, use

sfboxsmooth.

For a different approach to smoothing, try

sfgaussmooth, which implements smoothing by recursive Gaussian filtering.

### Previous programs of the month:

sfspectra computes spectrum, the absolute value of the 1-D Fourier transform along the fast axis. The following example from rsf/su/rsfkasper shows a seismic shot gather before and after high-pass filtering and the corresponding spectra computed with

Weblog:Madagascar development blogTracked:Mar 18, 17:16sfgrey3 generates "cube" plots from 3-D data. A cube plot displays sections from a 3-D cube as faces of the cube. Some of the options specific to this kind of display are: flat= The flat parameter tells sfgrey3 whether to display the cube as a

Weblog:Madagascar development blogTracked:Apr 09, 12:42sfderiv applies the first derivative filter. The algorithm implemented in this program is described in the paper Pei, S.-C., and P.-H. Wang, 2001, Closed-form design of maximally flat FIR Hilbert transformers, differentiators, and fractional delaye

Weblog:Madagascar development blogTracked:May 06, 08:10sfderiv applies the first derivative filter. The algorithm implemented in this program is described in the paper Pei, S.-C., and P.-H. Wang, 2001, Closed-form design of maximally flat FIR Hilbert transformers, differentiators, and fractional delaye

Weblog:Madagascar development blogTracked:May 06, 08:11sfderiv applies the first derivative filter. The algorithm implemented in this program is described in the paper Pei, S.-C., and P.-H. Wang, 2001, Closed-form design of maximally flat FIR Hilbert transformers, differentiators, and fractional delaye

Weblog:Madagascar development blogTracked:Jun 02, 06:46sfdip estimates a local slope (dip) using the plane-wave destruction algorithm. The dip is measured in time samples. If α is the dip angle, then the output of sfdip corresponds to the dimensionless quantity p=tanα. The following example

Weblog:Madagascar development blogTracked:Jun 04, 05:46sffft3 implements a complex-to-complex Fast Fourier Transform (FFT) along an arbitrary axis. The FFT library that Madagascar uses is KISS FFT, created by Mark Borgerding. KISS stands for Keep it simple, Stupid! KISS FFT may not be as fast as FFTW but i

Weblog:Madagascar development blogTracked:Jul 08, 12:34Previous programs of the month:sffft3sfdipsfderivsfgrey3sfspectrasfnoisesfgraphsfclipsfagcsfenvelopesfcontoursfsmooth

Weblog:Madagascar development blogTracked:Sep 03, 14:02sfpick performs automatic picking from semblance-like panels. The underlying algorithm is described in Appendix B of the paper Velocity analysis using AB semblance and is inspired by the method of virtual endoscopy in medical imaging. The following

Weblog:Madagascar development blogTracked:Sep 08, 16:07sfiwarp performs mapping between different coordinates. If you have sampled functions f(x) and y(x), sfiwarp with inv=y (the default) finds sampled f(y). If inv=n, sfiwarp takes f(y) and y(x) and finds f(x). In both cases, the sampled y(x) function is sup

Weblog:Madagascar development blogTracked:Sep 09, 12:52sfpick performs automatic picking from semblance-like panels. The underlying algorithm is described in Appendix B of the paper Velocity analysis using AB semblance and is inspired by the method of virtual endoscopy in medical imaging. The following

Weblog:Madagascar development blogTracked:Sep 09, 12:52