Thresholding
DigitalImageProcessing PublishedPosts
1. Introduzione
Thresholding Γ¨ il metodo di segmentazione di unβimmagine piΓΉ semplice per distinguere i pixel in background dai pixel in foreground di unβimmagine in base alla loro intensitΓ . Nellβimplementazione piΓΉ semplice, lβalgoritmo prende in ingresso unβimmagine binaria o in scala di grigi e produce in uscita unβimmagine binaria i cui pixel neri rappresentano i pixel in background mentre i pixel bianchi i pixel in foreground. Per distinguere lβinsieme in cui inserire un pixel esiste un unico parametro chiamato intensitΓ di soglia (o intensity threshold in inglese): se lβintensitΓ di un pixel ha valore minore della soglia viene indicato come bianco (per esempio), altrimenti come nero. In implementazini piΓΉ complesse posso anche indicare piΓΉ valori di soglia oppure, per immagini colorate, impostare un valore di soglia per ogni componente di colore.
2. Applicazioni
Non tutte le immagini possono essere segmentate in questo modo, per poter capire la struttura di unβimmagine e se questa puΓ² essere correttamente segmentata tramite tresholding Γ¨ necessario analizzare il suo intensity histogram (grafo che mostra sullβasse delle ordinate le intensitΓ possibili che ogni pixel puΓ² assumere, comunemente da 0 a 255, e sullβasse delle y il numero di occorrenze che un pixel con tale intensitΓ si trova nellβimmagine). Eβ possibile separare i pixel in primo piano dai pixel in background se lβintensitΓ dei pixel in primo piano Γ¨ notevolmente differente da quella dei pixel in background; in questo caso ci aspettiamo di vedere un picco nellβistogramma dellβimmagine che corrisponde ai pixel dellβoggetto in foreground che vogliamo evidenziare. Se tale picco non esiste, con ottima probabilitΓ questo tipo di segmentazione non produrrΓ risultati apprezzabili. In questo caso Γ¨ consigliabile usare un algoritmo di adaptive thresholding, che verrΓ spiegato successivamente in questo articolo.
Prendiamo il seguente esempio
Nel primo caso abbiamo il caso piΓΉ semplice in cui un singolo valore di soglia T1 permette di distinguere i pixel in primo piano dai pixel in background. Nel secondo caso abbiamo invece nu esempio piΓΉ complesso in quanto i pixel centrali rappresentano lβoggetto che voglio rilevare e conseguentemente la soglia deve essere di due valori: T1 e T2. Nel terzo caso invece Γ¨ molto probabile che non si riesca ad ottenere una segmentazione corretta.
3. Adaptive Thresholding
Nel algoritmo tradizionale di thresholding il valore id soglia Γ¨ impostato allβinizio e rimane costante per tutta la durata dellβalgoritmo. Il metodo di adaptive thresholding invece cambia il valore della soglia dinamicamente in base allβimmagine in ingresso, per esempio per avere risultati migliori in immagini in cui cambia la condizione di luminositΓ dellβoggetto dovuto a illuminazioni laterali che portano a gradienti dβombra. Questo metodo seleziona un valore di soglia diverso per ogni pixel in base al range di valori che assumono i pixel nel suo vicinato. Questo permette il thresholding in immagini che non hanno un picco distintivo nellβistogramma. Per esempio, consideriamo la seguente immagine:
Dato che lβimmagine contiene un notevole gradiente dβombra, il metodo di thresholding classico non funziona correttamente, come dimostra il risultato indicato sotto
Usando un metodo di Adaptive Thresholding utilizzando come algoritmo interno la media e un vicinato 7x7 ottengo:
che ottiene buoni risultati per il testo, ma non per il background. La situazione puΓ² essere migliorata utilizzando, al posto della media, il mean-C, dove C Γ¨ una costante, in questo caso tutti i pixel che hanno vicinato uniforme, vengono settati a background, per esempio usando un vicinato 7x7 e la costante C=7 ottengo:
Che Γ¨ sicuramente un buon risultato.