Field Guide · algorithm

Also known as: CFAR, constant false alarm rate detection, CA-CFAR, OS-CFAR

CFAR (constant false alarm rate) detection sets a target-present threshold not from a fixed number but from a running estimate of the noise and clutter around each cell under test, so that as the noise floor rises and falls the probability of a false alarm stays fixed.1 A fixed threshold either drowns in false alarms when the noise climbs or goes deaf when it drops; CFAR keeps the false-alarm rate pinned by making the threshold track the local background.

reference (noise est.) guard CUT reference (noise est.) range / frequency cells → T = α · noise_est CUT > T ? → detection
A CFAR window estimates local noise from reference cells (guard cells excluded), scales it by a factor α set by the desired false-alarm rate, and declares a detection when the cell under test exceeds that adaptive threshold.

How it works

Slide a window across the range, Doppler, or frequency cells. The cell under test (CUT) is the sample being judged. Immediately around it sit a few guard cells, excluded so a strong target’s energy leaking into neighbours cannot inflate its own threshold. Beyond the guards are the reference cells, which are assumed to be target-free and are used to estimate the local noise/clutter power. Multiply that estimate by a scale factor α — chosen analytically from the desired false-alarm probability and the number of reference cells — to form the threshold. If the CUT exceeds it, declare a detection. Because the threshold rides on the measured background, the false-alarm rate is (ideally) constant everywhere.

Variants

  • CA-CFAR (cell-averaging). Averages all reference cells. Optimal in uniform noise, best false-alarm control, but loses targets near a clutter edge and suffers masking when a second target sits in the reference window.
  • GO-/SO-CFAR (greatest-of / smallest-of). Average each side separately and take the larger (GO, tames clutter edges) or the smaller (SO, keeps closely spaced targets).
  • OS-CFAR (ordered-statistic). Sort the reference cells and pick the k-th value instead of the mean. Robust to interfering targets and clutter edges at a small SNR penalty and higher compute cost.

Relevance to SDR

CFAR is the classical radar target-detection stage, and the exact same idea transfers to receivers: deciding whether a bin in a Welch-averaged spectrum is occupied, driving squelch, or feeding a spectrum-occupancy/energy-detection map all benefit from a threshold that tracks the local floor rather than a hand-tuned constant. It pairs naturally with a matched filter (which maximises SNR) followed by CFAR (which decides). GopherTrunk does not implement a formal CFAR detector — its signal presence and squelch logic use simpler power/quality thresholds — but CFAR is the principled generalisation of that thresholding and the direct sibling of energy detection in spectrum sensing.

Sources

  1. Constant false alarm rate — Wikipedia, on adaptive thresholding from a local noise estimate (CA-CFAR, OS-CFAR). 

See also