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
− 1e − 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