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