In questa attività, devi scrivere un programma che esegua la segmentazione di un’immagine tramite sogliatura (thresholding).
Leggi due interi L e C, che rappresentano le dimensioni della matrice.
Leggi un intero T, che sarà il valore della soglia (taglio).
Leggi i valori interi della matrice.
Per ogni pixel \(p\), applica la seguente regola di binarizzazione:
\[\text{risultato} = \begin{cases} 255 & \text{se } p > T \\ 0 & \text{se } p \le T \end{cases}\]
Stampa la matrice risultante contenente solo i valori 0 o 255.
📌 Importante:
Presta attenzione all’operatore: il pixel diventa bianco (255) solo se è strettamente maggiore di \(T\).
L’output deve mantenere la struttura della matrice (L righe e C colonne).
Consulta un simulatore interattivo per questo problema su Figura 1.17 (regola il cursore di \(T\) per osservare come gli oggetti vengono isolati dallo sfondo).
1.17.7.1 🧠 Cos’è la Segmentazione?
La sogliatura è il metodo più semplice per separare gli oggetti di interesse dallo sfondo dell’immagine. Trasformando i toni di grigio in bianco e nero puro, creiamo una mappa binaria che facilita il conteggio degli oggetti o l’identificazione delle forme:
Valore del Pixel (\(p\))
Condizione
Risultato Finale
Scuro (\(p \le T\))
Sfondo/Rumore
0 (Nero)
Chiaro (\(p > T\))
Oggetto/In evidenza
255 (Bianco)
1.17.7.2 📋 Compito (specifica per VPL)
Input:
La prima riga contiene l’intero L.
La seconda riga contiene l’intero C.
La terza riga contiene l’intero T (soglia).
Le righe successive contengono gli elementi della matrice.
Output:
La matrice binarizzata (0 o 255) con L righe e C colonne.
1.17.7.3 📌 Esempi
Input
Output
Osservazione
2
4
128
0 100 128 200
50 129 255 64
0 0 0 255
0 255 255 0
Nota che il valore 128 è diventato 0 (poiché \(128 \le 128\))
🎛️ Simulatore EP01_07: Soglia Interattiva dell'ImmagineBinario: 0 o 255
128
Ingresso (Scala di Grigi)
Uscita (Maschera Binaria)
Pixel con intensità maggiore di 128 (p > 128) diventano bianchi (255); altrimenti, diventano neri (0).
Figura 1.17: Simulatore EP01_07: Soglia Globale Interattiva (Binarizzazione p > T)
%%writefile EP01_07.cpp// your solution
Overwriting EP01_07.cpp
TestSuite("EP01_07.cpp").run()
✔️ EP01_07.cases esiste già in casos/
📋 7 caso/i caricato/i da casos/EP01_07.cases
🔍 Test di C++: EP01_07.cpp
⚠️ EP01_07.cpp: file vuoto (meno di 3 righe). Test saltati.