Tesi Robotica Algoritmi ed architetture per la risoluzione di... | Page 29
1.5. FILTRO DI SMOOTHING GAUSSIANO
29
qM ≠1 qN ≠1
G(x, y) ú I(x, y) =
—=0 G(–, —) · I(x ≠ –, y ≠ —)
qM–=0
qN ≠1
≠1
=
G(–) —=0 G(—) · I(x ≠ –, y ≠ —)
–=0
dove G(–) e G(—) rappresentano le due gaussiane monodimensionali, il cui
prodotto ci fornisce la gaussiana bidimensionale.
Figura 1.5.2: Esempio di campionamento della funzione gaussiana
Anziché utilizzare una costruzione bidimensionale usiamo due array, inducendo
sicuramente una semplificazione nelle strutture su cui l’algoritmo lavora e un
primo risparmio di locazioni di memoria. Inoltre intuiamo che il risparmio
non si limita solo a questo: moltiplicando preventivamente tutti i coe cienti
presenti su una riga (o colonna) dell’immagine campione, ci permette di ridurre
in maniera impressionante il numero di operazioni, che siano esse somme o
moltiplicazioni.
Infatti, dato un kernel bidimensionale di dimensioni K ◊ K, invece le eseguire
K 2 moltiplicazioni tra maschera e immagine e poi sommare tra loro i K 2 prodotti
con K 2 ≠ 1 somme, eseguiamo prima K prodotti tra i coe cienti dell’immagine
e quelli della gaussiana monodimensionale, addizioniamo i risultati tra loro,
ottenendo K valori che vengono ulteriormente moltiplicati per i K coe cienti
della seconda gaussiana monodimensionale e addizionati tra loro.
Per maggior completezza, o riamo una tabella riassuntiva del numero di operazioni eseguite :
Tipo di operazione
Addizione
Moltiplicazione
Numero di perazioni
(2 · K ≠ 1) · M · N
2·K ·M ·N