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

i i “MF_Tesi” — 2011/9/12 — 11:39 — page 57 — #57 i 4.3. IMPLEMENTAZIONE IN C i 57 #endif score[row][col].v = best; if(best == diag) { #ifdef DEBUG printf("diag\n\n"); #endif score[row][col].d = DIAG; continue; //scelgo sempre la prima soluzione ottima } if(best == west) { #ifdef DEBUG printf("west\n\n"); #endif score[row][col].d = WEST; score[row][col].isGap = 1; continue; } if(best == north) { #ifdef DEBUG printf("north\n\n"); #endif score[row][col].d = NORTH; score[row][col].isGap = 1; continue; } 37 42 47 52 57 62 } } 67 } Questa funzione effettua il calcolo della matrice di punteggi e prende in input le scanline delle due immagini stereo, il puntatore alla matrice dei punteggi, la larghezza delle scanlines e i valori di gap ed egap. Il cuore della funzione stà nei due cicli for indentati che scandiscono i pixel delle due scanlines affinchè venga costruita la matrice dei punteggi. Per ogni coppia di pixel vengono calcolati i tre tipi di estensione dell’allineamento precedente. Viene calcolato il valore del mismatch da sottrarre al pixel di nord-ovest, il valore della cella nel caso di estensione da nord o da ovest, in particolare si distingue il caso in cui tali pixel sono di gap oppure no. Nel primo caso, se attivo, si utilizza il valore di i i i i