Operatori locali Operatori locali
Transcript
Operatori locali Operatori locali
Operatori locali Operatori locali P(i,j) Gli operatori locali associano ad ogni pixel ( i,j) della immagine di output Q un valore calcolato in un intorno o finestra w centrata nel pixel P(i,j) Q=f(P,w) L Caponetti 1 Operatori locali P(i,j) La funzione f può essere lineare o non lineare: Filtri lineari sono definiti tramite convoluzione Filtri non lineari L Caponetti Operatori locali P(i,j) Per eseguire una elaborazione locale l’immagine viene esplorata in una sequenza prefissata – ad esempio da sinistra a destra e dall’alto verso il basso L Caponetti 2 Obiettivi Smoothing – rimuove il rumore dovuto alla trasmissione, acquisizione.. Enhancement – migliora la qualità delle immagini o enfatizza feature significative, come gli edge Deblurring – migliora la nitidezza ( sharpness) delle immagini sfocate (blurred) L Caponetti Operatori lineari Consideriamo una matrice h di 3 x 3 elementi detta maschera di pesi Consideriamo per ogni pixel (x,y) una finestra di dimensione 3 x 3 centrata con (x,y) f(x-1,y-1) nel dominio spaziale w1 w2 w3 h= f(x-1,y) w4 w5 w6 w7 w8 w9 y f(x-1,y+1) f(x,y-1) f(x,y) f(x,y+1) f(x+1,y-1) f(x+1,y) f(x+1,y+1) (x,y) x L Caponetti 3 Operatori lineari nel dominio spaziale Il valore del pixel centrale è calcolato come somma pesata di f secondo i coefficienti wi: g ( x, y ) = w1 f ( x − 1, y − 1) + w2 f ( x − 1, y ) + w3 f ( x − 1, y + 1) + w4 f ( x, y − 1) + w5 f ( x, y ) + w6 f ( x, y + 1) + w7 f ( x + 1, y − 1) + w8 f ( x + 1, y ) + w9 f ( x + 1, y + 1) L Caponetti Correlazione Siano f(x,y) una immagine di dimensione NxN h(x,y) una maschera spaziale di dimensione LxL, con origine nel pixel centrale per L=3 si ha h(-1,-1) h(-1,0) h(-1,1) h(0,-1) h(0,0) h(0,1) h(1,-1) h(1,0) h(1,1) L Caponetti 4 Correlazione Siano f(x,y) una immagine di dimensione NxN h(x,y) una maschera spaziale di dimensione LxL a= parte intera(L/2) L’operazione di correlazione della immagine f(x,y) con h(x,y) con origine nel centro della maschera si esprime nel modo seguente: g = h∗ f a g (x, y) = a ∑ ∑ h (i, j ) f ( x + i, y + j ) i=−a j=− a i , j = 0 ...... N − 1 L Caponetti Correlazione convoluzione L’operazione di correlazione della immagine f(x,y) con h(x,y) con origine nel centro della maschera si esprime in modo equivalente: L −1 g ( x, y ) = ∑ i =0 L−1 ∑ h (i , j ) * f ( x − L / 2 + i , y − L / 2 + j ) j =0 L’immagine di output g(x,y) è influenzata soltanto dai pixel che si trovano in un intorno LxL del corrispondente pixel (x,y) della immagine f L Caponetti 5 Correlazione convoluzione L’operazione di correlazione L −1 g ( x, y ) = ∑ i =0 L−1 ∑ h (i , j ) * f ( x − L / 2 + i , y − L / 2 + j ) j =0 è equivalente alla operazione di convoluzione nel caso in cui h(m,n) sia una matrice simmetrica - vedi lezione sui sistemi lineari L Caponetti Maschera - mask Maschera: matrice quadrata di pesi utilizzati nel calcolo del nuovo valore di un determinato pixel a partire dall’intorno del pixel stesso – si chiama anche filtro nel dominio spaziale E’ una finestra che muove sulla immagine si L Caponetti 6 Complessità La convoluzione è una operazione complessa dal punto di vista computazionale Ad esempio consideriamo la seguente maschera: 1 4 6 4 1 4 16 24 16 4 6 4 1 24 16 4 36 24 6 24 16 4 6 4 1 La convoluzione con la matrice 5x5 richiede 25 (moltiplicazioni + addizioni) per ogni pixel Quando una matrice può scomporsi nel prodotto di 2 vettori è conveniente applicare i 2 vettori singolarmente alle righe e alle colonne della immagine L Caponetti Complessità La maschera 1 4 6 4 1 4 6 4 16 24 16 24 36 24 16 24 16 4 6 4 1 4 6 4 1 Si può scrivere come prodotto dei vettori [1 4 6 4 1 ]T e [1 4 6 4 1 ] In questo caso per ogni pixel (i,j) sono sufficienti 5 moltiplicazioni e addizioni lungo la riga i + 5 moltiplicazioni e addizioni lungo la colonna j L Caponetti 7 Elaborazione dei bordi Si applica l’operatore solo sui punti che hanno un intorno → l’immagine risultante è più piccola dell’originale Si considera in aggiunta una cornice di punti (di solito uguali a zero) → l’immagine risultante ha le stesse dimensioni dell’originale Bordo su cui non si può applicare l’operatore L Caponetti Image smoothing Obiettibo: attenuare le brusche variazioni di livello di grigio tra un pixel e il suo intorno Un processo di smoothing può eliminare le brusche transizioni (random noise) nei livelli di grigio i dettagli irrilevanti cioè associati a pochi pixels: questa operazione è detta blurring - sfocatura L Caponetti 8 Image Smoothing Un semplice processo di Image smoothing è quello di calcolare localmente per ogni pixel il valore medio - lowpass spatial filtering. Si può ottenere mediante la convoluzione con h 1 h= × 9 box mask 1 1 1 1 1 1 1 1 1 Si ottiene una immagine meno contrastata di quella iniziale con riduzione del rumore. Nel dominio delle frequenze equivale ad un filtro passa-basso L Caponetti Image Smoothing box mask L’applicazione della maschera h equivale a effettuare una media fra i pixel del’intorno e sostituire al valore originale con questa media 1 1 1 1 h= × 1 1 1 9 1 1 1 In questo approccio si dà la stessa importanza al valore originale del pixel e ai valori dei pixel vicini L Caponetti 9 Averaging mask In generale una averaging mask calcola una media pesata dei valori dei pixel in un intorno: Una maschera costituita da pesi positivi, con somma uguale a 1, si dice normalizzata cioè: i valori risultanti sono nello stesso range di quelli iniziali Questa operazione è anche detta neighborhood averaging L Caponetti Averaging mask 0 1 0 1 1 1 1 5 0 1 0 0 1 0 1 1 4 1 8 0 1 0 1 1 1 1 1 1 1 9 1 1 1 1 3 1 1 3 16 3 32 1 3 1 L Caponetti 10 Esempio di Image Blurring 1 L 1 1 K L L 2 N 1 L 1 N × N Immagine originale L Caponetti Average mask N=5 N=9 Filtro Gaussiano Il filtro gaussiano corrisponde a una funzione gaussiana discreta bidimensionale 1 2πσ 2 e − x2 + y 2 2σ 2 Dove σ è la larghezza della funzione – standard deviation- ed r2= x2+y2 è la distanza – raggio- dal centro Il pixel al centro ha il peso massimo e gli altri hanno un peso che diminuisce con la distanza dal pixel centrale L Caponetti 11 Filtro gaussiano La maschera h è una approssimazione 3x3 della funzione gaussiana 2D 1 × 16 1 2 1 2 4 2 1 2 1 Si utilizza quando si vuole che il pixel in esame abbia maggiore importanza nel calcolo del nuovo valore di grigio, rispetto a quelli del suo intorno: il peso di tale pixel sarà maggiore rispetto a quello dei pixel dell’intorno L Caponetti Filtri 5x5 – box – gaussiano - log L Caponetti 12 Filtro Gaussiano Funzione di Gauss bidimensionale 1 x2 + y 2 2σ 2 e 2πσ 2 Se σ è la standard deviation di una funzione di Gauss monodimensionale − la standard deviation della funzione 2D – circolarmente simmetrica – è √2 σ la larghezza del lobo centrale è 2 √2 σ. la maschera di smoothing deve avere dimensione pari a 6 √2 σ pixel Il filtro gaussiano è isotropico - circolarmente simmetrico L Caponetti Gaussian filter nel dominio delle frequenze D0 = 6 √2 σ L Caponetti 13 Normalizzazione Se l’immagine risultante è finalizzata alla visualizzazione, i valori dei pixel devono restare entro la gamma dei livelli di grigio rappresentabili (0,255). A questo scopo, i coefficienti del filtro devono soddisfare la condizione: 1 L −1 L −1 R= ∑∑ h(i, j ) = 1 LL i =0 i =0 In tal modo una zona a valore di grigio costante entro la maschera del filtro resta immutata dopo il filtraggio L Caponetti L Caponetti 14 Image sharpening Obiettivo principale è di mettere in evidenza i dettagli più fini di una immagine che potrebbero essere sfocati al contrario dei filtri di smoothing vengono evidenziate le variazioni di livello di grigio si può implementare mediante una maschera di pesi positivi e negativi Nel dominio spaziale si possono costruire delle maschere di sharpening mediante operatori differenziali del I e II grado L Caponetti Unsharp masking Il nome "unsharp" deriva dal fatto che si utilizza una versione sfocata "unsharp" dell’immagine per creare una maschera Un processo di unsharp masking è costituito da 2 passi: Si sottrae dalla immagine originale una versione sfocata della immagine stessa per ottenere l’immagine detta maschera gmask(x,y) = f(x,y) – fsmooth(x,y) All’immagine originale è poi sommata l’immagine maschera g(x,y) = f(x,y) + gmask(x,y) = 2 f(x,y) - fsmooth(x,y) L Caponetti 15 Unsharp masking - esempio L’immagine gmask si può ottenere applicando il filtro: 0 0 0 1 1 1 − 1 − 1 − 1 0 1 0 − 1 1 1 1 = 1 − 1 8 − 1 9 9 0 0 0 1 1 1 − 1 − 1 − 1 h i Infatti gmask(x,y) = f(x,y) – fsmooth(x,y)) Cioè f*i - f* h = f*(i-h) per la linearità del prodotto di convoluzione L Caponetti High-boost filtering E’ una generalizzazione del filtro unsharp masking gmask(x,y) = f(x,y) – fsmooth(x,y) g(x,y) = f(x,y) + Kgmask(x,y) = f(x,y) +k(f(x,y) – fsmooth(x,y))= (1+k)f(x,y) – kfsmooth(x,y)) Cioè all’immagine originale è poi sommata l’immagine maschera amplificata di un fattore K con K>1 L Caponetti 16 Unsharp masking – esempio 1D L Caponetti Unsharp masking/highboost filtering – esempio 2D L Caponetti 17 Esempio di high-boost filtering L’immagine risultante ha i contorni più evidenziati rispetto all’immagine originale L Caponetti Operatori differenziali Obiettivo è la ricerca di discontinuità - un brusco cambiamento- nella funzione intensità Il problema è analizzare le variazioni fra un pixel e quello adiacente - ad esempio per evidenziare i contorni Il problema viene affrontato tramite l'analisi delle derivate L Caponetti 18 Operatori differenziali I punti in cui si hanno delle variazioni brusche di intensità possono essere rilevati dall’analisi delle derivate: Si può scegliere il massimo (minimo) della derivata prima o lo zero (punto di attraversamento dell'asse x) della derivata seconda L Caponetti Operatori differenziali f(x) è l'intensità dell'immagine L Caponetti 19 Operatori differenziali Derivata I Assume valore nullo su aree con livelli di grigio costanti Assume valore massimo o minimo nel punto di massima variazione L Caponetti Operatori differenziali Derivata II Assume valore nullo su aree con livelli di grigio costanti o che variano linearmente - rampa Assume valore nullo – cambiando il segno nel punto di massima variazione L Caponetti 20 Derivata discreta La derivata può essere approssimata tramite una differenza f ( x + h) − f ( x − h) f ′( x ) ≈ 2h Lo stesso approccio vale per la derivata seconda f ( x + h) − 2 f ( x ) + f ( x − h) f ′′( x ) ≈ h2 Nello spazio bidimensionale al posto della derivata si ha il gradiente - un vettore L Caponetti Esempio Gray-level profile First derivative La derivata si può approssimare con una differenza Second derivative L Caponetti 21 Operatori basati sul gradiente Definizione del gradiente: ∂f ( x, y ) ∇f ( x, y ) = ∂f (∂xx, y ) ∂y Ampiezza 1/ 2 ∂f ( x, y ) 2 ∂f ( x, y ) 2 M ( x, y ) = ∇ f ( x, y ) = + ∂x ∂y Direzione rispetto all’asse x ∂f ∂y α ( x, y ) = tan −1 ∂f ∂x L Caponetti Approssimazioni del gradiente Gli operatori differenziali nel discreto sono realizzati tramite maschere a somma nulla in modo da avere che l'applicazione a una regione uniforme produca risultato zero L Caponetti 22 Approssimazione derivate prime – sistema di riferimento immagine ∂f ≅ f ( x + 1, y ) − f ( x, y ) ∂x ∂f ≅ f ( x, y + 1) − f ( x, y ) ∂y y x L Caponetti Approssimazione derivate seconde y x ∂ f ≅ f(x + 1,y) − f(x,y) − ( f(x,y) − f(x − 1,y)) = ∂x 2 f(x + 1,y) + f(x-1,y)- 2 f(x,y) 2 ∂2 f ≅ f ( x, y + 1) − f ( x, y ) − ( f ( x, y ) − f ( x, y − 1) ) = ∂y 2 f(x,y + 1 ) + f(x,y − 1 )- 2 f(x,y) L Caponetti 23 Maschere per le derivate lungo gli assi Roberts Prewitt Sobel L Caponetti Maschere per le derivate lungo le diagonali L Caponetti 24 Prewitt e Sobel Maschere di Prewitt per evidenziare linee orizzontali – discontinuità lungo l’asse verticale- e linee verticali Maschere di Sobel per evidenziare linee orizzontali discontinuità lungo l’asse verticalee linee verticali -1 -1 -1 0 0 0 1 1 1 -1 -2 -1 0 0 0 1 2 1 -1 0 1 -1 0 1 -1 0 1 -1 0 1 -2 0 2 -1 0 1 L Caponetti Maschere di Sobel sistema di coordinate logico Operatori di Sobel: Discontinuità nella direzione y 90o gradi y Discontinuità nella direzione x 00 gradi x -1 0 1 -2 0 2 -1 0 1 1 2 1 0 0 0 -1 -2 -1 L Caponetti 25 Maschere di Sobel – (Kirsch) per la convoluzione Maschere di Sobel per evidenziare linee orizzontali a 0o e 180o gradi -1 0 1 -2 0 2 -1 0 1 1 0 -1 2 0 -2 1 0 -1 K0 Maschere di Sobel per evidenziare linee verticali a 90o e 270o gradi L Caponetti k4 -1 -2 -1 0 0 0 1 2 1 1 2 1 0 0 2 -1 -2 -1 K2 K6 Maschere di Sobel (Kirsch) per la convoluzione Maschere di Sobel per evidenziare linee a 45o e 225o gradi − 2 − 1 0 2 − 1 0 1 1 0 1 2 0 K1 Maschere di Sobel per evidenziare linee verticali a 135o e 315o gradi 0 − 1 − 1 2 1 0 K5 0 − 1 − 2 1 0 − 1 2 1 0 1 2 0 − 1 0 1 − 2 − 1 0 K3 K7 L Caponetti 26 Maschere di Kirsch Kirsch ha esteso le maschere di Sobel a 8 orientazioni spaziate di 450 e definito le maschere precedenti K0 …… k7 Le direzioni sono individuate in una finestra 3x3, rispetto al pixel centrale, codificate con 0,1,…7 3 2 1 4 0 5 6 7 L Caponetti Operatore Laplaciano Sia f(x,y) una funzione definita in un dominio discreto. Il Laplaciano L(x,y) è definito nel modo seguente: ∇ 2 f ( x, y ) = ∂ 2 f ( x, y ) ∂ 2 f ( x , y ) + ∂x 2 ∂y 2 Il Laplaciano è zero se f(x,y) è costante oppure varia linearmente Se f(x,y) non varia linearmente allora L(x,y) presenta un cambiamento di segno e quindi attraversa l’asse x L Caponetti 27 Oppure: L Caponetti 0 -1 0 -1 4 -1 0 -1 0 valore centrale positivo Laplaciano L Caponetti 28 Derivate I e II L Caponetti L Caponetti 29 Filtri di sharpening tramite Laplaciano Si sottrarre dalla immagine originale una versione ottenuta applicando l’operatore Laplaciano alla immagine stessa g ( x, y ) = f ( x, y ) − ∇ 2 f ( x, y ) Se la maschera del Laplaciano ha valore centrale negativo Si somma alla immagine originale una versione ottenuta applicando l’operatore Laplaciano alla immagine stessa g ( x, y ) = f ( x, y ) + ∇ 2 f ( x, y ) L Caponetti Filtri di sharpening tramite Laplaciano 0 0 0 0 1 0 0 − 1 0 0 1 0 − 1 − 4 1 = − 1 5 − 1 0 0 0 0 1 0 0 − 1 0 0 0 0 1 1 1 − 1 − 1 − 1 0 1 0 − 1 − 8 1 = − 1 9 − 1 0 0 0 1 1 1 − 1 − 1 − 1 L Caponetti 30 Operatore LoG- Laplacian of Gaussian L’operatore è costituito da: Un operatore di smoothing – filtro Gaussiano L’operatore Laplaciano Low-pass filter (Gaussian) Image Detect Zero-crossings Laplacian Edge Map L’applicazione di un filtro low-pass riduce l’effetto del rumore L Caponetti Operatore LOG- Laplacian of Gaussian Operatore LoG x2 + y 2 x +y LoG ( x, y, σ ) = c − 1e − 2σ 2 2 σ 2 2 dove c è un fattore di normalizzazione a 1 Il valore di σ determina il numero di punti che influenzano il calcolo del Laplaciano in un pixel Lo smoothing Gaussiano elimina l’influenza dei pixels che sono distanti più di 3σ rispetto al pixel corrente L Caponetti 31 LoG L Caponetti Operatori di rango Sono operatori non lineari Si considerano ancora i valori su una finestra locale, si riordinano e si usa come risultato quello in una posizione particolare Gli operatori più comuni sono: Massimo (il massimo locale) Minimo (il minimo locale) Mediano (il valore nella posizione centrale del vettore ordinato) L Caponetti 32 Filtro mediano Sostituisce il valore di ogni pixel con il valore mediano calcolato in una finestra centrata sul pixel in esame Il valore mediano si calcola ordinando i valori dei pixel e scegliendo quello centrale 10 20 20 20 15 20 20 25 90 10 15 20 20 20 20 20 25 90 ^ valore mediano immagine Scopo: rimozione del rumore tipo salt & pepper L Caponetti Operatore mediano È utilizzato per eliminare il rumore da una immagine Rispetto ad una media locale ha il vantaggio di essere meno sensibile rispetto al rumore salt & pepper (sale & pepe) e di non introdurre nuovi valori Esempio considerando i valori: 1, 3, 5, 7, 14 Media=6 Mediana=5 L Caponetti 33 Filtro mediano E’ un filtro non lineare Forza i pixel con intensità molto diverse ad essere simili ai loro vicini; si eliminano in questo modo gli “ spikes” isolati nell’area di azione della maschera In caso di spikes residui si può usare il filtro più volte: in altre parole elimina il rumore impulsivo, detto sale e pepe L Caponetti Media e filtro mediano Comportamento del filtro media e mediano applicati a rumore impulsivo (maschera di 3 pixel) L Caponetti 34 Media e filtro mediano Comportamento del filtro media e mediano applicati a un gradino impulsivo (maschera di 3 pixel) L Caponetti Media e filtro mediano La media tende a creare nuovi livelli di grigio Attenua non solo il rumore, ma anche tutte le alte frequenze spaziali in modo indiscriminato, causando sfocatura, perdita di dettaglio fine e attenuazione dei fronti di salita delle transizioni di livello di grigio L Caponetti 35 Filtro mediano Il filtro mediano non modifica la sequenza gradino e rampa Le sequenze con impulsi aventi durata minore di (L+1)/2 vengono soppresse Il picco di una funzione triangolare risulta attenuato L Caponetti 36