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