Operazioni sulle immagini Multimedia Semplificazione: toni di grigio Per semplificare la trattazione del problema lavoreremo solo su immagini a toni di grigio. Le medesime operazioni descritte per tali immagini si estendono alle immagini RGB operando separatamente sui tre canali (piani) R, G e B e trattando ciascuno di essi come una immagine a toni di grigio indipendente dagli altri canali (soluzione non sempre apprezzata in ambito della ricerca). Multimedia L’istogramma I pixel di una immagine sono una “popolazione” sulla quale possiamo calcolare tutte le quantità statistiche descrittive che si usano normalmente: Media, mediana, varianza, deviazione standard, quartili, percentili ... Particolarmente importante è la conoscenza della distribuzione delle frequenze dei toni di grigio: l’istogramma. Multimedia Istogramma Per ogni livello di grigio, riporta il numero di pixel di quel colore. Per una immagine I[m,n] si ha H(k)= numero di pixel di valore k E la somma di tutti gli H è esattamente mxn L’istogramma è utile a comprendere in maniera immediata le caratteristiche dell’immagine. Multimedia Istogramma Multimedia 5 Immagini diverse potrebbero avere istogrammi simili! L’istogramma non tiene conto della distribuzione spaziale Multimedia 6 dei pixel! Immagine chiara: istogramma più denso a destra Multimedia 7 Immagine scura: istogramma più denso a sinistra Multimedia 8 Immagine sottoesposta Multimedia 9 Immagine sovraesposta Multimedia 10 Operazioni sulle immagini Multimedia 11 Operazioni sulle immagini Sono operazioni alterano i valori dei pixel di una immagine. L’immagine finale apparirà differente da quella iniziale. Questi operatori lavorano sia su immagini a colori che su immagini a toni di grigio. Multimedia 12 Operazione su una immagine Le elaborazioni nel dominio spaziale possono essere espresse come: g ( x, y ) = T [ f ( x, y )] essendo f l’immagine di ingresso alla elaborazione, g quella di uscita e T un operatore su f definito in un intorno di (x,y). Multimedia 13 Tipi di operazioni La dimensione dell’intorno di (x,y) definisce il carattere della elaborazione: puntuale (l’intorno coincide con il pixel stesso); locale (per esempio una piccola regione quadrata centrata sul pixel); globale (l’intorno coincide con l’intera f). Multimedia 14 Operatori puntuali Multimedia 15 Operatori puntuali Si dice operatore puntuale, un operatore che preso in input il valore di un pixel ne restituisce uno cambiato che dipende esclusivamente dal valore del pixel in ingresso. Multimedia 16 Tipiche operazioni puntuali: aggiunta o sottrazione di una costante a tutti i pixel (per compensare sotto o sovraesposizioni); inversione della scala dei grigi (negativo); espansione del contrasto; modifica (equalizzazione o specifica) dell'istogramma; presentazione in falsi colori. Multimedia 17 Operatori puntuali Un operatore puntuale può essere rappresentato da una funzione che preso in input un valore x lo modifica in un valore y=f(x) con x,y appartenenti allo stesso campo di definizione (es. entrambi tra 0 e 255). Poiché un operatore puntuale dipende solo dal valore del pixel esso è completamente descritto da una tabella come quella che segue: IN 0 1 2 3 4 5 6 7 … OUT f(0) f(1) f(2) f(3) f(4) f(5) f(6) f(7) … Multimedia 18 OUT f(x) Questa è universalmente l’interfaccia che tutti i programmi commerciali di immagini offrono per la visualizzazione e gestione delle operazioni puntuali … 8 7 X X X 6 X 5 X 4 X 3 X X 2 X 1 0 0 1 2 3 4 5 6 7 8 … Multimedia x IN LUT Questo tipo di grafico si chiama look-up tables (LUT). Multimedia 20 In Photoshop: “aggiusta curve” Multimedia 21 Negativo E’ la più semplice operazione puntuale. Consiste nell’associare al valore x del pixel il valore 255-x Multimedia 22 Negativo Come cambia la curva? Multimedia 23 Negativo Cosa cambia nell’istogramma? Multimedia 24 Esempio (a) Mammografia digitale (b) Negativo dell’immagine ottenuta usando la trasformazione “negativo” Multimedia Incupimento dell’immagine Come devo modificare la mia curva? Multimedia 26 Incupimento dell’immagine Cosa è cambiato nell’istogramma? Multimedia 27 Schiarimento dell’immagine Come devo modificare la curva? Multimedia 28 Schiarimento dell’immagine Come è cambiato l’istogramma? Multimedia 29 Trasformazione logaritmica Si tratta di una trasformazione che consente di comprimere la gamma dinamica, permettendo la memorizzazione o la visualizzazione, con una scala dei grigi usuale, di immagini caratterizzate da escursioni di intensità molto ampie. Può essere espressa come: s = c log(1 + r ) Dove c è una costante positiva che serve a normalizzare il risultato tra 0 e 255. Multimedia 30 Multimedia 31 Trasformazione logaritmica Multimedia 32 Trasformazione di potenza La trasformazione di potenza può essere espressa come: s = cr γ dove c e γ sono costanti positive. La costante c è scelta di volta in volta in modo da normalizzare i valori di s nell’intervallo [0, 255]. Come vedremo, per valori di γ minori di 1 la trasformazione ha effetti analoghi alla trasformazione logaritmica (espansione della dinamica per bassi valori di r, compressione della dinamica per alti valori di r), mentre per valori di γ maggiori di 1 la trasformazione ha esattamente gli effetti opposti. Multimedia 33 LUT al variare di gamma Multimedia 34 Multimedia 35 Esempi Originale Gamma=3 Multimedia Gamma=10 36 Gamma=17 Multimedia 37 Multimedia 38 Applicazione di gamma alla resa dei monitor Su un monitor CRT (con γ= 2.5) si può applicare una correzione pre-processando l’input con la corrispondente funzione inversa: s = r1/2.5= r0.4 Multimedia 39 Multimedia 40 Binarizzazione Produce una immagine che ha solo due livelli: nero e bianco. Si ottiene scegliendo una soglia T e mettendo a nero tutti i pixel il cui valore è minore a T e a bianco tutti gli altri. Multimedia 41 Binarizzazione Come si agisce sulla curva? Multimedia 42 Binarizzazione Come cambia l’istogramma? Multimedia 43 Variazioni di contrasto Aumentare il contrasto, significa rendere più evidenti le differenze di colore. Ciò si ottiene andando a cambiare il valore di un pixel con un altro che sia più scuro o più chiaro. Multimedia 44 Aumento del contrasto Multimedia 45 Aumento del contrasto Come si deve cambiare la curva? Multimedia 46 Multimedia 47 Aumento del contrasto Cosa cambia nell’istogramma? Multimedia 48 Contrast Enhancement Multimedia Altro esempio Multimedia 50 Diminuizione di contrasto Multimedia 52 Diminuizione del contrasto Come cambio la curva? Multimedia 53 Diminuizione del contrasto Come cambia l’istogramma? Multimedia 54 Curve non monotone È possibile fare delle variazioni alle curve in modo che questa diventi non monotona. Un esempio è la “solarizzazione” Multimedia 55 Curve non monotone Ecco come si deve cambiare la curva: Multimedia 56 Curve non monotone Ecco come è cambiato l’istogramma: Multimedia 57 Espansione del contrasto (contrast stretching) Serve per aumentare la dinamica di un’immagine il cui istogramma è concentrato su un intervallo limitato dei valori possibili. Si ottiene spostando (con appositi algoritmi) i valori di un bin dell’istogramma verso un altro bin non utilizzato. L’istogramma apparirà in maniera differente, tipo pettine. Ciò è fatto per mettere in risalto che i bin mancanti sono stati distribuiti lungo altri livelli. Multimedia 58 Contrast stretching Immagine originale Immagine “corretta” Toni non usati Multimedia Aritmetica sulle immagini Operando aritmeticamente può accadere che un pixel abbia: a) Un valore negativo; b) Un valore maggiore del massimo (tipicamente 255); c) Un valore non intero (facilmente risolubile con una approssimazione o un troncamento); Multimedia 60 Normalizzazione I problemi a) e b) della precedente slide si chiamano problemi di range. Due le soluzioni più comuni: • Settare a 0 (nero) i valori negativi e a 255 (bianco) i valori maggiori di 255. • Ri-normalizzare il range trasformando ciascun valore secondo la equazione: vnuovo= 255 * (vvecchio – minosservato) (maxosservato – minosservato) Multimedia 61 Equalizzazione Si parla di immagine equalizzata quando il contributo di ogni differente tonalità di grigio è pressappoco eguale. Si parla anche di “istogramma” uniforme o appiattito. L’equalizzazione si ottiene usando appositi algoritmi Attenzione non sempre la equalizzazione migliora l’immagine! Multimedia 62 Immagine equalizzata Multimedia Immagine equalizzata Multimedia 64 Multimedia 65 Algoritmo di Equalizzazione Se rk è un livello di grigio e nk il numero di pixel nell’immagine MxN di quel livello di grigio, si può definire Se facciamo il plot di rk versus pr(rk) quello che si ottiene è l’istogramma dell’immagine. Multimedia 66 Algoritmo di Equalizzazione I nuovi valori di grigio dell’istogramma sono così definiti: Multimedia 67 Algoritmo di Equalizzazione: Esempio Sia data una immagine a 3 bit (L=8) con 64x64 pixel (MN=4096) con la seguente distribuzione di intensità: Multimedia 68 Algoritmo di Equalizzazione: Esempio Applicando la formula si ha: Arrotondando: Multimedia 69 Algoritmo di Equalizzazione: Esempio Multimedia 70 Algoritmo di Equalizzazione: Esempio Multimedia 71 Equalizzazione: un esempio Multimedia Equalizzazione dell’Istogramma Come si può notare, l’istogramma della immagine equalizzata non è piatto. D’altro canto, l’uniformità della ps(s) è stata verificata solo nel caso continuo, e non nel caso discreto. Tuttavia, i livelli di grigio dell’immagine equalizzata spaziano su tutta la dinamica possibile (anche se alcuni livelli possono non essere presenti), ed in particolare raggiungono sempre il bianco. Al conseguente incremento del contrasto si possono aggiungere effetti sgradevoli quali lo “sgranamento” dell’immagine, la comparsa di “false” regioni, ecc., soprattutto quando il contrasto dell’immagine originale è molto basso. L’apparenza dell’immagine può essere migliorata anche con altre tecniche di modifica del contrasto, ma l’equalizzazione dell’istogramma ha il vantaggio di essere completamente automatica. Multimedia Bit-plane Un’immagine con una profondità colore di N bit può essere rappresentata da N piani di bit (bit-planes), ciascuno dei quali può essere vista come una singola immagine binaria. In particolare si può indurre un ordine che varia dal Most Significant Bit (MSB) fino al Least Significant Bit (LSB). Multimedia 91 Bit-plane Multimedia 92 Bit-planes Most Significant bit (MSB) Least Significant bit (LSB) Multimedia 93 Bit-planes Multimedia 94 Bit-planes: Osservazioni I piani di bit più significativi contengono informazioni sulla struttura dell’immagine, mentre quelli via via meno significativi forniscono i dettagli sempre più piccoli. Si noti che solo i piani dal 7 al 3 contengono dati significativi dal punto di vista visuale. Il rumore delle immagini e gli errori di acquisizione sono più evidenti nei piani bassi. Multimedia 95 Bit-planes Multimedia 96 Bit-plane Multimedia 97 Esempio: Questo genere di scomposizione è molto utile per eliminare tutti i valori compresi in un certo range. Ad esempio, se si vogliono eliminare tutti i grigi compresi tra 32 e 64, è necessario porre a 0 il quinto bit, e quindi tutto il piano 5. Multimedia 98 Bit-plane Multimedia 99 Multimedia 100 Operatori locali Multimedia 101 Operazioni locali Il valore d’uscita di ogni pixel dipende da un limitato intorno del corrispondente punto in input. Sono usati per migliorare la qualità delle immagini o per estrarre delle informazioni dall’immagine. Si possono pensare come filtraggi dell’immagine. Un filtraggio è ottenuto facendo la convoluzione tra l’immagine ed una matrice. Multimedia 102 Operatori Lineari Un operatore F:V W si dice LINEARE se per ogni coppia di vettori v1 e v2 in V e per ogni coppia di scalari a,b si ha che: F(a v1 + b v2) = a F(v1) + b F(v2) Conseguenza: se conosco una base di V ed il comportamento dell’operatore F su ogni elemento di tale base, posso calcolare il comportamento di F su ogni elemento di V. Multimedia 103 Esempi Sia F l’operatore da R3 a R3 che trasforma ogni vettore (x,y,z) in (x/2, y/3, z/4). Esso è lineare ed è completamente descritto una volta che si descrive il suo comportamento su ogni elemento della base canonica: F((1,0,0)) = (1/2, 0, 0); F((0,1,0)) = (0, 1/3, 0); F((0,0,1)) = (0, 0, 1/4). L’operatore puntuale “negativo” NON E’ LINEARE perché F((x,y,z)) = (255-x, 255-y, 255-z); È diverso da x*F((1,0,0))+y* F((0,1,0)) z* F((0,0,1)) = x*(255-1, 0, 0)+y* (0, 255-1, 0)+z*(0, 0, 255-1) = x*(255-1)+y* (255-1)+z*(255-1) Multimedia 104 NON invariante per traslazione L’esempio nella slide precedente ha un comportamento che non è lo stesso su tutti gli elementi della base canonica di RN. Infatti: il comportamento varia da elemento ad elemento a seconda della posizione all’interno della immagine. Questo è un operatore NON invariante per traslazioni! Per descrivere questi operatori, dobbiamo conoscere il suo comportamento su ciascun “impulso” in ciascuna locazione delle immagini! Attenzione: questi operatori non sono “cattivi” ma solo “difficili” da studiare… Multimedia 105 Operatori invarianti per traslazione Un operatore si dice invariante per traslazione (shift invariant) quando il suo comportamento sulle immagini impulsive è sempre il medesimo indipendentemente dalla posizione in cui si trova il pixel. Tutti gli operatori puntuali sono invarianti per traslazione (anche se non sono lineari). Multimedia 106 Riassumendo: Se F è lineare per descriverlo basta conoscere il comportamento su tutte le immagini impulsive Se F è shift invariant si comporta allo stesso modo su tutti gli impulsi, indipendentemente dalla loro posizione Se F è sia lineare che shift invariant per descriverlo basta conoscere come si comporta su un solo impulso. La “risposta all’impulso” o “point spread function” di F è la carta di indentità di tale operatore. Multimedia 107 Ad un operatore lineare e shift invariante corrisponde una maschera ma vale anche il viceversa: ad una maschera corrisponde un simile operatore ESEMPIO Si consideri l’operazione che preso un impulso: 00000 00100 00000 lo trasforma in: 0 0 0 0 0 0 .5 0 .5 0 0 0 0 0 0 Tale “risposta all’impulso” o PSF definisce completamente un operatore lineare e invariante per traslazioni F. Spesso un operatore su una immagine prende il nome di “filtro”. La matrice che descrive la risposta all’impulso si chiama anche kernel o maschera dell’operatore. Essa è detta anche maschera di convoluzione di F per ragioni che vedremo tra breve. Multimedia 108 prima dopo Multimedia 109 Kernel finiti o infiniti e complessità La grandezza del kernel può variare fino ad essere infinita Per ragioni pratiche, però, si usano solo kernel con dimensioni finite. Le dimensioni del kernel influenzano la complessità della operazione di filtraggio. Tale complessità dipende ovviamente anche dal numero dei pixel di una immagine. Multimedia 110 Perché filtri “convolutivi”? I filtri lineari e invarianti per traslazione vengono chiamati anche filtri convolutivi. Dobbiamo studiare la operazione di convoluzione per capire meglio come un filtro può essere calcolato. Inoltre la convoluzione è un fenomeno estremamente importante per ogni tipo di signal processing e per la descrizione di numerosi eventi fisici. Multimedia 111 Convoluzione: proprietà Per indicare l’operazione di convoluzione si usa la notazione h=f g La convoluzione è commutativa f g=g f La convoluzione è associativa (f g) h = f (g h) Multimedia 112 g f Multimedia 113 Nel caso finito (1) Se il kernel f ha dimensioni kxh la formula va riscritta nella seguente maniera -1 hm ,n = k 2 −1 h / 2 −1 ∑ ∑(f i = − k / 2 j = − h / 2 i, j * g m +i ,n + j ) 0 1 -1 a 0 d 1 b c e f g h i Se gli indici del kernel sono disposti in modo da avere il punto di coordinate (0,0) nella posizione centrale. Multimedia 114 Nel caso finito (2) Se il kernel f ha dimensioni kxh la formula va riscritta nella seguente maniera 1 hm ,n = k ,h ∑f i =1, j =1 i, j * g m + ( i − k + k / 2 ),n + ( j − h + h / 2 ) 3 1 a 2 d 3 2 b c e f g h i Se gli indici del kernel sono disposti partendo da 1 fino ad arrivare ad h o k. Multimedia 115 Esempio -1 0 1 1 2 2 1 2 1 2 -1 2 0 1 1 1 1 2 3 4 1 1 2 3 2 2 2 3 1 1 4 7 1 1 2 2 2 2 5 9 5 3 0 1 1 2 1 2 4 1 4 3 4 5 2 3 30 3 5 Multimedia 116 4 5 Esempio -1 0 1 1 2 2 1 2 1 2 -1 2 0 1 1 1 1 2 3 4 1 1 2 3 2 2 2 3 1 1 4 7 1 1 2 2 2 2 5 9 5 3 0 1 1 2 1 2 4 1 4 3 4 5 2 3 30 45 30 3 5 Multimedia 4 117 5 Esempio -1 0 1 1 2 2 1 2 1 2 -1 2 0 1 1 1 1 2 3 4 1 1 2 3 2 2 2 3 1 1 4 7 1 1 2 2 2 2 5 9 5 3 0 1 1 2 1 2 4 1 4 3 4 5 3 2 3 30 45 30 46 27 37 5 Multimedia 4 118 5 Esempio -1 0 1 1 2 2 1 2 1 2 -1 2 0 1 1 1 1 2 3 4 1 1 2 3 2 2 2 3 1 1 4 7 1 1 2 2 2 2 5 9 5 3 0 1 1 2 1 2 4 1 4 3 4 5 3 2 3 30 45 30 46 27 37 34 41 28 5 Multimedia 4 119 5 Convoluzione e filtraggio Applicare un filtro lineare e shift invariante ad una immagine è equivalente a calcolare la convoluzione del kernel del filtro con l’immagine. Multimedia 120 Nell’implementazione Un problema è quello dei bordi: come fare la convoluzione e il filtraggio ai bordi? POSSIBILI SOLUZIONI: a) Filtrare solo le zone centrali dell’immagine b) Supporre che tutto intorno all’immagine ci sia 0 c) Assumere una topologia “toroidale”: quando si “sfora a destra” si rientra a sinistra, quando si “sfora” in basso di rientra in alto e viceversa; d) Aggiungere una riga all’inizio uguale alle riga precedente, una riga alla fine uguale all’ultima riga, una colonna all’inizio uguale alla colonna iniziale, e una colonna alla fine uguale alla colonna finale. Multimedia 121 a) Filtrare solo le zone centrali dell’immagine Le aree in grigio non verranno calcolate output input 1 3 2 2 2 5 2 2 2 3 1 1 4 7 1 9 3 0 1 1 2 1 2 4 1 30 45 30 46 27 37 34 41 28 Multimedia 122 b) Supporre che tutto intorno all’immagine di input ci sia lo “0” input 0 0 0 0 0 1 3 2 0 2 2 5 0 2 2 2 0 3 1 7 0 1 4 1 0 0 0 0 0 9 0 3 0 1 1 2 1 2 4 1 0 0 0 0 0 0 0 0 0 Multimedia output 11 25 25 35 16 19 30 46 34 27 17 45 27 41 12 123 22 30 37 28 18 11 31 19 29 10 c) Riempire le righe e le colonne aggiunte in maniera “toroidale” input 1 1 4 1 3 1 3 2 1 2 2 5 2 2 2 2 4 3 1 7 1 1 4 1 3 1 3 2 2 9 1 3 0 1 1 2 1 2 4 1 9 3 1 1 2 2 3 1 1 Multimedia output 27 33 38 41 28 30 30 46 34 35 29 45 27 41 24 124 32 30 37 28 27 33 40 45 48 40 d) Riempire le righe e le colonne aggiunte con i valori più vicini input 1 1 3 2 1 1 3 2 2 2 2 5 2 2 2 2 3 3 1 7 1 1 4 1 1 1 4 1 9 9 3 3 0 1 1 2 1 2 4 1 2 1 3 3 1 2 4 1 1 Multimedia output 25 34 51 54 48 27 30 46 34 32 29 45 27 41 24 125 31 30 37 28 34 33 39 32 35 26 Estrazione di contorni Multimedia 126 Caratteristiche di immagini In Visione Computazionale il termine feature di immagini si può riferire a due entità possibili: Una proprietà globale di un’immagine o una regione (es. il livello di grigio medio, la distribuzione di colore, ...); Una parte dell’immagine con alcune proprietà speciali (es. una linea, un’ellisse,...) Le caratteristiche o proprietà di cui devono godere tali features, per poter essere utilizzate in maniera robusta dipendono dal contesto applicativo Multimedia Feature Tipicamente le feature hanno una dimensione molto ridotta rispetto ai dati di origine (ad esempio da un’immagine di alcuni MB si potrebbero voler estrarre solo poche decine di valori). Sono generalmente (ma non necessariamente) costituite da una serie di dati numerici, rappresentabile come un vettore multidimensionale. Esempi di finalità specifiche che la fase di feature extraction si può prefiggere (per esempio per migliorare il successivo riconoscimento): Riduzione del rumore e di altre informazioni non utili Estrazione di dati invarianti per determinate trasformazioni (es. rotazione e scala) Normalizzazione dei dati per renderli maggiormente confrontabili Multimedia Feature globali Le feature globali (per immagini non opportunamente segmentate) sono inefficaci se l’oggetto cercato non è separato dal background L’orientazione corrente è utilizzare feature locali che in genere dipendono sia dalla forma che dalla texture degli oggetti presenti nella scena Multimedia Feature locali Un passo importante dell’elaborazione visiva consiste nell’identificare feature locali che siano utili ad interpretare l’immagine. Le feature locali sono parti dell’immagine “facilmente” rilevabili, che possono corrispondere o meno a parti della scena. Ci occuperemo nell’ordine di Edge. Multimedia Edge Detection L’estrazione dei contorni (edge) è sicuramente uno degli argomenti che hanno ricevuto più attenzione nella letteratura sull’image processing. Il contorno di un oggetto rappresenta infatti la separazione tra l’oggetto e lo sfondo o tra l’oggetto ed altri oggetti, per cui la sua estrazione è molto spesso il primo passo verso l’individuazione dell’oggetto. Multimedia Edge su Lena Multimedia Origine degli edge surface normal discontinuity depth discontinuity surface color discontinuity illumination discontinuity Multimedia Edge Detection Un edge si presenta in una immagine come il confine tra due regioni caratterizzate da proprietà dei livelli di grigio in qualche modo distinguibili. Ipotizziamo inizialmente che le regioni in questione siano sufficientemente omogenee, di modo che la determinazione della transizione tra le due regioni sia possibile sulla sola base della discontinuità dei valori di grigio. Le prime tecniche di edge detection che analizziamo sono basate sull’applicazione di un operatore locale di derivata. Multimedia Edge Detection: Teoria Consideriamo il comportamento delle derivate in corrispondenza a particolari andamenti del livello di grigio f(x): andamento costante (segmento piatto nel caso 1-D) e discontinuità, sia a gradino che a rampa, che possono modellare punti isolati, linee ed edge in una immagine. Le derivate di una funzione digitale possono essere definite in termini delle differenze tra i valori assunti dalla funzione in punti vicini. Qualunque sia il modo con cui si utilizzano queste differenze, devono essere soddisfatti i seguenti requisiti. La derivata prima deve essere – nulla nelle zone piatte – non nulla in presenza di una discontinuità – non nulla lungo una rampa Multimedia Estrazione dei contorni Gli operatori locali ci aiutano ad estrarre i contorni da una immagine. I contorni sono definiti come delle discontinuità locali della luminanza. Gli edge detector forniscono immagini in cui sono preservate le variazioni di luminanza ed eliminate tutte le altre informazioni. Multimedia 136 Esempi di lato in 1D Multimedia 137 Edge in pratica Multimedia Direzione del gradiente Multimedia Edge detector basati sulla derivata prima Se ho un segnale monodimensionale e calcolo la derivata prima, scopro che i lati sono i corrispondenza dei massimi della derivata. Quindi i filtri devono calcolare la derivata in direzione x quella in direzione y e poi combinarle insieme. Multimedia 140 Filtri basati sul gradiente L’implementazione di queste equazioni può essere effettuata usando le seguenti maschere 2x2 dette anche operatori di Roberts: -1 0 0 -1 0 1 1 0 I valori assoluti delle risposte delle due maschere vengono sommati per determinare ∇f. Più comune è tuttavia l’impiego di maschere 3x3, che rendono più semplici le operazioni di filtraggio: 0 0 0 0 0 0 0 1 0 0 0 1 0 0 -1 0 -1 0 Multimedia Operatori di Roberts: Esempi Multimedia Filtri basati sul Gradiente Gli operatori di gradiente sicuramente più diffusi, in grado di effettuare simultaneamente la differenziazione lungo una direzione e una media spaziale lungo la direzione ortogonale, che riduce la sensibilità al rumore, sono: Prewitt Sobel Multimedia Kernel notevoli: lati orizzontali Ne esistono molti, ne presentiamo due: X-Prewitt Multimedia 144 Sobel x Multimedia 145 Prewitt x Multimedia 146 Dopo l’applicazione di X-Prewitt e un passo di equalizzazione Dopo l’applicazione di x-Sobel e un passo di equalizzazione Kernel notevoli: lati verticali La situazione è identica al caso dei lati orizzontali, i filtri sono solo ruotati di 90 gradi. Multimedia 148 Sobel y Multimedia 149 Prewitt y Multimedia 150 Dopo l’applicazione di Y-Prewitt e un passo di equalizzazione Dopo l’applicazione di y-Sobel e un passo di equalizzazione Migliori risultati… Si ottengono con algoritmi più sofisticati (non lineari) per il calcolo della grandezza del gradiente (somma del quadrato della risposta di un edge finder orizzontale e del quadrato della risposta di un edge finder verticale) Si ottengono con strategie più “intelligenti” (algoritmo di Canny, algoritmi fuzzy, tecniche di backtracking eccetera) Multimedia 152 Edge detector basati sulla derivata seconda Se ho un segnale monodimensionale e calcolo la derivata seconda, scopro che in corrispondenza del lato essa passa per lo zero. Multimedia 153 Kernel notevoli: Laplaciano Il filtro più diffuso per calcolare la derivata seconda è detto Laplaciano, ed è definito dalla maschera: Multimedia 154 Laplaciano Multimedia 155 Laplaciano Multimedia 156 Zero-crossing Dopo aver applicato l’operatore Laplaciano è necessario che si verifichi la condizione di Zero-crossing. Cioè, deve sempre accadere che rispetto al punto in questione ci sia nel suo intorno un valore positivo e un valore negativo. Multimedia 157 Filtri di sharpening Sono filtri il cui scopo è quello di incrementare la nitidezza di una immagine aumentando il contrasto locale. Questa è una operazione opposta allo sfocamento. Per ottenere tale effetto si può adottare una maschera che, derivata dal Laplaciano, “rinforza” i lati presenti nell’immagine. Purtroppo essa rinforza anche il rumore presente nella immagine! Multimedia 158 Filtro di sharpening Multimedia 159 Unsharp mask: un algoritmo non lineare L’uso del kernel derivato dal Laplaciano per fare edge enhancing ha un difetto: esso viene applicato SEMPRE a tutti i pixel dell’immagine. Come conseguenza esso accentua i “dettagli” anche nelle zone omogene mettendo in evidenza i difetti ed il rumore. Sono stati proposti vari algoritmi per evitare questo fenomeno. La famiglia di algoritmi chiamata unsharp mask è la più famosa usata per questo scopo. Noi non vedremo i dettagli di questo algoritmo. Multimedia 160 Edge Detection in pratica Multimedia Ancora Noise Gli operatori di gradiente risultano quindi poco efficaci in presenza di rumore. Per esempio, applicando gli operatori di Sobel ad una versione rumorosa dell’immagine di test si ottiene: Il problema può essere alleviato estendendo l’area di calcolo del gradiente, il che consente una migliore azione di media (Farlo per esercizio). Più in generale, possono essere presi in considerazione degli operatori composti, nei quali una operazione di smoothing per la riduzione del rumore è compiuta prima dell’operazione di differenziazione. Multimedia Operatore DroG Un esempio molto noto di operatore di gradiente composto è la Derivata della Gaussiana (DroG), nel quale l’operazione di smoothing utilizza una funzione gaussiana. La gaussiana è una funzione a simmetria rotazionale la cui equazione nel caso 2-D continuo è la seguente: h ( x, y ) = e x2 + y2 − 2σ 2 =e r2 − 2σ 2 Il valore di σ determina l’apertura della Gaussiana (ovvero la deviazione standard ossia ossia il valore di r per il quale h si riduce a 1/√e del massimo), che aumenta al crescere di σ. Multimedia Operatore DroG In figura una funzione gaussiana in cui h è rappresentata, per diversi valori di σ, al variare di r, quindi in un piano passante per il suo asse di simmetria. Dalla risposta impulsiva è possibile ricavare i coefficienti del relativo kernel di convoluzione attraverso un opportuno campionamento della funzione continua, a partire dalla origine, che rappresenta il punto di applicazione della maschera. Nel caso della gaussiana il ruolo di σ è determinante nella definizione dei pesi della maschera: se l’apertura è maggiore, l’azione di filtraggio può riguardare un intorno più ampio del punto centrale. A tal fine, σ è normalmente espresso in pixel. Multimedia Gaussiana con Kernel 3x3, 5x5 (sigma = 0.5) Per quanto riguarda l’operatore DroG, le risposte impulsive lungo le due direzioni, che lo caratterizzano completamente, si possono determinare effettuando la convoluzione delle due componenti del gradiente, nella formulazione preferita, con la maschera precedente che caratterizza la gaussiana. Multimedia Operatore DroG In alternativa, si può procedere al calcolo delle derivate della gaussiana rispetto a x e a y, che rappresentano le componenti dell’operatore DroG nel caso continuo: x ∂h =− 2 e ∂x σ x2 + y2 − 2σ 2 y ∂h =− 2 e ∂y σ x2 + y2 − 2σ 2 Le corrispondenti maschere si possono ottenere campionando le due funzioni. Per esempio, per la componente lungo x si ha la seguente situazione, sempre nell’ipotesi σ = 0.5: Multimedia Operatore DroG Multimedia Operatori basati sul Laplaciano La determinazione degli zero crossing della derivata seconda della f(x,y) localizza con precisione i contorni dell’immagine, mentre il segno della derivata seconda permette di stabilire l’appartenenza di un pixel al versante scuro o al versante chiaro di un contorno. Un modo molto comune di effettuare le operazioni di derivata seconda di una f(x,y) in un punto è quello di calcolare il laplaciano in quel punto. Ricordiamo che data una funzione f(x,y), il laplaciano di f in (x,y) è definito come: 2 2 ∂ f ∂ f 2 L ( x, y ) = ∇ f = 2 + 2 ∂x ∂y Multimedia 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: ∂2 f 2 = f (i , j + 1) − 2 f (i , j ) + f (i , j − 1) ∂x operando in modo analogo per la componente verticale si ottiene: ∂2 f 2 = f (i + 1, j ) − 2 f (i , j ) + f (i − 1, j ) ∂y Queste approssimazioni conducono alle corrispondenti maschere di convoluzione orizzontale e verticale: 1 hR = [1 −2 1] hC = −2 1 Dalla combinazione delle componenti orizzontali e verticali si ottiene una singola maschera di convoluzione del laplaciano: 0 0 0 0 1 0 0 1 0 h(i , j ) = 1 −2 1 + 0 −2 0 = 1 −4 1 0 0 0 0 1 0 0 1 0Multimedia Operatori basati sul Laplaciano Il modo più semplice di approssimare il laplaciano nel caso discreto consiste nel calcolo delle differenze delle derivate prime lungo i due assi: L(x,y)=[f(x,y)-f(x-1,y)]-[f(x+1,y)-f(x,y)]+[f(x,y)-f(x,y-1)]-[f(x,y+1)f(x,y)] Pertanto L(x,y)=4 f(x,y)-f(x-1,y)-f(x+1,y)-f(x,y -1)- f(x,y+1) Il Laplaciano si può quindi implementare come un filtro la cui risposta impulsiva è: 0 -1 0 -1 4 -1 0 -1 0 Multimedia Operatori basati sul Laplaciano La versione normalizzata prevede un fattore moltiplicativo pari a ¼ Una versione (normalizzate) del laplaciano riferito agli 8-vicini, quindi con le differenze delle derivate prime mediate su tre righe e tre colonne, è: -2 1 -2 1 4 1 -2 1 -2 In questo caso il fattore moltiplicativo è pari a 1/8. Il laplaciano è eccessivamente sensibile al rumore (in quanto operatore di derivata seconda) ed è incapace di rilevare la direzione del contorno (in quanto entità scalare). Per tali motivi, il laplaciano è raramente usato da solo per l’edge detection. Multimedia Laplacian of Gaussian Di Marr e Hildreth è stata l’idea di utilizzare il laplaciano in connessione con un filtro di smoothing, ancora una volta una gaussiana, realizzando un operatore detto Laplaciano della Gaussiana o LoG (in figura una sezione trasversale ottenuta per σ=1) h ( x, y ) = e x2 + y2 − 2σ 2 r −σ ∇ h=− e 2 2σ 2 2 2 =e r2 − 2σ 2 r2 − 2σ 2 Multimedia LoG in 2D Si tratta quindi di una funzione a simmetria circolare, con ZC per r=±σ Si può dimostrare che il valor medio della funzione è 0, e lo stesso avviene per il risultato della sua convoluzione con una immagine. La tipica forma a sombrero indica inoltre che la convoluzione dell’operatore LoG con una immagine provoca un blurring (di entità proporzionale a σ) dell’immagine stessa, e quindi ha un effetto positivo in termini di riduzione del rumore. Multimedia LoG Il vantaggio principale offerto dall’operatore LoG resta comunque quello legato alla presenza degli ZC. All’immagine in alto a sinistra viene applicato l’operatore LoG, con il risultato mostrato in alto a destra come immagine di intensità, nella quale i neri rappresentano i valori più negativi, i bianchi i valori più positivi. Dopo la binarizzazione: valori negativi a 0 e i valori positivi a 1 (in basso a sinistra). Gli ZC, cioè i confini tra zone nere e bianche nell’immagine binaria, sono ora facilmente individuabili (in basso a destra) Multimedia Laplaciano e Zero Crossing Multimedia Edge Linking Multimedia Metodo di Canny Un approccio analitico è stato invece seguito da J. Canny, che ha studiato in dettaglio il comportamento dell’operatore gradiente applicato ad un contorno rumoroso. Il modello di bordo considerato è un fronte ripido monodimensionale b(x) cui è aggiunto rumore Gaussiano bianco. Si assume che l’individuazione del bordo sia realizzata tramite una convoluzione con un filtro f(x) avente risposta impulsiva h(x) antisimmetrica e nulla al di fuori di un intervallo [-W,W]. Un bordo è individuato da un massimo locale della convoluzione tra l’immagine ed il filtro. Il filtro è scelto sulla base di tre criteri di efficacia definiti da Canny. Multimedia Criteri di Canny Buona capacità di individuazione: l’operatore ha una bassa probabilità di non individuare un bordo reale (elevata sensibilità – falsi negativi) ed una bassa probabilità di individuare falsi bordi (elevata specificità – falsi positivi) Buona capacità di localizzazione: i punti evidenziati dall’operatore dovrebbero essere quanto più vicini possibile al centro del bordo reale Unicità della risposta: l’operatore dovrebbe fornire una sola risposta in corrispondenza di un bordo reale Multimedia Canny edge detector Immagine Input (Lena) Multimedia Canny edge detector Norma del gradiente Multimedia Canny edge detector thresholding Multimedia Canny edge detector Thinning (non-maximum suppression) Multimedia Canny Step 1 – Calcolo Gradiente (Drog): magnitudo e direzione Step 2 – Eliminazione dei punti il cui valore del gradiente non è superiore ai valori dei vicini (interpolazione lineare) nella direzione del gradiente Step 3 – Sogliatura con Isteresi mediante 2 soglie T1 e T2 Step 4 – Edge linking per legare gli strong edge individuati con eventuali weak edge adiacenti Multimedia Canny – Primo Step L’ Individuazione (detection) dell’edge, si realizza attraverso la massimizzazione del rapporto segnale-rumore (delle ampiezze) del gradiente. L’espressione adoperata per il rapporto s/r è: dove hE è l’ampiezza del gradino mentre σn è la deviazione standard del rumore. Multimedia Canny – Step 2 I punti riconosciuti come di edge dovrebbero essere il più possibile vicini al centro dell’edge effettivo. A tal fine è definito un fattore di localizzazione (h’è la derivata di h): Multimedia Canny – Step 3 Per quanto riguarda l’unicità della risposta dell’operatore la distanza xm tra due picchi del gradiente, in presenza solo di rumore, è supposta uguale ad una frazione k della larghezza W dell’operatore: xm=kW Canny ha combinato i tre criteri, cercando il massimo del prodotto S(h)L(h) soggetto al vincolo espresso dalla condizione di cui sopra Multimedia Canny - Discussioni Anche se la complessità della formulazione impedisce la determinazione di una soluzione analitica, è possibile procedere alla ricerca del massimo con metodi numerici. La figura mostra i profili di diversi valori della risposta impulsiva del filtro di Canny al crescere di xm. Si può notare come per grandi valori di xm l’operatore di Canny è ben approssimato dall’operatore DroG. In effetti, il filtro adoperato nelle implementazioni del metodo di Canny è proprio di questo tipo. Multimedia Canny: Non-Maximum Suppression L'immagine di risposta all'operatore, se vista come una superfice 3D, è caratterizzata da valli (valleys) e rilievi. Le curve di massimo dei rilievi, le creste, sono detti ridges. Per ottenere una risposta univoca dall'edge detector è necessario un algoritmo che sopprima tutti i responsi multipli, ovvero i pixel che sono caratterizzati da valori alti di risposta all'operatore ma che non sono massimi locali per esso. La non-maximum suppression si ottiene cercando i pixel che sono di massimo per la magnitudo lungo la direzione del gradiente. Si tengono solo i ridges sopprimendo tutti gli altri punti che non sono all'altezza massima locale. Multimedia Non-maximum suppression Si verifica l’esistenza di un massimo locale lungo la direzione del gradiente. Ciò richiede l’interpolazione dei pixel mancanti (pixel p ed r in figura) Multimedia Canny: Thresholding La qualità dei risultati ottenibili con il metodo di Canny, superiore a quella di tutti gli altri operatori di gradiente, si giustifica con il fatto che il metodo utilizza due soglie, una per la individuazione degli edge più netti, l’altra per l’individuazione degli edge più deboli. Questi ultimi sono però presi in considerazione solo se risultano connessi ad edge netti. Ruolo fondamentale nell'algoritmo di Canny gioca anche la scelta di sostituire il tradizionale approccio di sogliatura (thresholding) a soglia singola con una tecnica a doppia soglia detta histeresys thresholding. Multimedia Canny: Thresholding La doppia sogliatura (Histeresys thresholding) viene operata dopo l'applicazione della non-maximum suppression. Si fissano due soglie T1 e T2 con T1>T2 Tutti i punti di valore maggiore di T1 sono di edge; Tutti i punti di valore compreso fra T1 e T2 sono detti weak edges. Un weak edge diventa edge solo se è contiguo ad un edge. Multimedia Canny Diminuisce pertanto l’influenza del rumore, ed aumenta la probabilità di rivelare ‘veri’ edge deboli. In tutti i metodi di edge detection basati sul gradiente, occorre confrontare il risultato dell’operazione di derivazione in ogni punto dell’immagine con uno (o più) valori di soglia, per determinare se si tratta di un punto di edge. Il valore di soglia determina direttamente la sensibilità dell’edge detector. Per immagini non rumorose, la soglia può essere scelta in modo che le discontinuità di ampiezza, anche relative a zone a basso contrasto, siano interpretate come edge. Nelle immagini rumorose la scelta del valore di soglia è molto più critica, diventando un elemento di tradeoff tra la possibilità di rivelare falsi contorni (indotti dal rumore) e la possibilità di mancare contorni veri (relativi a piccoli dettagli). Multimedia Edge Linking Individuato il punto di edge si costruisce la tangente alla curva (normale al gradiente in quel punto) e si usa questa informazione per predire il successivo punto (in questo caso r o s) (Forsyth & Ponce) Multimedia Canny Integrando la fase di thresholding con quella di linking il metodo ne guadagna in robustezza e versatilità. Multimedia Canny Step 1 – Calcolo Gradiente (Drog): magnitudo e direzione Step 2 – Eliminazione dei punti il cui valore del gradiente non è superiore ai valori dei vicini (interpolazione lineare) nella direzione del gradiente Step 3 – Sogliatura con Isteresi mediante 2 soglie T1 e T2 Step 4 – Edge linking per legare gli strong edge individuati con eventuali weak edge adiacenti Multimedia Impatto del parametro σ (Gaussian kernel size) Input Canny con σ=1 Canny con σ=2 La scelta di σ impatta sulla detection dei relativi edge come segue: – Alti valori di σ permettono di trovare edge a scale più grandi – Piccoli valori di σ permettono di scovare I dettagli più fini Multimedia Esempi Multimedia