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