Tesi Robotica Analisi, progettazione e implementazione... | Page 168
i
i
“LP_Tesi” — 2013/10/17 — 18:27 — page 168 — #168
i
168
i
7. TERZA RELEASE
è utile mentre le altre no, al secondo ciclo invece ne sono utili due e così via, il
ciclo for alla riga 3 serve proprio a ignorare questi risultati inutili. Il resto della
regola calcola il valore della cella presa in considerazione come il massimo fra
tre elementi e ne mette il risultato nella coda result. in più inserisce il valore
trovato nella FIFO ramNorth[i] in modo che il riempitore successivo ne possa
usufruire al prossimo ciclo di clock.
Il caso diagonale viene invece trattato dalle regole r3 (Alg:7.9) e le regole waste,
la tecnica è pressoché identica alla precedente ma con un unica differenza, ora
non si ha a disposizione la cella di north e quindi viene eseguita la ricerca del
massimo fra due elementi e zero. Tuttavia qui sorge un problema, osservando
nuovamente Fig:7.1.2 è possibile osservare come mano a mano che si raggiunge
la fine sono sempre di meno le coppie di pixel utilizzabili, questo perché come
spiegato prima ogni riga è più lunga di quella precedente, ed è proprio a questo
che servono le rule waste, infatti tali regole buttano tutte le coppie che devono
Algoritmo 7.9 rule r3
1
2
3
4
5
6
7
8
9
10
11
12
13
for(Integer i=0; isize && addr==row+fromInteger(i*2) && col>
fromInteger(i));
delta[i].deq();
BitScore cNorth=0;
BitScore cWest;
if(gapWest[i]!=WEST) cWest = west[i] + gap;
else cWest = west[i] + egap;