Tesi Robotica Un co-processore per Stereo-Matching: Architettura | Page 44
i
i
“LP_Tesi” — 2011/9/9 — 21:20 — page 44 — #44
i
3.3. IMPLEMENTAZIONE MATLAB
i
44
della matrice dei punteggi [riga 8,9,10].
Arrivati alla fine, dato che potrebbero esserci più valori di massimo sia nell’ultima riga che nell’ultima colonna, in due cicli for si esegue il backtrack [riga
17,21] per ogni massimo trovato.
ScoreVariante
Algoritmo 3.5 Function ScoreVariante I
1
function [ScoringScheme, gapNorth, gapWest, diag] = ScoreVariante(IL, IR,
gapscorestart, gapscorecontinuation, lineL, lineR)
2
3
4
5
lengthLineIL = size(IL,2); lengthLineIR = size(IR,2);
ScoringScheme = zeros(lengthLineIL+1,lengthLineIR+1);
gapNorth = zeros(...); gapWest = zeros(...); diag = zeros(...);
6
7
8
9
10
11
12
13
14
15
16
ScoringScheme(1,2) = gapscorestart; gapWest(1,2) = 1;
for col = 3:lengthLineIR + 1
ScoringScheme(1,col) = ScoringScheme(1,col-1) + gapscorecontinuation;
gapWest(1,col) = 1;
end
ScoringScheme(2,1) = gapscorestart; gapNorth(2,1) = 1;
for row = 3:lengthLineIL + 1
ScoringScheme(row,1) = ScoringScheme(row-1,1) + gapscorecontinuation;
gapNorth(row,1) = 1;
end
È possibile dividere la funzione ScoreVariate in due, durante la prima (Alg:3.5) si
ha l’istanziazione delle matrici che andranno a contenere i punteggi e le direzioni
[riga: 4-5] (il codice è troncato per questione di spazio). Dopo di che la prima
riga della matrice dei punteggi viene riempita con valori di EGap, incrementati
via via che l’indice scorre, lo stesso avviene per la prima colonna [riga 9,14].
Una volta che l’ambiente di lavoro è pronto può cominciare l’esecuzione della
seconda parte dell’algoritmo, più importante e consistente (Alg:3.6). Dovendo
riempire completamente ben quattro matrici si rende necessario l’utilizzo di due
cicli e conseguentemente di due indici, uno per le righe e uno per le colonne. Da
adesso in poi ci riferiremo alla cella presa in considerazione all’istante attuale
i
i
i
i