Introduzione

Gli algoritmi di edge detection sono algoritmi che assegnano un valore ad ogni pixel in proporzione del fatto che quel pixel faccia parte di un β€œbordo” in un’immagine o meno. Per bordo di intende un’area di confine tra due zone di pixel di diversa intensitΓ . Il piΓΉ noto algoritmo di edge detection Γ¨ Canny: questo prende in ingresso un’immagine in scala di grigi e produce in uscita un’immagine che enfatizza la posizione dei bordi.

Funzionamento

L’algoritmo funziona tramite piΓΉ elaborazioni distinte dell’immagine in ingresso. Prima di tutto l’immagine viene sfocata tramite la convoluzione con un kernel gaussiano, poi viene applicato un operatore derivativo per enfatizzare maggiormente le regioni con derivata molto alta (quindi dove ho un brusco cambiamento nell’intensitΓ  dei pixel). I bordi dell’immagine creano quindi delle creste nell’immagine derivata sopra. Ora l’algoritmo azzera tutti i pixel che non sono effettivamente sopra una cresta in modo da fornire, in uscirΓ  un insieme di linee: questo processo Γ¨ detto non-maximal suppression. Quando viene lanciato l’algoritmo vengono scelti due valori di soglia diversi tra loro, T1 e T2, con T1 > T2. L’algoritmo parte da un valore di cresta con valore maggiore di T1, il tracking quindi va in entrambe le direzioni della cresta fino a che il valore di questa ultima non scenda sotto T2. Questo metodo garantisce il riconoscimento degli edge anche in coso di immagine rumorosa o casi in cui il bordo sia diviso in piΓΉ frammenti distinti.

Utilizzo

L’effetto di questo algoritmo dipende da tre parametri: l’ampiezza del kernel gaussiano utilizzato nella prima fase di smoothing e le due soglie T1 e T2 usate dal tracker. Aumentare l’ampiezza della gaussiana riduce la sensibilitΓ  del metodo al rumore ma allo stesso modo l’immagine puΓ² perdere alcuni dettagli utili per il riconoscimento del bordo. Solitamente, il valore di T1 viene scelto abbastanza alto e il valore di T2 relativamente basso, infatti settare T2 ad un valore troppo alto rischia di rompere i bordi rumorosi, mentre un valore troppo basso rischi di rilevare bordi non importanti o inesistenti.

Esempio

Come esempio prendiamo la seguente immagine:

Usiamo un kernel gaussiano con deviazione standard a 1 e T1 = 255, T2 = 1. Otteniamo:

Gli edge principali sono stati rilevati, ma allo stesso modo sono stati rilevati molti dettagli trascurabili. Questo avviene perchΓ© il valore di T2 Γ¨ troppo basso, ripetiamo l’analisi incrementando tale valore a 220:

I bordi sono piΓΉ rotti, inoltre gli edge verticali sul muro non sono stati rilevati, sintomo di un valore questa volta troppo alto. Riduciamo il valore di T1 a 128 e riportiamo il valore di T2 a 1, come nel primo esempio, inoltre aumentiamo la deviazione standard a 2.

In questo modo ottengo una migliore rilevazione degli edge e allo stesso modo una minore sensibilitΓ  al rumore, ottengo quindi il risultato migliore.