Filtrare il clutter: sezione radar del clutter, chaff, MTI e MTD, STAP, CFAR robusti, mare, interferenze e disturbatori
Quanto è forte il clutter di superficie e di volume, il chaff, i filtri Doppler e le mappe di clutter, lo STAP per i radar in volo, OS-CFAR contro CA-CFAR, il clutter di mare con distribuzione K, interferenze tra radar e annullamento adattativo, quattro simulazioni.
In un radar reale l’eco di un bersaglio è quasi sempre la parte più piccola di ciò che si riceve. Il terreno, gli edifici, il mare, la pioggia, gli stormi di uccelli, i guardrail di un’autostrada restituiscono eco molto più forti, il clutter; i percorsi multipli creano bersagli fantasma; altri radar e disturbatori aggiungono interferenze. Gran parte del progetto di un radar consiste nel filtrare tutto questo senza perdere i bersagli. Questa lezione raccoglie le tecniche: la classificazione del clutter, i filtri Doppler (MTI, MTD, filtri adattativi, STAP), i filtri sull’ampiezza (mappe di clutter e CFAR robusti, con il problema del clutter di mare), la difesa dalle interferenze e dai fantasmi. Quattro simulazioni mostrano i problemi e le soluzioni con i numeri.
I tipi di clutter
- Clutter di superficie (terreno, edifici, mare): esteso, legato alla cella illuminata, la cui area cresce con la distanza; si descrive con il coefficiente
(sezione radar per metro quadro), che dipende dall’angolo di incidenza, dalla frequenza e dalla polarizzazione. Il terreno è quasi fermo; il mare si muove con le onde. - Clutter di volume (pioggia, neve, chaff, cioè nuvole di striscioline metalliche lanciate per confondere i radar): riempie tutta la cella e si muove con il vento.
- Eco puntiformi indesiderate: uccelli, insetti, pale eoliche (che hanno un Doppler proprio e sono un problema crescente per i radar del traffico aereo), automobili per un radar che cerca aerei.
- Fantasmi da percorsi multipli: l’eco rimbalza su una superficie (il mare, la strada, la fiancata di un camion) e arriva da una direzione sbagliata o con una distanza sbagliata.
Due grandezze riassumono le prestazioni: il fattore di miglioramento (quanto aumenta il rapporto segnale/clutter dopo il filtro) e la visibilità sotto il clutter (quanto più debole del clutter può essere un bersaglio per essere ancora rivelato).
L’idea in parole semplici
Cercare un aereo con un radar è come cercare una lucciola davanti a un muro illuminato da un faro: il muro (il terreno, il mare, la pioggia) rimanda molta più luce della lucciola. Ci sono tre modi per vederla lo stesso: guardare solo ciò che si muove (filtri Doppler: il muro è fermo, la lucciola no), sapere com’è fatto il muro e sottrarlo (mappe di clutter), oppure regolare la soglia di “c’è qualcosa” in base a quanto è luminoso lo sfondo intorno (CFAR). Questa lezione mostra come i radar combinano i tre modi.
Quanto è forte il clutter
Clutter di superficie. La cella illuminata a distanza
, con fascio largo
in azimut e impulso di durata
, a bassi angoli è un rettangolo di area
. Il clutter ha sezione radar
. Esempio: radar di sorveglianza con fascio di 1,5°, impulso di 1 μs, terreno con
dB, a 20 km:
m²,
m² (29 dBsm). Un aereo da 1-10 m² sta quindi da 19 a 29 dB sotto il clutter della sua cella: senza filtri non si vede. Siccome
cresce come
e l’eco del clutter cala come
, il clutter di superficie cala come
, più lentamente dell’eco di un bersaglio: il rapporto segnale/clutter peggiora con la distanza di
, e non migliora aumentando la potenza (che fa crescere allo stesso modo bersaglio e clutter).
va da −40 dB (mare calmo, deserto, a bassi angoli) a 0 dB e oltre (città, montagne); un modello semplice è
, con
l’angolo radente.
Clutter di volume. Pioggia e chaff riempiono il volume della cella,
, con una riflettività
(sezione radar per metro cubo). Per la pioggia
, con
per l’acqua e
la riflettività della lezione sui radar meteorologici. In banda X, con pioggia moderata da 30 dBZ,
m²/m³: a 20 km, con un fascio di 1,5° × 1,5° e 1 μs,
m³ e
m², quanto un aereo. Siccome
va come
, in banda S la stessa pioggia rimanda 21 dB di meno: un altro motivo per usare frequenze basse nella sorveglianza.
Chaff. Il chaff è fatto di milioni di fili o striscioline metallizzate tagliate a mezza lunghezza d’onda (1,5 cm in banda X), dipoli risonanti che rimandano molta energia per il loro peso. Un dipolo a mezz’onda con orientamento casuale ha in media
: in banda X
m², quindi per simulare un bersaglio da 100 m² servono circa 740 000 dipoli, pochi grammi di fibre. La nuvola si apre in pochi secondi, cade lentamente e si muove con il vento: la difesa è il filtro Doppler (il chaff rallenta subito e si distingue da un aereo veloce), insieme all’inseguimento, che non si lascia “agganciare” da un’eco che nasce dal nulla e resta ferma. Per coprire più bande si tagliano fili di lunghezze diverse.
Lo spettro del clutter. Il clutter non è perfettamente fermo: alberi mossi dal vento, onde del mare, pioggia trascinata dal vento, e anche la rotazione dell’antenna, allargano il suo spettro Doppler. Lo spettro si descrive con una larghezza in velocità
: da pochi centimetri al secondo (rocce, edifici) a 0,5 m/s (boschi con vento forte) a 1-2 m/s (mare, pioggia, chaff, più lo spostamento medio dovuto al vento). Più lo spettro è largo, più la “tacca” del filtro MTI deve essere larga e più bersagli lenti si perdono.
I filtri Doppler
Il clutter di superficie è quasi fermo, quasi tutti i bersagli interessanti si muovono: separarli in velocità è la difesa principale.
- MTI (lezione sul Doppler): il cancellatore
, o quello a tre impulsi
, toglie ciò che ha Doppler nullo. Il fattore di miglioramento è limitato dalla larghezza dello spettro del clutter (alberi mossi dal vento, rotazione dell’antenna, instabilità dell’oscillatore): un clutter con spettro largo non viene cancellato del tutto. - MTD (moving target detector, il processore dei radar di avvicinamento agli aeroporti): dopo l’MTI, un banco di filtri Doppler (una FFT su 8-16 impulsi) divide le eco per velocità, e ogni filtro ha la sua soglia CFAR. Per il filtro a velocità zero, dove il clutter è massimo, si usa una mappa di clutter.
- Mappa di clutter: si memorizza, cella per cella, il livello medio dell’eco nei giri precedenti dell’antenna (con una media mobile esponenziale), e la soglia di ogni cella è un multiplo del suo livello. Così un aereo che passa sopra un’area di clutter forte si vede se la sua eco supera il livello abituale di quella cella, e i bersagli che volano di traverso (Doppler nullo) non spariscono del tutto.
- Filtri adattativi: il clutter di pioggia, mare e chaff si muove con il vento, quindi il suo Doppler non è zero. Un MTI adattativo stima il Doppler medio del clutter e sposta la “tacca” del filtro su di esso.
Lo STAP: il clutter visto da un aereo
Un radar su un aereo o su un satellite che guarda in basso vede il terreno muoversi: ogni zona di terreno ha un Doppler che dipende dalla direzione da cui la si guarda,
(con
la velocità della piattaforma). Nel piano angolo-Doppler il clutter occupa una cresta diagonale, e un filtro solo in Doppler o solo in angolo non basta. Lo STAP (space-time adaptive processing) filtra insieme sugli elementi della schiera (spazio) e sugli impulsi (tempo), con i pesi ottimi
![]()
dove
è la matrice di covarianza di clutter, disturbo e rumore e
è il vettore “di puntamento” del bersaglio cercato (angolo e Doppler). Sono i pesi che massimizzano il rapporto segnale/(interferenza + rumore), SINR: la stessa disuguaglianza di Cauchy-Schwarz del filtro adattato, applicata dopo aver “sbiancato” l’interferenza con
. Nella pratica
non è noto e si stima dai dati delle celle vicine (SMI, sample matrix inversion): per perdere meno di 3 dB rispetto all’ottimo servono circa il doppio dei campioni rispetto al numero di gradi di libertà (regola di Reed, Mallett e Brennan). Lo stesso principio, nel solo spazio, serve ad annullare un disturbatore: la schiera adattativa mette uno zero del suo diagramma nella direzione del disturbo.

