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

i i “MF_Tesi” — 2011/9/12 — 11:39 — page 49 — #49 i 4.2. DESCRIZIONE DELL’ALGORITMO i 49 c’era già un gap, oppure la penalizzazione gap altrimenti. La stessa cosa viene fatta prelevando il valore della cella ad ovest di quella attuale, ed infine il terzo punteggio viene calcolato prelevando la cella a nord-ovest ed effettuando il seguente calcolo (pjL e pjR sono i pixel j-esimi della riga in esame): match − |pjL − pjR | dove match è il punteggio assegnato a due pixel uguali. Oltre al valore del punteggio attuale, all’interno della matrice viene anche memorizzata la posizione della cella che si è deciso di estendere. Quest’informazione sarà essenziale durante la fase di backtracking per poter ricostruire l’allineamento ottimo tra le due scanline. Algoritmo 4.1 Pseudo-codice del riempimento dei valori della matrice. 1 6 for i = 1 to length(sequence1) { for j = 1 to length(sequence2) { mismatch = -|IL(line, i) - IR(line,j)| if(M(i-1, j) è un gap) nord <- M(i-1, j) + egap else nord <- M(i-1, j) + gap diagonal <- M(i-1,j-1) + match + mismatch if(M(i, j-1) è un gap) west <- M(i, j-1) + egap else west <- M(i, j-1) + gap 11 16 M(i, j) <- max(north, diagonal, west) } } Come possiamo notare la matrice ha dimensione WL × WR dove WL e WR sono le larghezze delle due immagini. Una volta che la matrice è completa dei punteggi e delle direzioni si passa alla fase di backtracking. i i i i