• Non ci sono risultati.

Il problema che si deve risolvere con il modulo di edge detection `e quello di suddividere l’immagine in pi`u regioni in base al valore dell’intensit`a luminosa, in modo da isolare, il pi`u precisamente possibile, i vari oggetti presenti nella ROI. Nel caso del tubo di vetro, il problema si riduce al ricercare i contorni

di eventuali corpi estranei immersi nel vetro stesso: le righe, le impurit`a, e in generale qualsiasi disomogeneit`a. I sistemi di edge detection basati su calcolo del gradiente partono dai seguenti presupposti teorici. Per contor- no di un oggetto si intende: l’insieme delle curve visibili dell’oggetto e le regioni in cui la superficie vista dalla telecamera presenta una discontinuit`a a gradino, oppure discontinuit`a nell’orientamento della normale alla superfi- cie. In condizioni di luce diffusa e oggetti di colore uniforme, l’orientamento delle superfici di tali oggetti ha la massima influenza sulla riflessione della luce stessa; quindi possiamo pensare che le discontinuit`a della superficie di un oggetto corrispondano a discontinuit`a dell’intensit`a luminosa. L’inten- sit`a luminosa I(x, y) rappresenta la potenza ottica per unit`a di superficie e si misura in W/m2. Possiamo quindi assumere vere le seguenti afferma-

zioni: ad una variazione dell’intensit`a luminosa corrisponde una variazione dell’orientamento della superficie (e viceversa), e ad una discontinuit`a del- l’intensit`a luminosa corrisponde una discontinuit`a della superficie (e vicever- sa). Tali condizioni sono vere nell’ipotesi di luce diffusa e colori uniformi. Il procedimento avviene in due fasi:

Rilevazione dei contorni parte dall’immagine originale a livelli di grigio e produce un insieme di punti candidati ad appartenere ad un contorno Connessione consiste nel prendere un insieme di punti candidati, trovati

nella fase precedente, e interpolarli con una curva in modo da ottenere linee chiuse delimitanti aree distinte.

Da un punto di vista matematico il problema della rilevazione dei contorni `e un problema mal posto: le soluzioni non sono robuste n´e certe. Un problema di questo metodo di ricerca dei contorni `e che il rumore crea discontinuit`a nell’intensit`a luminosa delle immagini che possono creare errori nella scelta

dei punti candidati ad appartenere ad un contorno. Si veda, a titolo di esempio, la figura 2.7 che mostra un esempio monodimensionale.

Figura 2.7: Immagine di un cubo in 3 dimensioni (a) di cui si trova il punto h (nel caso monodimensionale) teorico (b) e nel caso reale dove l’intensit`a `e affetta da rumore (c). Esempio di filtro passa-alto per eliminare il rumore del caso reale (d)

A cusa del rumore la discontinuit`a di I(x) non `e un gradino, ma un’altra curva che varia bruscamente. Il rumore potrebbe generare picchi di intensit`a laddove non siano realmente presenti dei contorni, e tale situazione portereb- be per`o a considerare il punto trovato come un punto candidato. Un modo di attenuare l’influenza del rumore `e quella di filtrare l’immagine in modo tale da eliminare il pi`u possibile il rumore, di solito filtrando le alte frequenze spaziali. In tal modo per`o, si ha l’attenuazione del rumore da una parte, e dall’altra la riduzione del contrasto fra zone chiare e zone scure, ovvero tutte le discontinuit`a, anche in presenza di contorni vengono appiattite. Il filtro che

viene utilizzato `e un filtro con risposta all’impulso pari alla derivata di una gaussiana: il picco di intensit`a si avr`a nel punto di massimo della gaussiana, e il compito dell’algoritmo sar`a quello di cercare tali massimi. Ricordando che per la convoluzione vale:

dg(x)

dx ⊗ I(x) =

d(g(x) ⊗ I(x))

dx (2.4) Anzich`e utilizzare un filtro che ha come risposta all’impulso la derivata di una gaussiana si applica un filtro gaussiano all’immagine e poi si deriva il risultato. Quindi avremo un filtro cos`ı fatto:

h(x) = Z +∞ −∞ I(τ )g(x − τ) dτ = I(x) ⊗ g(x) (2.5) e nel discreto h[k] = +∞ X n=−∞ I(n) ∗ g(k − n) (2.6) Ossia i valori della gaussiana g(k) vengono ribaltati e ritardati e vano a pesare il valore dell’intensit`a. In frequenza il filtro effettua la seguente operazione:

H(f ) = F [I(x) ⊗ g(x)] = I(f) ∗ σ√π ∗ e−π2σ2f2 (2.7)

