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