Tesi Robotica Un coprocessore per Stereo-Matching: Profiling ... | Page 61
i
i
“MF_Tesi” — 2011/9/12 — 11:39 — page 61 — #61
i
4.3. IMPLEMENTAZIONE IN C
i
61
Così come per la funzione che calcola i punteggi anche la funzione di backtrack
possiede la possibilità di essere eseguita in modalità debug, anche in questo
caso, se l’applicazione viene compilata con il flag DEBUG definito, assieme all’algoritmo vengono compilate delle istruzioni utili in fase di debug che forniscono
informazioni sull’esecuzione di ogni passo della procedura.
Calcolo della disparità
4
9
14
19
24
void disparity(dir **path, uint8_t *outPtr, int size)
{
int row, col;
int delta;
int found = 0;
for(row = 1; row < size; row++)
{
found = 0;
for(col = 1; col < size; col++)
{
if(path[row][col] != NONE)
{
delta = abs(col - row);
if(col >= row)
{
outPtr[3 * row + RED] = delta;
}
else if(col < row)
{
outPtr[3 * row + BLUE] = delta;
}
found = 1;
break;
}
}
if(!found) outPtr[3 * row + GREEN] = 255;
}
}
Questa è la funzione che calcola la disparità delle righe di due immagini stereo.
In input viene passato il percorso ricostruito tramite la fase di backtracking, una
scanline dell’immagine di output in cui verrà memorizzata la corrispondente disparità tra le due righe e che insieme a tutte le altre rappresenta l’immagine che
i
i
i
i