Skip to content
ELECTRONICS ENGINEERINGelectronics-engineering.com
Radar Systems

Detection: threshold and false alarm, probability of detection, pulse integration and CFAR proved

Detection as a statistical test, the threshold in Rayleigh noise proved, Albersheim's formula, coherent and non-coherent integration with a numerical example, the CA-CFAR and its false alarm probability proved, Monte Carlo simulations.

https://www.electronics-engineering.com/en/radar-detection-threshold-false-alarm-albersheim-integration-cfar/

No ratings yet: be the first to rate this page.

A weak echo buried in noise must be detected: the radar has to decide, cell by cell, whether a target is there or not. Every decision can go wrong in two ways: missing a target that is there (missed detection) or reporting one that is not (false alarm). This lesson sets detection up as a statistics problem, derives the threshold for a desired false alarm probability, computes the probability of detection and the required signal-to-noise ratio, explains the integration of several pulses, and proves how CFAR works, the detector that adapts the threshold to the actual noise, found in every modern radar.

The idea in simple words

Imagine listening to a radio with a lot of hiss and having to say whether someone spoke at a certain instant. If you say “yes” every time the hiss rises a little, you will often be wrong, claiming a voice that was not there (false alarm). If you say “yes” only when the sound is very loud, you will miss the faint voices (missed detection). A threshold has to be chosen, and the choice is always a compromise.

The radar makes this choice millions of times per second, once per “cell” (each combination of range, direction and velocity). Since there are so many cells, false alarms must be extremely rare, one in a million or fewer, otherwise the screen would fill with ghost targets. The lesson answers three questions: where to put the threshold, how strong the echo must be to be seen almost always, and how to adjust the threshold automatically when the noise changes (CFAR).

Two words about “cell” and “power”, which we will use often: for each cell the radar computes a number, the amplitude of the echo after the matched filter; its square is the power. With noise only this number is random; with a target it is larger on average.

Hypothesis testing

In each cell two hypotheses are compared: H_0, noise only; H_1, target plus noise. A quantity is computed (typically the amplitude |x| of the matched filter output) and compared with a threshold \eta. Performance is described by two probabilities: P_{fa} = P(|x| \gt  \eta \mid H_0) and P_d = P(|x| \gt  \eta \mid H_1). The Neyman-Pearson lemma states that, for a fixed P_{fa}, the test that maximises P_d compares the likelihood ratio p(x \mid H_1)/p(x \mid H_0) with a threshold; for signals in Gaussian noise this is equivalent to comparing the amplitude of the matched filter output with a threshold. In a radar P_{fa} is set very small (from 10^{-4} to 10^{-8}): with millions of cells examined per second, even 10^{-6} gives a few false alarms per second.

The threshold in noise

Complex noise, with independent Gaussian I and Q components of variance \sigma^2, has an amplitude with Rayleigh distribution.

Theorem. With noise only, P_{fa} = e^{-\eta^2/(2\sigma^2)}; hence the threshold for a desired P_{fa} is \eta = \sigma\sqrt{-2\ln P_{fa}}.

Proof. The joint density of I and Q is \frac{1}{2\pi\sigma^2}e^{-(I^2 + Q^2)/(2\sigma^2)}. Moving to polar coordinates (r = \sqrt{I^2 + Q^2}, area element r\,dr\,d\theta) and integrating over the angle gives the Rayleigh density p(r) = \frac{r}{\sigma^2}e^{-r^2/(2\sigma^2)}. Then P(r \gt  \eta) = \int_\eta^\infty\frac{r}{\sigma^2}e^{-r^2/(2\sigma^2)}dr = e^{-\eta^2/(2\sigma^2)}. ∎

For P_{fa} = 10^{-6} the threshold is 5.26\,\sigma; for 10^{-4}, 4.29\,\sigma. The dependence on the threshold is exponential: a 1 dB error in the noise estimate changes P_{fa} by an order of magnitude. This is the reason for CFAR.

The probability of detection

With a constant target of amplitude A the amplitude follows the Rice distribution, and P_d is expressed through Marcum’s Q function. For design, Albersheim’s empirical formula is used, giving the signal-to-noise ratio needed for the desired P_d and P_{fa} when N pulses are integrated non-coherently:

    \[ SNR_{dB} = -5\log_{10}N + \Big(6.2 + \frac{4.54}{\sqrt{N + 0.44}}\Big)\log_{10}(A + 0.12AB + 1.7B),\qquad A = \ln\frac{0.62}{P_{fa}},\quad B = \ln\frac{P_d}{1 - P_d} \]

For P_d = 0.9 and P_{fa} = 10^{-6} with a single pulse it takes 13.1 dB: the value used in the example of the lesson on the radar equation. A simulation with two million noise samples and the exact threshold gives P_{fa} of about 10^{-6} and, with a target at 13.2 dB, P_d = 0.902, equal to Marcum’s function (0.902).

Integrating several pulses

The target stays in the beam for many pulses. Adding them improves the signal-to-noise ratio:

  • coherent integration (sum of the complex values, that is the Doppler FFT of the lesson on Doppler): the signal adds in amplitude, the noise in power, the gain is exactly N;
  • non-coherent integration (sum of amplitudes or powers, after the detector): simpler and independent of phase, but less efficient. With Albersheim, for P_d = 0.9 and P_{fa} = 10^{-6} the SNR per pulse needed drops from 13.1 dB with one pulse to 5.0 dB with 10 pulses (8.1 dB gain against 10 dB for coherent integration) and to −1.3 dB with 100 (14.4 dB against 20).

Real targets fluctuate (the radar cross section changes from one look to the next): the Swerling models describe their statistics, and the same P_d with a fluctuating target usually requires several more decibels (8 dB with one pulse for P_d = 0.9: lesson on the radar cross section).

