0.6 Filtro di smoothing Gaussiano

Transcript

0.6 Filtro di smoothing Gaussiano
20
Figura 17: Filtro trapezoidale passa basso.
In questo filtro l0 rappresenta la frequenza di taglio ed l0, l1 rappresenta un intervallo della
frequenza con variazione lineare di H, utile ad evitare le brusche variazioni tipiche del filtro ideale.
I risultati degli ultimi tre filtri: Butterworth, Esponenziale e Trapezoidale sono mostrati nella
seguente figura.
I filtri di smoothing studiati sono utilizzati per ridurre il rumore e migliorare la qualità visiva,
specialmente nel caso di immagini quantizzate in pochi livelli.
In quest’ultimo caso infatti quando sono visualizzate si nota l’effetto dei falsi contorni.
0.6
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, è data da:
h(l, k) = ce−
(l2 +k2 )
2σ2
(40)
dove σ è la deviazione standard della distribuzione di probabilità associata, c il fattore di normalizzazione che per semplicità si assume uguale a 1. La deviazione standard σ è l’unico parametro
che modella la funzione di trasferimento e definisce l’area di influenza del filtro Gaussiano (figura
18).
1
0.9
60
1
0.8
50
0.8
0.7
40
0.5
Modulo
0.6
0.6
0.4
0.4
20
10
0.2
0.3
0
1
0
20
0.2
20
10
0.1
30
10
0
1
0.5
−10
−15
−10
−5
0
0
5
10
15
−0.5
−10
20
−20
(a)
Figura 18: Funzione Gaussiana (a) 1D e−l
h(l, k).
−20
(b)
2
/2σ2
0.5
0
0
0
−20
Fy
−0.5
−1
−1
Fx
(c)
, (b) 2D con σ = 3 e (c) trasformata di Fourier di
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).
Tra le proprietá del filtro Gaussiano vi sono:
0.6. FILTRO DI SMOOTHING GAUSSIANO
21
• Simmetria circolare
• Monotono decrescente (nel dominio spaziale e delle frequenze)
• Separabile.
0.6.1
Simmetria circolare
Il filtro Gaussiano esegue l’operazione di smoothing in modo identico in tutte le direzioni. Da ciò
ne consegue che il filtro opera in maniera indipendente all’orientazione delle strutture presenti nell’immagine. Questa proprietà è dimostrata convertendo le coordinate cartesiane (l,k) in coordinate
polari (r, θ) nella funzione Gaussiana:
r2
h(r, θ) = ce− 2σ2
(41)
dove il raggio polare r è definito da r 2 = l2 + k 2 . La proprietà di simmetria circolare è dimostrata
dalla non dipendenza di h(r, θ) e dall’azimut θ.
0.6.2
Proprietá del filtro nel domino delle frequenze
La trasformata di Fourier della funzione Gaussiana è ancora una Gaussiana con soli valori reali.
Per dimostrarlo consideriamo la funzione Gaussiana h(x) ed applichiamo la trasformata di Fourier:
H(u) = F (h(x))
=
=
=
=
=
+∞
−∞
+∞
−∞
+∞
−∞
+∞
−∞
+∞
h(x)e−jux dx
x2
e− 2σ2 e−jux dx
x2
e− 2σ2 (cos ux + j sin ux)dx [F ormuladiEulero]
e
x2
− 2σ
2
cos uxdx + j
+∞
e
x2
− 2σ
2
(42)
sin uxdx
−∞
x2
e− 2σ2 cos uxdx
−∞
=
√
u2
2πσe− 2v2
dove ν 2 =1/σ 2 è la deviazione standard nel dominio della frequenza che è il reciproco della deviazione standard nel dominio spaziale.
Ciò porta alla seguente considerazione:
• per valori piccoli di σ corrispondono valori grandi di ν, ossia, il filtro Gaussiano produce
uno smoothing lieve se la deviazione standard σ ha valori piccoli che corrispondono a valori
grandi nel dominio delle frequenze con il conseguente limitato taglio delle alte frequenze.
• Al contrario se σ ha valori alti, l’operazione di smoothing è notevolmente accentuata avendo
in corrispondenza un valore piccolo di ν eliminando un numero maggiore di alte frequenze. In
quest’ultimo caso, l’eliminazione delle alte frequenze comporta sia una maggiore attenuazione
del rumore che delle strutture presenti nel dominio spaziale.
Con la funzione di trasferimento H(u) ancora Gaussiana nel dominio delle frequenze, si conferma
di nuovo l’esistenza di un unico picco.
22
0.6.3
Proprietá di separabilità del filtro Gaussiano
Siano h(i, j) e f (i, j) rispettivamente la funzione di trasferimento e l’immagine da filtrare, segue:
g(i, j) = h(i, j) f (i, j) =
h(l, k)f (i − l, j − k)
l
=
=
k
(l2 +k2 )
e− 2σ2 f (i − l, j − k)
l k − l2 − k 2
2
2
2σ
2σ
e
e
f (i − l, j − k)
l
(43)
k
dove l’espressione [·] indica la convoluzione dell’immagine f (i, j) con la funzione Gaussiana monodimensionale h(k) che rappresenta la componente verticale.
Il risultato del filtraggio verticale porta all’immagine di output gv (i, j) che viene dato in input
all’operatore di convoluzione orizzontale che utilizza la funzione Gaussiana monodimensionale h(i).
Scambiando l’ordine delle convoluzioni, prima l’orizzontale e successivamente la verticale, i
risultati non cambiano, per la proprietà associativa e commutativa della convoluzione.
I passi essenziali sono cosi riassunti:
1. Eseguire la convoluzione con maschera orizzontale e salva il risultato in modo trasposto
rispetto all’inizio (Convoluzione orizzontale).
2. Eseguire la convoluzione con la stessa maschera orizzontale (Convoluzione verticale).
3. Eseguire la trasposizione dell’immagine per riportarla nella posizione originale (Immagine
filtrata).
0.7
Progettazione del filtro Gaussiano
In precedenza sono stati evidenziati i limiti del filtro media. Inoltre, l’uso di una funzione di
trasferimento ideale nel dominio delle frequenze non si è dimostrata efficace applicata ad immagini reali. I filtri di smoothing devono essere progettati con la particolarità che i coefficienti della
maschera di convoluzione modellano una funzione monotona gradualmente decrescente con la tendenza a raggiungere lo zero. Per ottenere filtri di smoothing con tali caratteristiche consideriamo
due categorie di filtri Gaussiani: filtri discreti e filtri binomiali.
0.7.1
Filtro Gaussiano discreto
I coefficienti della maschera di convoluzione sono calcolati analiticamente considerando la funzione
di distribuzione Gaussiana:
i2 +j 2
h(i, j) = ke− 2σ2
(44)
dove k è una costante di normalizzazione dei pesi.
È noto che gli effetti del filtro sono controllati dai valori della varianza σ 2 e dalle dimensioni della
maschera L×L. Per una maschera di 7×7, una 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:
[i,j]
-3
-2
-1
0
1
2
3
-3
0.0111
0.0388
0.0821
0.1054
0.0821
0.0388
0.0111
-2
0.0388
0.1353
0.2865
0.3679
0.2865
0.1353
0.0388
-1
0.0821
0.2865
0.6065
0.7788
0.6065
0.2865
0.0821
0
0.1054
0.3679
0.7788
1.0000
0.7788
0.3679
0.1054
1
0.0821
0.2865
0.6065
0.7788
0.6065
0.2865
0.0821
2
0.0388
0.1353
0.2865
0.3679
0.2865
0.1353
0.0388
3
0.0111
0.0388
0.0821
0.1054
0.0821
0.0388
0.0111
0.8. FILTRI BINOMIALI
23
1
1
2
2
2
1
1
2
2
4
2
2
2
2
4
8
4
2
2
4
8
16
8
4
2
2
4
8
4
2
1
2
2
4
2
2
1
1
2
2
2
1
Tabella 1: Maschera Gaussiana 7 × 7
In molti sistemi di elaborazione dell’immagine è 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 un valore minimo (per esempio 1) ai vertici della maschera ed un
valore massimo k in corrispondenza del coefficiente centrale, si ha:
k=
nuovovalore min hN (−3, 3)
1
=
= 91
valoreattuale h(3, 3)
0.0111
(45)
L’adattamento degli altri coefficienti è ottenuto moltiplicando ciascuno di essi per il valore di
k calcolato in precedenza. Il risultato che si ottiene è il seguente:
[i,j]
-3
-2
-1
0
1
2
3
-3
1
4
7
10
7
4
1
-2
4
12
26
33
26
12
4
-1
7
26
55
71
55
26
7
0
10
33
71
91
71
33
10
1
7
26
55
71
55
26
7
2
4
12
26
33
26
12
4
3
1
4
7
10
7
4
1
Con questi nuovi valori dei coefficienti, è necessario normalizzare i valori della funzione di
convoluzione con una costante λ, ossia
g(i, j) = λ [h(i, j) f (i, j)]
(46)
e con i dati dell’esempio si avrebbe:
⎡
λ = 1/ ⎣
3
3
i=−3 j=−3
⎤
h(i, j)⎦ =
1
1115
(47)
La normalizzazione dei risultati della convoluzione garantisce che regioni omogenee con intensità
costante siano lasciate inalterate dal filtro.
Altri filtri discreti possono essere calcolati variando σ 2 ed L, rispettivamente la varianza ed il
lato della maschera.
0.8
Filtri Binomiali
Una classe dei filtri di smoothing chiamati filtri binomiali, possono essere ottenuti in modo semplice
considerando alcune proprietà:
• la distribuzione Gaussiana può essere approssimata dalla distribuzione binomiale (specialmente con n>>0):
n
n−x
h(x) =
px (1 − p)
x = 0, . . . , n
(48)
x
24
(a)
(b)
Figura 19: Immagine con rumore Gaussiano (a) e filtrata usando il filtro 7 × 7 di tabella 19.
dove p rappresenta la probabilità dell’evento x ed n è l’ordine della distribuzione binomiale.
Tale distribuzione ha media μ = np e varianza σ 2 = np(1 − p).
Nel caso discreto, con n = 8, p = 1/2 e quindi μ = 8 · (1/2) = 4 e σ 2 = 2, la distribuzione
Gaussiana e la binomiale hanno differenze molto piccole:
x
0
1
2
3
4
5
6
7
8
Distrib. bin.
1
8
28
56
70
56
28
8
1
Distrib. Gauss. 1.3 7.6 26.6 56.2 72.2 56.2 26.6 7.6 1.3
• La proprietá di separabilità del filtro Gaussiano bidimensionale è nota. Questo filtro può
essere implementato come convoluzione di due filtri Gaussiani monodimensionali (orizzontale e verticale). Ciò è fattibile utilizzando un singolo filtro Gaussiano monodimensionale e
trasponendo l’immagine dopo ogni convoluzione (con la stessa maschera monodimensionale).
• La proprietà di sommatoria della convoluzione dei filtri. Se consideriamo la maschera
di convoluzione (n × n) di un filtro Gaussiano o binomiale, la sua convoluzione con un’altra
maschera di dimensioni (m × m) produce una nuova maschera di convoluzione di dimensioni
(n + m − 1 × n + m − 1).
Analizziamo in dettaglio l’ultima proprietà e consideriamo il filtro media monodimensionale:
h(i) =
1
1
2
1
(49)
Se applichiamo tale filtro n volte ad una linea dell’immagine si avrebbe il seguente filtro:
[1 1] [1 1] . . . [1 1]
ossia
hn (i)=
h(i) h(i) . . . h(i)
n volte
(50)
Esempio:
h2 (i) = h(i)
h(i) = 1 1 1 1 = 14 1 2 1
h3 (i) = 18 1 3 3 1
1
1 4 6 4 1
h4 (i) = 16
1
1 8 28 56 70 56 28 8 1
h8 (i) = 256
Siamo interessati per ragioni di simmetria, ai filtri di dimensione dispari. I valori delle maschere
di convoluzione monodimensionali sopra indicati, corrispondono ai valori di distribuzione binomiale
discreti. Tali valori, ottenuti applicando la convoluzione in modo consecutivo con la maschera
di base 1/2[1 1], sono equivalenti a ciascuna riga n-ma del triangolo di Pascal che può essere
0.8. FILTRI BINOMIALI
25
considerato come una buona approssimazione di n-punti ai filtri Gaussiani. Da ciò consegue che i
filtri binomiali monodimensionali possono essere estratti dai corrispondenti valori di ciascuna linea
del triangolo di Pascal che sviluppato fino ad n=8 risulta:
n
0
1
2
3
4
5
6
7
8
k
1
1/2
1/4
1/8
1/16
1/32
1/64
1/128
1/256
1
11
121
1331
14641
1 5 10 10 5 1
1 6 15 20 15 6 1
1 7 21 35 35 21 7 1
1 8 28 56 70 56 28 8 1
σ2
0
1/4
1/2
3/4
1
5/4
3/2
7/4
2
dove k è il fattore di scala del filtro 2−n e la varianza σ 2 = np(1 − p) = n/4 con p = 1/2,
rappresenta il parametro che controlla l’efficacia di smoothing del filtro.
Un filtro binomiale di dimensioni dispari h(i) con L = 2R + 1 pixel, utilizzando la proprietà a),
è definito dalla seguente relazione:
hL (i) =
L
pi (1 − p)L−i =
1
L!
·
(R − i)!(R + i)! 2L
(51)
con i = −R, −(R − 1), ...0, ..., R.
La funzione di trasferimento del filtro binomiale si ottiene considerando quella del filtro media
considerato elevato alla L-ma potenza.
Rispetto al filtro media si nota come il filtro di smoothing binomiale ha una funzione di
trasferimento che decresce in modo monotono e tende a zero verso le alte frequenze.
Riepilogando i filtri binomiali possono essere implementati secondo quanto segue:
Filtro Monodimensionale Con la proprietà di separabilità si può utilizzare un filtro binomiale
monodimensionale con valori approssimati da una riga del triangolo di Pascal.
Se la maschera ha dimensioni superiori a 10, i coefficienti dell’espansione binomiale assumono
valori molto grandi e creano problemi di implementazione (non sono più memorizzabili in un
byte).
Per la proprietà di sommatoria della convoluzione dei filtri, si è visto che è possibile applicare
più volte lo stesso filtro all’immagine, ottenendo cosı̀ l’effetto equivalente di un filtro di grandi
dimensioni.
Filtro bidimensionale Questi filtri sono ottenuti utilizzando una maschera di convoluzione composta della convoluzione delle maschere monodimensionali orizzontali e verticali:
hL (i, j) = hL (i) hL (j)
Una maschera di convoluzione binomiale 3×3 è ottenuta come segue:
1 1
1
1
1 2
2
2
2
1
2
1
h (i, j) = h (i) h (j) =
=
4
4 1
16
(52)
1
(53)
Le figure visualizzano le funzioni di trasferimento dei filtri binomiali a diverse dimensioni 3×3,
5×5 e gli effetti dello smoothing sull’immagine campione.
Si nota come il filtro binomiale, approssimazione del filtro Gaussiano, presenta componenti di
non perfetta simmetria circolare anche insignificanti.
26
0.8.1
Caratteristica dei Filtri Gaussiani
Risulta frequentemente utilizzato come filtro per l’attenuazione del rumore Gaussiano. In contrapposizione si ottiene una immagine leggermente sfocata con la rimozione di qualche dettaglio.
Il carico computazionale di un filtro binomiale di dimensione L×L è di L2 moltiplicazioni e di
2
L -1 addizioni.
Se il filtro è realizzato con maschere monodimensionali del tipo 1/2[11], ed è applicato in
direzione orizzontale e verticale L − 1 volte, sono necessari 2(L − 1) addizioni.
Le moltiplicazioni sono realizzate in modo efficiente con operazioni di shift.
Per una maschera di dimensioni 17×17 il filtro richiede solo 32 somme ad alcune operazioni di
shift contro alle 289 moltiplicazioni e 288 somme necessarie con l’approccio diretto.