Tesi Robotica Un co-processore per Stereo-Matching: Architettura | Page 50
i
i
“LP_Tesi” — 2011/9/9 — 21:20 — page 50 — #50
i
3.3. IMPLEMENTAZIONE MATLAB
i
50
Mentre la disparità della mappa di sinistra la si ottiene sulle righe, quella di
destra la si ottiene sulle colonne, ed è per questo che un ciclo scorre sull’altezza
[riga 7] e l’altro sulla larghezza [riga 19]. Il calcolo della disparità avviene
misurando la distanza in colonne (per quella di sinistra) o in righe (per quella
di destra) dalla diagonale [riga 8,20].
Algoritmo 3.8 Function DisparityMap
1
2
3
4
function [resultL,resultR] = DisparityMap(path)
path_real_size = path(2:end, 2:end);
resultL = zeros( 1, size(path_real_size,1) , 3);
resultR = zeros( 1, size(path_real_size,2) , 3);
5
6
7
8
9
10
11
12
13
14
15
16
for i = 1:size(path_real_size,1)
column_idx = find( path_real_size(i,:)==1 , 1, ’first’);
local_disparity = column_idx - i;
if( local_disparity >= 0 );
resultL(1,i,1) = local_disparity;
elseif( local_disparity < 0 )
resultL(1,i,3) = local_disparity;
else
resultL(1,i,2) = 1;
end
end
17
18
19
20
21
22
23
24
25
26
27
28
for i = 1:size(path_real_size,2)
line_idx = find( path_real_size(:,i)==1 , 1, ’first’);
local_disparity = i - line_idx;
if( local_disparity >= 0 )
resultR( 1,i,1 ) = local_disparity;
elseif( local_disparity < 0 )
resultR( 1,i,3 ) = local_disparity;
else
resultR( 1,i,2 ) = 1;
end
end
Ammettiamo che il backtracking ci ha portati nella posizione (5,12), e stiamo
calcolando la disparità di sinistra, questo significa che siamo a distanza 7 dalla
cella (12,12), quindi la disparità locale in quel punto è 7. Ma come siamo arrivati
a questo risultato?
i
i
i
i