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