Tesi Robotica Un co-processore per Stereo-Matching: Architettura | Page 85
i
i
“LP_Tesi” — 2011/9/9 — 21:20 — page 85 — #85
i
4.5. MODULO SCORING
i
85
le altre due e itera fino al raggiungimento del bordo sinistro o quello superiore.
Durante questo processo gli elementi di tipo DirAddr vengono settati di volta
in volta con i giusti valori e infilati nella FIFO di uscita fout (r:27 Alg:4.24).
Arrivati a questo punto però rispunta il problema di prima, una volta che il
tracking arriva ai limiti non sa più come continuare. Nell’algoritmo originale
la matrice dei punteggi ha una riga e una colonna in più che permettono al
backtracking di tornare all’origine, data la nostra implementazione questa cosa
non è più possibile, ma necessaria se vogliamo in uscita un numero di DirAddr
equivalenti al numero di pixel presenti in ogni singola riga dell’immagine. A
questo scopo sono state create tre nuove regole per il postTrack attivate alla
fine del backTrack in base alla posizione in cui ci si trova (Alg:4.25).
Algoritmo 4.25 Scoring: rule postTrack
1
2
3
4
5
6
7
rule postTrackDiag (step==4);
addr<=0;
DirAddr dirAddr = DirAddr{dir:BLUE,addr:0};
if(addr==fromInteger(width) || addr==1)
fout.enq(dirAddr);
step<=1;
endrule: postTrackDiag
8
9
10
11
12
13
14
15
rule postTrackNorth (step==5);
addr<=addr-size;
DirAddr dirAddr = DirAddr{dir:BLUE,addr:addr-size};
fout.enq(dirAddr);
if((addr-size)==0)
step<=1;
endrule: postTrackNorth
16
17
18
19
20
21
22
23
rule postTrackWest (step==6);
addr<=addr-1;
DirAddr dirAddr = DirAddr{dir:RED,addr:addr-1};
fout.enq(dirAddr);
if((addr-1)==0)
step<=1;
endrule: postTrackWest
Le tre regole sono molto simili e servono a gestire rispettivamente:
i
i
i
i