Tesi Robotica Un co-processore per Stereo-Matching: Architettura | Page 80
i
i
“LP_Tesi” — 2011/9/9 — 21:20 — page 80 — #80
i
4.5. MODULO SCORING
i
80
Sia x il valore del punteggio nella prima riga/colonna e i l’indice attuale preso
in considerazione, abbiamo:
x = gap
i=0
x = gap + i ∗ egap i > 0
Da questa formula è possibile notare quanto sia semplice ricavare un valore
non memorizzato. Nonostante sia presente una moltiplicazione questa può essere evitata memorizzando il valore precedente di x nelle variabili top e left e
aggiornandolo di volta in volta.
Data la scelta fatta, durante lo sviluppo è stato necessario distinguere i vari casi
in cui è possibile capitare. Ogni caso è mutualmente esclusivo rispetto agli altri,
le differenze che li contraddistinguono stanno nell’aggiornamento di top e left,
e nell’assegnazione dei valori di cNorth, cWest e cNorthWest, quest’ultimi rappresentano il valore dell’allineamento provenendo da quella specifica direzione
(per maggiori informazioni leggere Cap:3).
Ogni caso viene contraddistinto dalla posizione della testina di lettura/scrittura
addr, possiamo quindi avere (tutti i riferimenti sono ad Alg:4.21):
• [riga 5] addr = 0: La testina si trova nella prima locazione, come detto
prima, i valori della riga superiore e quelli della colonna a sinistra sono
uguali a gap (i=0) ed è per questo motivo che top e left sono già inizializzati
a questo valore. Vengono quindi aggiornati i valori per il ciclo di clock
successivo.
• [riga 11] 0 < addr < size: La testina si trova nella prima riga effettiva
della matrice, il valore di top viene incrementato di egap per le letture
successive.
• [riga 19] addr%size = 0: La testina si trova nella prima colonna effettiva
della matrice, il valore di left viene incrementato di egap per le letture
successive.
• [riga 27] addr > size + 1 : La testina si trova nel caso generico, top e left
non hanno bisogno di essere aggiornati in quanto non ci troviamo ne nella
prima riga ne nella prima colonna.
i
i
i
i