Tesi Robotica Un coprocessore per Stereo-Matching: Profiling ... | Page 54
i
i
“MF_Tesi” — 2011/9/12 — 11:39 — page 54 — #54
i
4.3. IMPLEMENTAZIONE IN C
i
54
#define max(x, y) (((x) >= (y)) ? (x) : (y))
#define GAP 69
#define EGAP 10
21
typedef enum _dir {NONE = 0, DIAG, NORTH, WEST} dir;
typedef struct _dirval {dir d; int v; int isGap} dirVal;
26
dirVal **createMatrix(int linesize);
void clearMatrix(dirVal **score, int gap, int egap, int linesize);
void calculateScore(dirVal **score, uint8_t *lineL, uint8_t *lineR, int
gap, int egap, int linesize);
dir **backtrack(dirVal **score, int size); void disparity(dir **path,
uint8_t *outPtr, int size);
dir **createPath(int linesize);
void printScore(dirVal **score, int linesize);
Questa porzione di codice include una serie di librerie di sistema utilizzate per
l’analisi dei tempi e le librerie di OpenCV, inoltre sono state definite delle macro
come la funzione valore assoluto e la funzione che calcola il massimo tra due
valori numerici e dei flag che abilitano delle funzionalità, come quella di debug e
di analisi dei tempi. È inoltre stato definito un nuovo tipo enumerato che indica
le possibili direzioni percorribili nella matrice, ed una struttura che rappresenta
il contenuto di una cella: il valore dell