Si noti che la trasformata di una gaussiana, `e ancora una gaussiana, ma con ampiezza σ pari al reciproco dell’ampiezza della gaussiana di partenza. Variando σ si pu`o variare la scala del filtro passa-basso: pi`u `e basso il SNR minore sar`a la scala di filtraggio necessaria, in altre parole, pi`u larga `e la campana e maggiore sar`a l’effetto di smoothing che si ottiene.

Generalizzando al caso reale di immagine bidimensionale, per individuare una discontinuit`a nella funzione di intensit`a luminosa I(x,y) che descrive l’immagine digitale, di sostituisce la derivata con il gradiente: il gradiente

`e un vettore che ha direzione complanare all’immagine e verso secondo la massima variazione di I(x,y):

∇I(a, y) = ∂I(x, y) ∂x ·~i +

∂I(x, y)

∂y · ~j (2.8) Il modulo del gradiente `e nullo nelle zone di intensit`a luminosa costante e non nullo nelle zone di discontinuit`a. I punti in cui ricercare i contorni sono quelli dove il modulo del gradiente `e massimo.

Il filtro di Canny

Uno dei filtri derivativi pi`u noti e utilizzati per la ricerca dei contorni nelle immagini in scala di grigi, implementato sul sistema di visione, `e il filtro di Canny. I motivi per cui si `e scelto di utilizzare l’algoritmo di Canny sono riassumibili nei seguenti punti:

1. Buona capacit`a di individuazione: l’operatore ha una bassa probabilit`a di non individuare un bordo reale (elevata sensibilit`a) ed una bassa probabilit`a di individuare falsi bordi(elevata specificit`a)

2. Buona capacit`a di localizzazione: i punti evidenziati dall’operatore dovrebbero essere quanto pi`u vicini possibile al centro del bordo reale 3. Unicit`a della risposta: l’operatore dovrebbe fornire una sola risposta in

corrispondenza di un bordo reale

Il filtro di Canny `e ottimo e si basa su tre assunzioni: l’operatore di edge enhancement deve essere lineare, un edge `e un gradino con ampiezza finita, il rumore `e additivo, bianco, con distribuzione gaussiana. Il metodo di Canny `e articolato in quattro passaggi:

1. filtro gaussiano 2. norma del gradiente

3. sogliatura con isteresi (thresholding) 4. thinning

La prima fase consiste nel applicare all’immagine un filtro gaussiano, che sfoca le immagini cos`ı da rimuovere alcuni dettagli ed eliminare una parte del rumore. Si applicano per convoluzione i due filtri Gx e Gy, che rappresentano le due derivate parziali viste sopra, all’immagine, cos`ı da ottenere le due componenti del gradiente. In pratica rappresentano le due derivate parziali della gaussiana in 2 dimensioni, la cui forma analitica `e la seguente

G(x, y) = 1 2πσ2e

−x2+y22σ2 (2.9)

Figura 2.8: Distribuzione gaussiana di 2 variabili, G(x,y) con media (0,0) e varianza σ = 1 (a), kernel 5x5 (b) e kernel monodimensionale per la direzione x (c)

Poich´e l’immagine `e rappresentata da valori digitali, la convoluzione viene fatta con un kernel, che rappresenta l’approssimazione dell’ordine desiderato della funzione gaussiana. In figura 2.8 riportiamo il kernel di apertura 5x5. Per rendere pi`u veloce l’operazione, si riduce il kernel a 2 vettori, uno per la direzione x (rappresentato in figura 2.8(c)) e uno, identico ma trasposto, per la direzione y. Le due immagini ottenute da questa convoluzione, chiamia- mole Ix e Iy, vengono unite insieme per trovare la magnitudo (l’ampiezza) del gradiente tramite il calcolo della norma del vettore ~

~∇I(x, y) =qI2

x + Iy2 (2.10)

L’immagine ottenuta dal ~∇I(x, y) se vista come una superficie 3D con- tiene valli (valley) e rilievi. Le curve dei massimi rilievi sono dette creste, o ridges. Per eliminare tutti i punti in cui il valore della norma `e elevato ma non rappresenta un massimo locale per essa, si applica un algoritmo di non- maximum suppression. Si tengono solo i ridges, mentre vengono soppressi tutti gli altri punti. Dopo la soppressione dei non massimi viene usato un meccanismo di sogliatura a isteresi, ovvero vengono fissate due soglie T1 > T2:

tutti i pixel che hanno ~∇I(x, y) > T1 sono edge, i valori compresi tra T1 e

T2 sono detti weak-edge. Un weak-edge diventa edge solo se `e contiguo ad

un edge. Questa fase di scelta degli edge viene detta thinning.

Documenti correlati