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