Tesi Robotica Un co-processore per Stereo-Matching: Architettura | Page 89
i
i
“LP_Tesi” — 2011/9/9 — 21:20 — page 89 — #89
i
4.6. MODULO DISPARITY
i
89
Fra i method di sicuro quello più interessante è il put (r:1 Alg:4.26), questo si
occupa della gestione dell’input e della trasformazione di elementi DirAddr in
elementi DispAddr (disparità + indirizzo + colore). Prima di tutto istanzia una
variabile blank di tipo DispAddr (r:5 Alg:4.26) col nome dispA, controlla il colore
della direzione del DirAddr in ingresso, se questa è BLUE allora ci troviamo di
fronte ad una occlusione e nella variabile dispA andrà a finire il colore GREEN,
se questo invece è RED la ignoriamo dato che corrisponde ad un occlusione
per la mappa di disparità destra. Il caso importante è GREEN, quando arriva
possiamo iniziare a calcolare la disparità basandoci sulla distanza dalla diagonale
della matrice, della diagonale fanno parte tutti i punti di coordinate (i, i) con
0 < i < n, se ci troviamo al di sotto di questa siamo nel caso di disparità negativa
(r:15 Alg:4.26, assegnazione colore BLUE), nel caso contrario abbiamo disparità
positiva (r:18 Alg:4.26, assegnazione colore RED), in genere dovremmo avere
sempre disparità negativa dato che ogni oggetto presente nella scena si trova
ad un certa distanza dagli obbiettivi di ripresa (e mai dietro questi), possiamo
avere disparità positva solo in caso di errore o nel caso in cui immagine destra
e sinistra siano state invertite. I DispAddr così creati vengono inseriti in una
FIFO che si occuperà di tenerli memorizzati fino a quando qualcuno (il modulo
Top in questo caso) non andrà a svuotarla.
Gli altri due metodi presenti sono quello di get (r:33 Alg:4.26) e deque (r:24
Alg:4.26), usati in combinazione permettono di leggere e svuotare la FIFO di
uscita, durante la deque però il contatore viene incrementato fino a farlo arrivare
al valore width-1 per far scattare così il segnale di ready, una volta arrivato a
questo punto viene resettato a 0 in attesa di una nuova computazione.
i
i
i
i