Filtro di smoothing Gaussiano Appartengono a questa categoria i filtri lineari di smoothing che definiscono i coefficienti della maschera di convoluzione in accordo alla funzione gaussiana. Tali filtri si dimostrano molto efficaci per attenuare il rumore di tipo gaussiano presente nell’immagine. La funzione di trasferimento h(l,k) modellata dalla funzione gaussiana discreta con media zero e` data da: c fattore di normalizzazione che per semplicità` si assume uguale a 1
Filtro di smoothing Gaussiano è l’unico parametro che modella la funzione di trasferimento e definisce l’area di influenza del filtro gaussiano Il peso dei coefficienti della maschera è inversamente proporzionale alla distanza dei pixel rispetto a quello centrale (i pixel a distanza maggiore di circa 3 non avranno nessuna influenza per il filtraggio).
Filtro di smoothing Gaussiano Proprieta` del filtro gaussiano Simmetria circolare Monotono decrescente (nel dominio spaziale e delle frequenze) Separabile. SIMMETRIA CIRCOLARE Il filtro Gaussiano esegue l’operazione di smoothing in modo identico in tutte le direzioni. Da cio` consegue che il filtro opera in maniera indipendente dall’orientazione delle strutture presenti nell’immagine. Questa proprietà è dimostrata convertendo le coordinate cartesiane (l,k) in coordinate polari (r, ) nella funzione Gaussiana Dove il raggio polare è r2=l2+k2
Filtro di smoothing Gaussiano Proprieta’ del filtro nel domino delle frequenze
Filtro di smoothing Gaussiano Proprieta’ di separabilita` del filtro gaussiano Siano h(i,j) e f(i,j) rispettivamente la funzione di trasferimento e l’immagine da filtrare, segue:
Filtro di smoothing Gaussiano Proprieta’ di separabilita` del filtro gaussiano I passi essenziali sono cosi riassunti: Eseguire la convoluzione con maschera orizzontale e salva il risultato in modo trasposto rispetto all’inizio. (Convoluzione orizzontale) Eseguire la convoluzione con la stessa maschera orizzontale. (Convoluzione verticale) Eseguire la trasposizione dell’immagine per riportarla nella posizione originale.(Immagine filtrata)
Filtro di smoothing Gaussiano FILTRO GAUSSIANO DISCRETO I coefficienti della maschera di convoluzione sono calcolati analiticamente considerando la funzione di distribuzione gaussiana: E` noto che gli effetti del filtro sono controllati dai valori della varianza 2 e dalle dimensioni della maschera L×L. Per una maschera 7x7, varianza 2=2 e normalizzando il valore massimo del picco uguale ad 1 nella posizione centrale (0,0) della maschera, i valori discreti prodotti da tale equazione sono:
Filtro di smoothing Gaussiano FILTRO GAUSSIANO DISCRETO In molti sistemi di elaborazione immagine e` comodo considerare i coefficienti del filtro con valori interi. Per tale scopo si calcola un adeguato valore della costante k Se si vuole far corrispondere una valore minimo (per esempio 1) ai vertici della maschera ed un valore massimo k in corrispondenza del coefficiente centrale, si ha:
Filtro di smoothing Gaussiano FILTRO GAUSSIANO DISCRETO Con questi nuovi valori dei coefficienti, e` necessario normalizzare i valori della funzione di convoluzione con una costante , ossia
Estrazione dei bordi Edging
L’operazione di estrazione degli Edge di una immagine risulta ancora oggi essere una operazione fondamentale per l’analisi delle immagini In questo capitolo, saranno descritti gli algoritmi più comuni per determinare i bordi con operatori locali (Local Edge Detector - LED) Tali algoritmi assegnano un valore di bordo a ciascun pixel ma nessuna informazione è generata per legare insieme i vari pixel di bordo (Link Edge) per formare segmenti di bordo Gli algoritmi LED sono Operatori Locali che determinano le variazioni locali dei valori di livello di grigio dell’immagine oppure le variazioni locali della derivata prima della funzione intensità. Tali discontinuità locali nelle vicinanze dei bordi possono essere di vario tipo.
Discontinuità a gradino (Step-Edge) Discontinuità a linea Discontinuità lineare (Ramp Edge) Discontinuità lineare con salita e discesa (Roof Edge)
Gli algoritmi LED possono essere raggruppati nelle seguenti categorie: Operatori basati sulla differenziazione Operatori basati sull'approssimazione del modello di Edge
Filtro Gradiente Mentre i filtri di smoothing attenuano strutture in alta frequenza, quelli di edging devono esaltare le discontinuità L’operatore che assolve a tale compito è l’operatore di derivata prima. Per una immagine bidimensionale f(x,y), le derivate parziali prime f/x e f/y definiscono le discontinuita` dell’immagine nella direzione degli assi coordinati x e y L’orientazione dei bordi nell’immagine non necessariamente coincide con gli assi coordinati. Da cio` consegue la necessita` di calcolare le derivate direzionali dell’immagine f per ogni punto (x,y) nella direzione r di massima discontinuita` dei livelli di grigio (massimo locale della derivata di f).
L’operatore che presenta queste caratteristiche e` il gradiente. Il gradiente di f(x,y) nel punto A nella generica direzione r con angolo e` dato da:
Siamo interessati a trovare il valore massimo da cui
Viene d’ora un poi chiamato vettore gradiente il valore massimo della derivata (f/r)gmx nella direzione di massima variazione, che in notazione differenziale e` definita da: Una misura quantitativa della massima variazione di f nella direzione definita dal gradiente f e` dato dal modulo del vettore gradiente definito come Il modulo e la direzione del gradiente sono indipendenti dalle coordinate (x,y) del sistema di riferimento.
Per ridurre la complessita` computazionale il modulo del gradiente puo` essere approssimato considerando i valori assoluti: oppure Il modulo |f| e la direzione gmx del gradiente sono indipendenti dalla scelta del sistema di riferimento, ossia sono invarianti con la rotazione degli assi coordinati.
APPROSSIMAZIONE DEL FILTRO GRADIENTE Per una immagine digitale di dimensione NN, il vettore gradiente può essere approssimato sostituendo la differenziazione in due direzioni ortogonali lungo i rispettivi assi coordinati con le differenze finite sempre nelle rispettive direzioni x ed y. Le seguenti approssimazioni sono date per le righe:
Queste approssimazioni conducono alle seguenti maschere di convoluzione h: R e C identificano le maschere per le righe e le colonne. Il simbolo indica il pixel in elaborazione nel caso di maschere asimmetriche I simboli (+, -, ed s) indicano maschere di convoluzione calcolate rispettivamente con la differenza in avanti, all’indietro e simmetrica.
Il filtro simmetrico delle differenze si comporta come un filtro passa-basso e puo` essere pensato come la combinazione di un filtro di smoothing ed un filtro di esaltazione dei bordi: La maschere di convoluzione orizzontale e verticale trovate sono utilizzate solo per l’estrazione dei bordi dominanti in direzione perpendicolare agli operatori stessi.
Per tale scopo possono essere applicati i seguenti operatori di convoluzione:
Applicazione dei due filtri orizzontali e verticali
Riassumendo, l’estrazione dei bordi prevede diversi passi: Filtraggio dell’immagine applicando in modo indipendente le maschere di convoluzione hR ed hC. Calcolare il quadrato per ogni pixel delle due immagini ottenute al passo 1). Somma i pixel omologhi delle due immagini del passo 2 Calcola la radice quadrata dell’immagine del passo 3. L’immagine risultante e` l’immagine degli Edge Calcola l’arcotangente per ogni valore di gC/gR (conponenti di gradiente orizzontale e verticale) calcolate nel passo 1). L’immagine risultante e` la mappa di orientazione dei bordi.
Le maschere di convoluzione sono OPERATORE DI ROBERTS Un modo alternativo per approssimare la differenziazione e` quello suggerito da Roberts: Le maschere di convoluzione sono
MANIPOLAZIONE DELL’IMMAGINE GRADIENTE A questo punto, ottenuta l’immagine gradiente, vanno ricercati i bordi. Alcune definizioni per verificare se un pixel è di bordo sono: a) b) dove IT e` un valore di grigio da assegnare ai pixel classificati come bordi mediante la soglia T come in precedenza
c) dove IB e` un valore di grigio da assegnare ai pixel non classificati come bordi mediante la soglia T. Separazione dei bordi dallo sfondo. d)
OPERATORE DI SOBEL Gli operatori descritti basati sul gradiente generano bordi con spessore di almeno due pixel. Per attenuare questi inconvenienti, l’operatore di Sobel esegue simultaneamente la differenziazione rispetto ad un asse coordinato e calcola una media locale in direzione ortogonale. Le componenti del gradiente con l’operatore di Sobel sono calcolati nella direzione degli assi coordinati x ed y, coinvolgendo per ciascun pixel in elaborazione (i,j) i pixel nelle sue vicinanze incluse nella finestra 3x3 come mostrato in figura:
OPERATORE DI SOBEL dove la costante K e` scelta uguale a 2 ed i pixel vicini a quello in elaborazione (i,j) hanno una influenza in relazione ai corrispondenti pesi indicati con A,B,..,E. Scegliendo una finestra piu` grande 33 per la stima del gradiente, l’effetto di smoothing aumenta rispetto all’operatore con finestra 22, diminuendo in tal modo la sensibilità dell’operatore dalle fluttuazioni dei valori di intensità presenti nell’immagine
OPERATORE DI SOBEL Le convoluzioni discrete per le componenti orizzontale e verticale dell’operatore di Sobel sono: L’operatore di Sobel definisce il modello del gradiente con la nota formula:
OPERATORE DI PREWITT Differisce dall’operatore di Sobel solo per il valore della costante K che e` dimezzato ossia posta uguale a 1. In questo modo, le maschere di convoluzione diventano: Diversamente dall’operatore di Sobel, i pixel piu` vicini (nord, sud, est, ovest) al pixel in elaborazione non hanno un peso maggiore ma contribuiscono alla stima del gradiente spaziale con lo stesso peso.
OPERATORE DI FREI&CHEN Questo operatore assegna alla costante K il valore 2 pesando i pixel vicini in modo omogeneo ed in tal modo il valore del gradiente e` uguale in presenza di bordi verticali, orizzontali ed obliqui.
OPERATORI A CONFRONTO
La maschera di convoluzione combinata risulta la seguente: OPERATORI A CONFRONTO Il problema di mediare tra esaltazione delle alte frequenze per la ricerca dei bordi e l’attenuazione del rumore La maschera di convoluzione combinata risulta la seguente: Se si considerano le maschere hR(i,j) dell’operatore di Prewitt ed hSMOOTH(i,j)=1/9 il filtro media di smoothing di 33, si ottiene la maschera di convoluzione combinata dell’operatore gradiente 55 nella forma:
OPERATORE DERIVATA DELLA GAUSSIANA (DroG) L’operatore gradiente basato sulla derivata della gaussiana e` ottenuto applicando prima l’operatore di smoothing gaussiano e successivamente derivando rispetto agli assi coordinati.
OPERATORE GRADIENTE DIREZIONALE In diverse applicazioni è conveniente calcolare i bordi per un numero definito di direzioni Questo può essere realizzato mediante la convoluzione dell’immagine di input f(i,j) con diverse maschere hk i cui pesi modellano le risposte impulsive con gradiente direzionale. Il gradiente direzionale è espresso da dove hk è la risposta impulsiva del gradiente nella direzione 1 7 2 dove k può assumere valori da 0 (per indicare la direzione nord) a 7
OPERATORE GRADIENTE DIREZIONALE Le maschere di convoluzione corrispondenti alle k direzioni sono ottenute partendo con k=0 e ruotando in modo circolare di /4 ogni elemento esterno della maschera 33. k=0,...,7
OPERATORE GRADIENTE DIREZIONALE
OPERATORE GRADIENTE DIREZIONALE La somma dei pesi di ogni maschera è zero Consegue che nelle zone omogenee l’operatore sarà zero. Valore massimo si ha quando la configurazione dei livelli di grigio dei pixel meglio concordano con i modelli rappresentati dalle maschere. Altri operatori gradiente possono essere definiti con altre rotazioni: per esempio di /6 con maschere di dimensioni 55. Con maschere ancora più grandi si possono calcolare le direzioni dei bordi in modo più preciso con una buona riduzione del rumore ma con la necessità di notevole tempo di calcolo.
Uso della derivata seconda per accentuare ulteriormente i bordi OPERATORE LAPLACIANO Uso della derivata seconda per accentuare ulteriormente i bordi Si usa l’operatore di Laplace così definito Applicare l’operatore Laplaciano ad una immagine f(i,j) per localizzare facilmente i pixel di bordo corrispondenti al pixel dove il fianco di salita o di discesa di 2f passa per lo zero (da positivo a negativo e viceversa). Questa transizione di 2f per lo zero è chiamato anche zero crossing e corrisponde al pixel di bordo
Più sensibile al rumore rispetto agli altri operatori, OPERATORE LAPLACIANO Più sensibile al rumore rispetto agli altri operatori, Non fornisce informazioni di direzione del bordo, e può generare doppi bordi Nel dominio spaziale discreto, l’operatore laplaciano può essere approssimato considerando le differenze dei valori di intensità invece delle derivate. La componente orizzontale dell’operatore laplaciano è approssimata come segue: differenza in avanti
OPERATORE LAPLACIANO Con la traslazione di un pixel in orizzontale, ottenuta sostituendo j con j-1 si calcola il valore approssimato del laplaciano nel punto (i,j) definito da: operando in modo analogo per la componente verticale si ottiene: Queste approssimazioni conducono alle corrispondenti maschere di convoluzione orizzontale e verticale: Dalla combinazione delle componenti orizzontali e verticali si ottiene una singola maschera di convoluzione del laplaciano:
LAPLACIANO DELLA GAUSSIANA Marr ed Hildreth hanno definito un operatore per l’estrazione dei bordi, chiamato laplaciano della gaussiana (LOG) combinando l’effetto del filtro gaussiano (smoothing) con quello dell’operatore laplaciano (per esaltare i bordi).
LAPLACIANO DELLA GAUSSIANA
DIFFERENZA DI GAUSSIANE - DoG Una buona approssimazione al filtro di Marr-Hildreth è ottenuto con un operatore basato sulla differenza di due Gaussiane con differente valore di : dove con A>B e 1<2 Marr ed Hildreth hanno trovato che con 2/1=1.6 si ha la migliore approssimazione al filtro Laplaciano della Gaussiana
DIFFERENZA DI GAUSSIANE - DoG
OPERATORE DI CANNY La presenza di discontinuità nell’immagine, causate dalla fluttuazione dei sensori e dalla elettronica associata della telecamera, producono valori di gradiente anche in zone dell’immagine che dovevano essere omogenee (bordi sparsi ed artefatti). Queste discontinuità dovute al rumore, possono non essere facilmente filtrate poichè spesso sono differenti rispetto alle caratteristiche del filtro Un operatore che approssima la misura di gradiente per estrarre i bordi deve risolvere due caratteristiche contrapposte: - attenuare il rumore localizzare i bordi accuratamente quanto possibile.
OPERATORE DI CANNY Se si esagera con la prima caratteritica, si hanno problemi nel localizzare i bordi in quanto il processo di smoothing può aggiungere incertezza sulla posizione del valore di massima discontinuità Se si esagera con la seconda caratteristica, si ha l’inconveniente di aumentare la sensibilità dell’operatore ed estrarre bordi che in realtà sono da attribuire al rumore Un operatore lineare basato sulla derivata prima della Gaussiana DroG risulta essere un buon compromesso tra localizzare i bordi e la non dipendenza del rumore L’operatore di Canny è risultato essere ottimale per risolvere il compromesso tra la localizzazione accurata dei bordi e l’influenza dal rumore.
OPERATORE DI CANNY Le caratteristiche dell’operatore di Canny sono Buona determinazione dei bordi, il rapporto segnale rumore (snr) del gradiente è massimizzato per ottenere la probabilità minore di errore nella determinazione di un bordo reale e di ottenere una probabilità minima nel considerare un falso bordo Buona localizzazione, punti identificati come bordi sono il più vicino possibile al centro del bordo reale Risposta singola, l’operatore dovrebbe produrre una unica risposta per uno stesso bordo
OPERATORE DI CANNY Primo passo Vediamo ora come possono essere descritte matematicamente le caratteristiche ottimali proposte da Canny La prima e la seconda caratteristica può essere soddisfatta considerando l’operatore DroG, la Derivata della Gaussiana, come operatore che meglio approssima il rapporto segnale rumore e localizzazione Primo passo Il primo passo dell’operatore di Canny è quello di convolvere l’immagine f(i,j) con un filtro di smoothing Gaussiano h(i,j;) producendo una immagine g(i,j) data da: dove controlla il livello di smoothing Secondo passo Successivamente sono stimate le derivate parziali gx e gy, il modulo ed orientazione del gradiente per ogni pixel (i,j) dell’immagine g.
OPERATORE DI CANNY Le derivate parziali sono approssimate, usando per ogni pixel (i,j) finestre 22, e considerando le prime differenze: Il modulo ed orientazione del gradiente sono calcolati dalle note formule:
OPERATORE DI CANNY Terzo passo Siamo ora interessati a calcolare la posizione del bordo, la sua orientazione e possibilmente considerare anche il modulo del bordo in relazione al modulo del gradiente M(i,j). Un modo per localizzare i punti di bordi potrebbe essere quello di considerare punti dell’immagine gradiente M(i,j) con valori alti Questo approccio non risulterebbe robusto per identificare i bordi poiché l’immagine gradiente ha l’effetto di accentuare le zone con discontinuità di livelli di grigio e conseguentemente nell’immagine gradiente M(i,j) il problema della localizzazione si ridurrebbe a trovare i punti di massimo locale.
OPERATORE DI CANNY L’operatore di Marr-Hildreth localizza in corrispondenza degli zeri nella derivata seconda globale (ricordiamo che non fornisce la direzione del bordo in quanto è usato l’operatore laplaciano) L’operatore di Canny invece, annulla la derivata seconda direzionale per trovare l’orientazione del gradiente e quindi la direzione ortogonale al bordo Questo è espresso dalla equazione:
OPERATORE DI CANNY La localizzazione dei bordi non risulta un compito molto semplice anche in presenza di bordi ben delineati perchè non sempre risulta con valore zero la derivata seconda dell’immagine smussata g Una buona strategia può essere quella di considerare l’andamento dei pixel localmente per cercare i valori a zero della derivata seconda. Si considera una finestra di dimensioni adeguate centrata sul pixel in elaborazione
OPERATORE DI CANNY Quindi si cercano i massimi locali nell’immagine gradiente (modulo) nella direzione perpendicolare al bordo dove la derivata seconda direzionale è nulla Questo processo è chiamato soppressione dei non massimi locali (non-maximal suppression-nms). Tale processo assottiglia i picchi in M(i,j) ponendo a zero tutti i punti di M(i,j) lungo la direzione (i,j) del gradiente che non sono valori di picco.
OPERATORE DI CANNY Quarto Passo Riduzione dei frammenti dei falsi bordi presenti in N(i,j), Tutti i valori di N(i,j) al di sotto di un certo valore di soglia sono impostati a zero
OPERATORE DI CANNY I passi essenziali dell’operatore (algoritmo) di Canny sono così riassunti: 1-L’immagine originale f(i,j) è convoluta con il filtro Gaussiano h(i,j;) ottenendo l’immagine smussata g(i,j) 2-Calcola le seguenti informazioni (immagini) associate al gradiente per ciascun pixel dell’immagine smussata g(i,j): -gx(i,j) derivata prima parziale (componente orizzontale) -gy(i,j) derivata prima parziale (componente verticale) -M(i,j) modulo del gradiente -(i,j) direzione del gradiente 3-Non-maximal suppression (NMS) all’immagine modulo del gradiente M(i,j) ottenendo come risultato l’immagine N(i,j)
OPERATORE DI CANNY 4-Attivare una procedura euristica che utilizza adeguate soglie per l’immagine N(i,j) allo scopo di attenuare la presenza di falsi bordi e di collegare contorni interrotti 5-Ripetere eventualmente i 4 passi precedenti con valori crescenti di k ottenendo le immagini di bordo N(i,j; k) per avere diversi risultati dell’operatore di Canny 6-Possibilità di integrare i risultati conseguiti N(i,j; k) a diverse scale in relazione al contesto applicativo.