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.
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
-
Constant false alarm rate — Wikipedia, on adaptive thresholding from a local noise estimate (CA-CFAR, OS-CFAR). ↩