Il CFAR nel clutter: robustezza
Il CA-CFAR della lezione sulla rivelazione ha due punti deboli:
- mascheramento: se nelle celle di riferimento c’è un altro bersaglio, la media cresce, la soglia si alza e il bersaglio in esame può sparire. Succede con oggetti vicini, come due auto ravvicinate o una formazione di aerei;
- bordi del clutter: al passaggio tra una zona tranquilla e una di clutter forte (la riva del mare, il bordo di una nube di pioggia) la media mescola i due livelli: troppi falsi allarmi da una parte, bersagli persi dall’altra.
Le varianti:
- OS-CFAR (order statistic): invece della media si usa il
-esimo valore ordinato delle celle di riferimento (per esempio il 12° su 16). Qualche cella anomala (un altro bersaglio) cade in fondo alla classifica e non conta. Per rumore esponenziale
, da cui si ricava la soglia
; - GO-CFAR e SO-CFAR: si stima il livello separatamente a sinistra e a destra della cella e si prende il maggiore (contro i falsi allarmi ai bordi) o il minore (contro il mascheramento).
Simulazione 1. Due bersagli di 18 dB a 4 celle di distanza nel rumore, CFAR con 16 celle di riferimento e 2 di guardia per lato,
, 300 prove. Il CA-CFAR rivela entrambi i bersagli solo nel 65 % dei casi (il secondo alza la soglia del primo e viceversa); l’OS-CFAR nel 100 %. Nel solo rumore i due hanno la stessa frequenza di falsi allarmi:
e
.
Il clutter di mare e le code della distribuzione
Il CFAR della lezione sulla rivelazione presuppone un fondo gaussiano (ampiezza di Rayleigh, potenza esponenziale). Il clutter di mare, visto ad angoli radenti e con alta risoluzione, non lo è: le onde creano picchi (spikes) brevi e intensi. Lo si descrive con la distribuzione K: uno “speckle” gaussiano la cui potenza media fluttua lentamente da cella a cella secondo una distribuzione gamma con parametro di forma
. Più
è piccolo, più il mare è “a picchi”; per
si torna al caso gaussiano.
Simulazione 2. Soglia calcolata per
con il modello gaussiano, applicata a clutter K: con
i falsi allarmi sono
(quasi gaussiano), con
35 volte di più (
), con
140 volte di più (
). Un radar navale che ignori la statistica del mare si riempie di falsi bersagli. Le difese: soglie calcolate sulla distribuzione K stimata dai dati, integrazione su più giri d’antenna (i picchi del mare durano poco, un’imbarcazione resta), e la polarizzazione orizzontale, che di solito vede meno clutter di mare.
Interferenze e fantasmi
- Interferenza tra radar: nei radar FMCW delle auto una rampa di un altro veicolo che attraversa la propria produce, dopo il mescolatore, un breve impulso a larga banda che alza il rumore di fondo su tutte le distanze e può nascondere i bersagli deboli. Le contromisure: rivelare i campioni anomali nel tempo e azzerarli (o ricostruirli per interpolazione) prima della FFT, cambiare a caso i parametri delle rampe, coordinare i radar.
Simulazione 3. Un bersaglio debole sta 35,9 dB sopra il fondo del rumore. Un’interferenza di 30 campioni su 512 lo porta a 2,0 dB: invisibile. Azzerando i campioni con ampiezza anomala, il bersaglio torna a 34,6 dB: si perde solo 1,3 dB.
- Disturbatori (in ambito militare): un trasmettitore che inonda il ricevitore di rumore. La difesa principale è l’annullamento adattativo con la schiera.
Simulazione 4. Schiera di 8 elementi a mezza lunghezza d’onda, bersaglio di fronte, disturbatore a 20° e 30 dB sopra il rumore. Con il fascio fisso il disturbatore entra da un lobo secondario a −13 dB e il SINR è −17 dB: il bersaglio è perso. Con i pesi adattativi stimati da 64 campioni (
), il guadagno verso il disturbatore scende a −65 dB e il SINR sale a 8,2 dB, vicino al massimo teorico di 9,0 dB (
, il guadagno di 8 elementi nel solo rumore).
- Fantasmi da percorsi multipli: un bersaglio vero e la sua immagine riflessa hanno di solito la stessa velocità radiale ma posizioni geometricamente incompatibili con il terreno (per esempio sotto la superficie stradale, o dietro un guardrail). Si riconoscono con la geometria nota, con l’inseguimento (il fantasma “salta” quando cambia la geometria della riflessione) e, nei radar delle auto, confrontandosi con gli altri sensori.
In sintesi
- Il clutter di superficie ha sezione radar
e spesso supera di 20-30 dB l’eco di un aereo; quello di volume (pioggia, chaff) cresce con il volume della cella e, per la pioggia, come
. - I filtri Doppler (MTI, MTD, adattativi) eliminano ciò che non si muove; da un aereo serve lo STAP, che lavora insieme su angolo e Doppler.
- Le mappe di clutter e i CFAR robusti (OS, GO) gestiscono bordi di clutter e bersagli vicini; il clutter di mare ha code lunghe (distribuzione K) e richiede soglie più alte.
- Interferenze e disturbatori si combattono eliminando i campioni anomali e annullando la direzione del disturbo con la schiera.
Il codice delle quattro simulazioni
import numpy as np
rng = np.random.default_rng(0)
dB = lambda x: 10 ** (x / 10)
# 1) CFAR: due bersagli vicini, il CA-CFAR "maschera" il secondo, l'OS-CFAR no
def cfar(p, N=16, guardia=2, pfa=1e-4, tipo="CA", k=12):
alfa = N * (pfa ** (-1 / N) - 1) # CA-CFAR (lezione sulla rivelazione)
if tipo == "OS": # soglia per la k-esima statistica d'ordine
a_lo, a_hi = 1.0, 100.0 # Pfa(alfa) = prod_{i=0}^{k-1} (N-i)/(N-i+alfa)
for _ in range(100):
a = (a_lo + a_hi) / 2
pf = np.prod([(N - i) / (N - i + a) for i in range(k)])
a_lo, a_hi = (a, a_hi) if pf > pfa else (a_lo, a)
alfa = a
det = []
h = N // 2
for i in range(h + guardia, len(p) - h - guardia):
rif = np.r_[p[i - guardia - h:i - guardia], p[i + guardia + 1:i + guardia + 1 + h]]
livello = rif.mean() if tipo == "CA" else np.sort(rif)[k - 1]
soglia = alfa * livello if tipo == "OS" else alfa / N * rif.sum()
det.append(p[i] > soglia)
return np.r_[np.zeros(h + guardia, bool), det, np.zeros(h + guardia, bool)]
celle = 200
trovati = {"CA": 0, "OS": 0}
prove = 300
for _ in range(prove):
p = rng.exponential(1.0, celle)
p[100] += dB(18); p[104] += dB(18) # due bersagli da 18 dB a 4 celle di distanza
for t in ("CA", "OS"):
d = cfar(p, tipo=t)
trovati[t] += d[100] and d[104]
print(f"due bersagli vicini rivelati entrambi: CA-CFAR {trovati['CA'] / prove:.0%}, OS-CFAR {trovati['OS'] / prove:.0%}")
fa = {"CA": 0, "OS": 0}
for _ in range(50):
p = rng.exponential(1.0, 4000)
for t in ("CA", "OS"):
fa[t] += cfar(p, tipo=t).sum()
print(f"falsi allarmi per cella nel solo rumore: CA {fa['CA'] / (50 * 3960):.1e}, OS {fa['OS'] / (50 * 3960):.1e}")
# 2) clutter di mare con distribuzione K: la soglia "gaussiana" dà troppi falsi allarmi
M = 2_000_000
for nu in (0.5, 2.0, 100.0):
tessitura = rng.gamma(nu, 1 / nu, M) # potenza locale che fluttua (media 1)
potenza = tessitura * rng.exponential(1.0, M) # speckle esponenziale modulato: clutter K
soglia = -np.log(1e-4) # soglia giusta per clutter gaussiano
print(f"clutter K con nu = {nu:5}: Pfa con la soglia gaussiana {np.mean(potenza > soglia):.1e} (voluta 1e-4)")
# 3) interferenza tra radar FMCW: azzerare i campioni disturbati abbassa il rumore
Ns = 512
t = np.arange(Ns)
segnale = 0.2 * np.exp(1j * 2 * np.pi * 60 / Ns * t) # un bersaglio debole nel bin 60
rumore = (rng.normal(size=Ns) + 1j * rng.normal(size=Ns)) * 0.05
disturbo = np.zeros(Ns, complex)
disturbo[200:230] = 5 * np.exp(1j * np.pi * 0.02 * (t[200:230] - 215) ** 2) # rampa altrui che attraversa la nostra
def picco_su_fondo(x):
X = np.abs(np.fft.fft(x * np.hanning(Ns)))
return 20 * np.log10(X[60] / np.median(X))
x = segnale + rumore + disturbo
xz = x.copy(); xz[np.abs(x) > 1.0] = 0 # rivela e azzera i campioni anomali
print(f"bersaglio sopra il fondo: senza disturbo {picco_su_fondo(segnale + rumore):.1f} dB, con disturbo {picco_su_fondo(x):.1f} dB, "
f"dopo l'azzeramento {picco_su_fondo(xz):.1f} dB")
# 4) annullamento adattativo: schiera di 8 elementi, disturbatore a 20 gradi, bersaglio di fronte
Ne, d = 8, 0.5 # passo in lunghezze d'onda
vettore = lambda th: np.exp(1j * 2 * np.pi * d * np.arange(Ne) * np.sin(np.radians(th)))
J = 1000.0 # disturbatore 30 dB sopra il rumore
campioni = np.sqrt(J) * vettore(20)[:, None] * (rng.normal(size=(1, 64)) + 1j * rng.normal(size=(1, 64))) / np.sqrt(2) \
+ (rng.normal(size=(Ne, 64)) + 1j * rng.normal(size=(Ne, 64))) / np.sqrt(2)
Rcov = campioni @ campioni.conj().T / 64 # covarianza stimata (SMI)
w_ad = np.linalg.solve(Rcov, vettore(0)); w_ad /= np.abs(w_ad.conj() @ vettore(0))
w_fx = vettore(0) / Ne # fascio fisso verso il bersaglio
for nome, w in (("fisso", w_fx), ("adattativo", w_ad)):
g_t = np.abs(w.conj() @ vettore(0)) ** 2
g_j = np.abs(w.conj() @ vettore(20)) ** 2
rumore_out = np.real(w.conj() @ w)
print(f"fascio {nome:10s}: guadagno verso il disturbatore {10 * np.log10(g_j / g_t):6.1f} dB, "
f"SINR {10 * np.log10(g_t / (J * g_j + rumore_out)):6.1f} dB")L’esecuzione stampa tutti i numeri delle quattro simulazioni: 65 % e 100 % per i due CFAR, falsi allarmi
e
,
,
e
per il clutter K, 35,9, 2,0 e 34,6 dB per l’interferenza, e per la schiera −13 dB e −17 dB con il fascio fisso, −65,5 dB e 8,2 dB con quello adattativo. I punti rimasti dopo il filtraggio servono, nella lezione dedicata, a costruire gli oggetti.





