Tesi Robotica Un co-processore per Stereo-Matching: Architettura | Page 46
i
i
“LP_Tesi” — 2011/9/9 — 21:20 — page 46 — #46
i
3.3. IMPLEMENTAZIONE MATLAB
i
46
aggiunto il valore del gap esteso (EGap), gap normale altrimenti. La stessa cosa
viene fatta per la cella(row − 1, col) (north).
Il massimo fra questi tre andrà ad essere posizionato nella cella di indice (row, col)
[riga 24]. A questo punto possono succedere due cose:
• il valore massimo coincide con uno solo fra northwest, north e west, e
quindi solo una fra le matrici diag, gapNorth e gapWest verrà riempita;
• il valore massimo coincide a più valori, e ad ogni corrispondenza ci sarà
un riempimento della rispettiva matrice.
In output otterremo quindi la matrice dei punteggi (ScoringScheme), la matrice
dei gap a Nord (gapNorth), la matrice dei gap a Ovest (gapWest) e la matrice
delle direzioni diagonali (diag).
Track
Essendo una funzione ricorsiva bisogna individuare il caso base, e la dove avviene
la ricorsione. Come caso base abbiamo che gli indici row e col siano maggiori
di zero, ovvero che non abbiamo sorpassato i bordi durante il tracciamento.
Per come sono costruite le matrici, grazie alla prima riga e alla prima colonna,
durante la fase di backtracking l’ultimo valore analizzato sarà quello della cella
all’origine (1,1).
Facciamo finta che le tre matrici siano condensate in una sola, la vista che si
presenterebbe sarebbe molto simile a quella di Fig:3.2. Come si può ben vedere
una volta che il il backtracking (frecce rosse) arriva ai bordi della matrice non
c’è modo di non poter tornare all’origine, nel caso si arrivi al margine sinistro ci
sono tanti gap nord quante sono le ca 6V