Università degli Studi di Catania Facoltà di Scienze Matematiche,Fisiche e Naturali Corso di Laurea in Informatica, Secondo Livello ELABORAZIONE DELLE IMMAGINI: EDGE DETECTION Corso di Analisi Numerica Prof.ssa RM Pidatella Viola Rosalba Messina Teresa Morgano Gian Paolo INTRODUZIONE: COS’E’ UN EDGE DETECTOR Operatore che lavora sulle immagini Estrae i bordi Individua i confini di regione INTRODUZIONE: COS’E’ UN BORDO I bordi nelle immagini spesso corrispondono a contorni di oggetti Zone nell’immagine dove l’intensità varia rapidamente USO DELL’EDGE DETECTOR: VANTAGGI l’ individuazione dei bordi e’ largamente utilizzata quando si vuole dividere l’immagine in aree corrispondenti a oggetti differenti rappresentare un’immagine attraverso i suoi bordi permette che la quantità di dati da memorizzare è ridotta significativamente mentre la maggior parte delle informazioni vengono comunque mantenute l’individuazione dei bordi costituisce uno stadio preliminare dell’analisi delle immagini USO DELL’EDGE DETECTOR: ESEMPIO input output ESTRAZIONE DEI BORDI (1) i bordi corrispondono a punti con grande variazione di intensità. Tra gli strumenti matematici,per la ricerca degli edge, risulteranno essere utili alcuni operatori diffenziali nella loro versione discreta Consideriamo il segnale in una dimensione Si , con i=1,…,N. Il modulo della derivata prima indichera’ localmente dove siano grandi variazioni ESTRAZIONE DEI BORDI (2) Nel discreto occorre valutare numericamente il valore di tale derivata e considerare rapporti incrementali. Per esempio per una funzione generica, f, la differenza all’indietro fornisce una prima approssimazione. ESTRAZIONE DEI BORDI (3) Noi possiamo osservare che la posizione del bordo può essere considerata con il massimo della derivata prima o con l’intersezione con zero della derivata seconda E’ possibile calcolare la derivata prima e seconda di un’immagine bidimensionale mediante la convoluzione CONVOLUZIONE (1) è un semplice operatore matematico fornisce il modo di moltiplicare insieme due array di numeri, generalmente di diversa misura, ma della stessa dimensionalità, per produrre un terzo array di numeri della stessa dimensionalità CONVOLUZIONE (2) Questo procedimento viene utilizzato per l’implementazione di operatori sulle immagini che restituiscono in output valori di pixel che sono combinazioni lineari di certi valori di pixel dati in input uno dei due array in input è generalmente un’immagine a toni di grigio. L’altro array, tipicamente più piccolo e bidimensionale, è noto come kernel CONVOLUZIONE (3) La convoluzione e’ ottenuta scorrendo il kernel sull’immagine, partendo generalmente dall’angolo in alto a sinistra, in maniera tale da muovere il kernel lungo tutte le posizioni dove il kernel calza all’interno dei limiti dell’immagine. Ogni posizione del kernel corrisponde a un singolo pixel in output, il valore del quale è calcolato moltiplicando insieme il valore del kernel e il valore del pixel dell’immagine sottostante per ogni cella presente nel kernel, e sommando tutti questi valori insieme. CONVOLUZIONE (4) Convoluzione & Edge Detector Differenti edge detector sono basati sulla possibilita’ di calcolare la derivata prima di un’immagine bidimensionale, calcolando la convoluzione tra l’immagine ed un insieme di maschere La tecnica piu’ utilizzata e’ quella del gradient edge detection. Le maschere piu’ comuni per questi tipi di edge detector sono: Sobel, Roberts Cross e Prewitt. ALGORITMO DI CANNY L’operatore di Canny prende in input un’immagine a toni di grigio e produce in output un’immagine che mostra la posizione delle zone con intensita’ discontinua, cioè i bordi ALGORITMO DI CANNY 1. 2. 3. 4. Il metodo di Canny e’ stato realizzato mediante i seguenti passi: Filtro gaussiano Norma del gradiente Thresholding Thinning Vediamo piu’ in dettaglio queste fasi… ALGORITMO DI CANNY: FILTRO GAUSSIANO E’ un operatore di convoluzione a due dimensioni che e’ usato per sfocare le immagini e per rimuovere qualche dettaglio e rumore. La distribuzione gaussiana ha la seguente forma: rappresenta la deviazione standard della distribuzione ALGORITMO DI CANNY: FILTRO GAUSSIANO La funzione MATLAB che abbiamo implementato per lo sviluppo del calcolo della maschera con filtro gaussiano è la seguente: function y = gauss(x,std) y = exp(-x^2/(2*std^2)) / (std*sqrt(2*pi)); ALGORITMO DI CANNY: FILTRO GAUSSIANO Fissando x=0, la distribuzione e’ la seguente: Piu’ e’ larga la campana e maggiore sara’ l’effetto dello smoothing ALGORITMO DI CANNY: FILTRO GAUSSIANO si costruiscono i due filtri Gx e Gy, che costituiscono le due derivate della gaussiana si convolve l’immagine di ingresso I con G le immagini Ix e Iy contengono le componenti sui due assi del gradiente di cui vanno cercati i massimi ALGORITMO DI CANNY: NORMA DEL GRADIENTE Le componenti Ix e Iy vengono combinate insieme per trovare la norma del gradiente. La norma del gradiente è data da: Un difetto consiste nel fatto che tende ad “ingrossare” i bordi ALGORITMO DI CANNY: THRESHOLDING Un edge sara’ un punto caratterizzato da un alto valore della norma In questa fase dell’algoritmo determinati i valori massimi e minimi della norma del gradiente e dunque definito un parametro di soglia, i valori dei pixel dell’immagine in input sono confrontati con tale valore, e nell’immagine in output il pixel corrispondente avrà associato come valore quello massimo ALGORITMO DI CANNY: THRESHOLDING Il semplice confronto con una soglia non porta a risultati soddisfacenti e inoltre e’ difficile individuare un corretto valore di soglia ALGORITMO DI CANNY: THINNING In questa fase va eseguita la ricerca dei massimi locali del gradiente In effetti se un punto appartiene a un bordo, il valore del gradiente in esso è superiore ai valori dei vicini nella direzione del gradiente Se il punto in esame non verifica questa condizione, viene azzerato (nonmaximum suppression) ALGORITMO DI CANNY: THINNING Per ogni punto bisogna quindi individuare la direzione del gradiente e confrontare il modulo del gradiente, nel punto in esame, con i valori dei vicini al punto e giacenti sulla direzione del gradiente ALGORITMO DI CANNY: THINNING Per trovare i pixel dove le norme del gradiente sono massimi locali abbiamo applicato l’interpolazione; tale funzione in MATLAB è interp2 ALGORITMO DI CANNY: DIPENDENZA DA Il fattore di deviazione standard influisce sulla definizione dei bordi. BIBLIOGRAFIA & WEBGRAFIA Naldi-Pareschi Matlab Concetti e Progetti Apogeo http://www-dsp.elet.polimi.it/ispg/eti/laboratorio/ sessioni/Edge_Detection/Teoria.html http://giachetti.sc.unica.it/vision/materialeold.html