Tesi Robotica Un coprocessore per Stereo-Matching: Profiling ... | Page 64

i i “MF_Tesi” — 2011/9/12 — 11:39 — page 64 — #64 i 4.3. IMPLEMENTAZIONE IN C 32 37 42 47 52 57 62 67 i 64 for(y = 0; y < left -> height; y++) { lineL = (uint8_t *)(left -> imageData + y * left -> widthStep); lineR = (uint8_t *)(right -> imageData + y * right -> widthStep); outPtr = (uint8_t *)(disp -> imageData + y * disp -> widthStep); line = (uint8_t *)(out -> imageData + y * out -> widthStep); //alloco la matrice score = createMatrix(left -> width + 1); //la inizializzo clearMatrix(score, GAP, EGAP, left -> width + 1); //calcolo i punteggi della riga calculateScore(score, lineL, lineR, GAP, EGAP, left -> width + 1); #ifdef DEBUG printScore(score, left -> width + 1); #endif //costruisco il percorso path = backtrack(score, left -> width + 1); //aggiungo la riga alla mappa di disparità disparity(path, outPtr, left -> width + 1); for(i = 0; i < out -> width; i++) { line[i] = (uint8_t)(outPtr[i * 3 + RED] + outPtr[i * 3 + BLUE]); } #ifdef DEBUG break; #endif } printf("Done\nDisplaying the output.\n"); #ifdef PROF // Stopwatch gettimeofday (&stop, NULL); // Misura prestazioni e output timdiff = abs (stop.tv_sec - start.tv_sec) * 1000000L; timdiff = timdiff - abs (stop.tv_usec - start.tv_usec); timdiff = abs (timdiff); printf("Intertempo dt:\t%ld usecs\n", timdiff); #endif cvNamedWindow("Left"); cvNamedWindow("Right"); cvNamedWindow("Disp"); cvNamedWindow("Res"); 72 i i i i