An example to fix ideas. A surveillance radar receives 25 pulses from an aircraft while the beam sweeps past. One pulse would need 13.1 dB; integrating the 25 pulses non-coherently, 2.3 dB per pulse are enough (from Albersheim’s formula), that is 10.8 dB less: in the radar equation, with range going as the fourth root of power, the range grows by 10^{10.8/40} = 1.9 times. Integrating costs only time and computation, and it is the cheapest way to “see farther”.

CFAR

The threshold \eta = \sigma\sqrt{-2\ln P_{fa}} requires knowing \sigma, but the level of noise and clutter changes with range, direction, weather, interference. CFAR (constant false alarm rate) estimates the level from the cells around the one under test and sets the threshold in proportion.

CA-CFAR (cell averaging): the power is averaged over N reference cells around the cell under test (excluding a few guard cells, where the echo of the target itself might be), and a target is declared if the power of the cell exceeds \alpha times the average.

Theorem. In Gaussian noise (power with exponential distribution) the CA-CFAR with N cells has P_{fa} = \big(1 + \frac{\alpha}{N}\big)^{-N}, independent of the noise level; hence \alpha = N\big(P_{fa}^{-1/N} - 1\big).

Proof. Let Z be the sum of the reference powers and \frac{\alpha}{N}Z the threshold. For fixed Z, the probability that the cell under test (exponential with mean \mu) exceeds the threshold is e^{-\alpha Z/(N\mu)}. The sum of N independent exponentials with mean \mu has a gamma distribution, and the mean of e^{-sZ} is its generating function: \mathbb E[e^{-sZ}] = (1 + s\mu)^{-N}. With s = \alpha/(N\mu) we get P_{fa} = (1 + \alpha/N)^{-N}: \mu has cancelled. ∎

With N = 16 and P_{fa} = 10^{-4}, \alpha = 12.45 (10.95 dB); a simulation with 400 000 trials gives P_{fa} = 0.9\cdot 10^{-4}. The price of the uncertainty in the estimate is the CFAR loss: if the noise were known a threshold of -\ln P_{fa} = 9.21 times the mean would suffice, so the loss is 10\log_{10}(12.45/9.21) = 1.3 dB, which decreases as N grows. The CA-CFAR suffers when another target or a clutter edge lies in the reference cells: the robust variants (OS-CFAR, GO-CFAR) are covered in the lesson on clutter filtering.

CA-CFAR on a range profile
The received power, grey, is noise with three targets and a rise of the background level halfway; the adaptive threshold, red, follows the noise level estimated from the neighbouring cells, and the targets that exceed it are marked by blue dots.

Summary

  • Detection is a statistical test: the false alarm probability is fixed and the probability of detection maximised (Neyman-Pearson).
  • In noise the amplitude has a Rayleigh distribution: the threshold is \sigma\sqrt{-2\ln P_{fa}}, 5.26 σ for 10^{-6}.
  • For P_d = 0.9 and P_{fa} = 10^{-6} a single pulse needs a 13.1 dB signal-to-noise ratio (Albersheim).
  • Integrating N pulses reduces the ratio needed per pulse: by N times coherently, a little less non-coherently.
  • CFAR estimates the noise from the neighbouring cells and keeps P_{fa} constant, with a small loss (1.3 dB with 16 cells).

The code

import numpy as np
from scipy import stats

rng = np.random.default_rng(0)
dB = lambda x: 10 ** (x / 10)

# threshold for Pfa = 1e-6 and Monte Carlo check
pfa = 1e-6
threshold = np.sqrt(-2 * np.log(pfa))                # in units of sigma
M = 2_000_000
noise = rng.normal(size=M) + 1j * rng.normal(size=M) # I and Q with sigma = 1
print(f"threshold {threshold:.3f} sigma, simulated Pfa {np.mean(np.abs(noise) > threshold):.1e}")

# probability of detection for a constant target at 13.2 dB
A = np.sqrt(2 * dB(13.2))                            # SNR = A^2 / (2 sigma^2)
print(f"simulated Pd {np.mean(np.abs(A + noise[:200000]) > threshold):.3f}, "
      f"Marcum {1 - stats.ncx2.cdf(threshold ** 2, 2, A ** 2):.3f}")

def albersheim(pd, pfa, n=1):
    a, b = np.log(0.62 / pfa), np.log(pd / (1 - pd))
    return -5 * np.log10(n) + (6.2 + 4.54 / np.sqrt(n + 0.44)) * np.log10(a + 0.12 * a * b + 1.7 * b)
for n in (1, 10, 100):
    print(f"Albersheim, {n:3d} pulses: SNR per pulse {albersheim(0.9, 1e-6, n):.2f} dB")

# CA-CFAR: threshold factor and check
N, pfa = 16, 1e-4
alpha = N * (pfa ** (-1 / N) - 1)
p = rng.exponential(1.0, (400000, N + 1))           # powers: cell under test + N reference cells
pfa_sim = np.mean(p[:, 0] > alpha / N * p[:, 1:].sum(1))
print(f"CA-CFAR: alpha = {alpha:.2f}, simulated Pfa {pfa_sim:.1e}, loss {10 * np.log10(alpha / -np.log(pfa)):.2f} dB")

Running it prints the threshold 5.257 σ with a simulated P_{fa} close to 10^{-6} (with two million trials only a few exceedances are counted, so the estimate varies), P_d = 0.902 simulated and computed, Albersheim’s SNRs of 13.11, 4.99 and −1.26 dB, and for CFAR \alpha = 12.45, P_{fa} about 10^{-4} and 1.31 dB of loss.

Subscribe
Notify of
guest
1 Comment
Oldest
Newest Most Voted
1
0
Would love your thoughts, please comment.x
()
x