EP01_11 — 📈 Analisi di Vicinato: Filtro di Massimo 1D
1.17.11 EP01_11 📈 Analisi di Vicinato: Filtro di Massimo 1D
In questa attività, devi implementare un semplice filtro morfologico di massimo che opera su un segnale unidimensionale (vettore).
Leggi un intero n, che rappresenta la dimensione del vettore.
Leggi i n elementi interi che compongono il vettore originale v1.
Crea un nuovo vettore v2, in cui ogni posizione \(i\) è il risultato del confronto tra l’elemento corrente e i suoi vicini immediati:
\[v2[i] = \max(v1[i-1],\; v1[i],\; v1[i+1])\]
📌 Importante:
Bordi: Alle estremità del vettore (indici \(0\) e \(n-1\)), il vicinato ha solo due elementi (quello stesso e l’unico vicino disponibile). All’indice \(0\), confronta solo \(v1[0]\) e \(v1[1]\). All’ultimo indice, confronta solo \(v1[n-2]\) e \(v1[n-1]\).
Output: Stampa l’intestazione “v2:” seguita dai valori del vettore risultante, uno per riga.
Per un simulatore interattivo su questo problema, vedi Figura 1.21 (passa il mouse sui risultati per visualizzare la finestra di vicinato utilizzata nel calcolo).
1.17.11.1 🧠 Perché analizzare i vicini?
Nell’elaborazione delle immagini, il valore di un pixel raramente è isolato; dipende dal contesto circostante. Il Filtro di Massimo è la base dell’operazione di Dilatazione nella morfologia matematica e serve a:
Funzione
Effetto Visivo
Enfatizzazione
Espande strutture luminose e “ingrossa” oggetti chiari.
Rimozione del Rumore
Elimina piccoli punti neri (rumore “sale e pepe” scuro).
Riempimento
Chiude piccoli buchi o lacune in forme binarie.
1.17.11.2 📋 Compito (specifica per VPL)
Input:
Un intero n.
Nelle righe successive, i n elementi interi del vettore.
Output:
La stringav2: sulla prima riga.
Nelle righe successive, ogni elemento di v2 (uno per riga).
1.17.11.3 📌 Esempi
Input
Output
Osservazione
5
10
20
5
30
15
v2:
20
20
30
30
30
All’indice 1: max(10, 20, 5) = 20
📈 Simulatore EP01_11: Filtro di Massimo Locale 1DFinestra 1x3
Clicca sugli elementi di v1 (Ingresso) per generare nuovi valori individuali oppure passa il mouse sulle celle di v2 (Risultato) per ispezionare la finestra locale di vicinanza.
Vettore v1 (Ingresso)
⬇️
Vettore v2 (Risultato del Massimo)
Passa il cursore del mouse su una cella del vettore v2 per analizzare la finestra di massimo locale.
Figura 1.21: Simulatore EP01_11: Filtro di Massimo Locale 1D (Vicinato 1x3 con Condizione di Bordo)
%%writefile EP01_11.py# la tua soluzione
Overwriting EP01_11.py
TestSuite("EP01_11.py").run()
✔️ EP01_11.cases esiste già in casos/
📋 7 caso/i caricato/i da casos/EP01_11.cases
🔍 Test di Python: EP01_11.py
⚠️ EP01_11.py: file vuoto (meno di 3 righe). Test saltati.