Tesi Robotica Analisi, progettazione e implementazione... | Page 161
i
i
“LP_Tesi” — 2013/10/17 — 18:27 — page 161 — #161
i
7.1. PARALLELIZZAZIONE INTERNA
1
i
161
offset[0]=0; offset[1]=1; offset[2]=2; offset[3]=3; BitF last_block=4;
offset[0] è in ogni caso 0 dato che il primo riempitore comincerà a scrivere
sempre da 0, a questo punto si contano le direzioni prodotte dal primo riempitore, che come detto sono 15, questo implica che almeno uno dei pacchetti viene
riempito, questo implica offset[1]=1, indicando quindi al secondo riempitore
che può iniziare a scrivere dall’indirizzo 1, il procedimento continua contando
gli elementi prodotti dal secondo riempitore, che in questo caso sono 9, che di
nuovo occupano un solo pacchetto, ed è per questo motivo che offset[2]=2. Il
terzo riempitore consta di 12 elementi, ovvero un altro pacchetto che a produrre
offset[3]=3.
Dato che è lo scoring che si deve fare carico di eliminare le coppie di pixel
inutili è stata necessario introdurre la variabile last_block, questa segnala il
limite massima a cui l’ultimo riempitore può arrivare, in questo caso è uguale
a 4 perché nell’ultima fase è solo il primo riempitore a essere utile, in realtà le
coppie che arrivano basterebbero per riempire la matrice di Fig:7.1.6, per poter
scartate tutte queste coppie finali inutili, l’ultimo riempitore deve raggiungere
la soglia di 12+10 ulteriori elementi che comportano l’uso di 2 pacchetti da 16
direzioni spiegando infine il perché in questo caso last_block=4.
1
2
3
4
5
6
7
8
9
10
32
0
16
33
2
19
37
7
0
0
1
17
34
3
20
38
8
0
0
18
35
4
21
39
9
0
0
36
5 6
22 23 24
40 41 42 43
10 11 12 13 14
0 0 0 0 0
0 0 0 0 0
0
0
0
Figura 7.1.6: Matrice con le due righe mancanti
Mentre le variabili precedenti vengono usate nella fase di Scoring, le variabili
di slack vengono utilizzate nella fase di Backtrack per la lettura della memoria.
Queste variabili vengono emesse dal programma apposito nella seguente forma
nel caso dell’esempio precedente:
i
i
i
i