5.13.2 EP05_02 🟡 Filtro Notch: Rimozione dei Picchi Periodici
Una telecamera di ispezione industriale acquisisce immagini di circuiti stampati, ma l’alimentazione della linea di produzione introduce un’interferenza elettrica periodica — un pattern di strisce quasi impercettibile a occhio nudo, che però appare nello spettro di Fourier come coppie di picchi luminosi posizionati simmetricamente attorno al centro. Il team di visione artificiale non può rielaborare l’acquisizione: deve localizzare e cancellare chirurgicamente queste coppie di picchi nello spettro, preservando tutta l’altra informazione utile dell’immagine.
Questo è il ruolo del filtro rigetta-banda notch: a differenza del passa-basso (che interessa una regione continua), esso agisce su punti specifici e sui loro simmetrici, lasciando intatto il resto dello spettro.
5.13.2.1 📋 Linee Guida di Implementazione
- Dimensioni: Leggere gli interi \(L\) (righe) e \(C\) (colonne) dello spettro di magnitudine centrato.
- Dati: Leggere i valori interi della matrice di magnitudine, riga per riga.
- Picchi: Leggere l’intero \(K\) (numero di coppie di picchi da rimuovere).
- Per ciascuno dei \(K\) picchi: leggere tre interi \(\Delta v\), \(\Delta u\), \(r\) — spostamento verticale, spostamento orizzontale e raggio del notch.
- Centro dello spettro: \((c_y, c_x) = (L \mathbin{//} 2,\; C \mathbin{//} 2)\).
- Soppressione simmetrica: per ogni picco, azzerare tutte le posizioni \((u,v)\) tali che la distanza dal punto \((c_y+\Delta v,\, c_x+\Delta u)\) sia \(\le r\), e anche tutte le posizioni con distanza \(\le r\) dal punto simmetrico \((c_y-\Delta v,\, c_x-\Delta u)\).
- Uscita: Visualizzare la matrice risultante con dimensioni \(L \times C\).
5.13.2.2 📌 Vincoli Computazionali
- Simmetria obbligatoria: ogni picco indicato genera due dischi azzerati (il punto e il suo simmetrico rispetto al centro) — dimenticare il simmetrico è l’errore più comune.
- Sovrapposizione: se due dischi si sovrappongono, la posizione rimane azzerata (non c’è “somma” o ripristino).
- Confronto non stretto: una posizione viene azzerata se \(\text{distanza} \le r\).
- Ordine di lettura: i \(K\) picchi devono essere elaborati nell’ordine in cui compaiono nell’input, ma il risultato finale non dipende dall’ordine (le operazioni di azzeramento sono commutative).
5.13.2.3 🧠 Fondamenti Teorici
| Concetto | Ruolo nel filtro notch |
|---|---|
| Picco in \((\Delta v, \Delta u)\) | Frequenza dell’interferenza periodica rilevata visivamente nello spettro |
| Punto simmetrico \((-\Delta v,-\Delta u)\) | Ogni DFT di segnale reale è hermitiana: i picchi compaiono sempre in coppie simmetriche rispetto al centro |
| Raggio \(r\) | Controlla la “larghezza” della reiezione — un \(r\) grande rimuove più energia attorno al picco, ma anche informazione utile |
5.13.2.4 📦 Specifica di Input e Output (VPL)
Input:
- Riga 1: Intero \(L\).
- Riga 2: Intero \(C\).
- Righe successive: Elementi interi della matrice di magnitudine (centrata), \(L\) righe.
- Riga successiva: Intero \(K\).
- \(K\) righe successive: tre interi \(\Delta v\), \(\Delta u\), \(r\) (separati da spazi).
Output:
- Matrice risultante in \(L\) righe e \(C\) colonne, separati da spazi.
5.13.2.5 📌 Esempi
| Input | Output | Osservazione |
|---|---|---|
| 5 5 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 1 1 1 0 |
1 2 3 4 5 6 0 8 9 10 11 12 13 14 15 16 17 18 0 20 21 22 23 24 25 |
Centro \((c_y, c_x) = (2, 2)\). Il picco indicato \((\Delta v, \Delta u) = (1, 1)\) genera il punto \((3, 3)\) (valore 19) e il suo simmetrico \((1, 1)\) (valore 7), entrambi azzerati con \(r=0\) (solo i punti esatti). |
%%writefile EP05_02.py
# Codice PythonOverwriting EP05_02.py
TestSuite("EP05_02.py").run()✔️ EP05_02.cases esiste già in casos/
📋 5 caso/i caricato/i da casos/EP05_02.cases
🔍 Test di Python: EP05_02.py
⚠️ EP05_02.py: file vuoto (meno di 3 righe). Test saltati.