Tesi Robotica Un co-processore per Stereo-Matching: Architettura | Page 40
i
i
“LP_Tesi” — 2011/9/9 — 21:20 — page 40 — #40
i
3.2. BACK TRACKING
i
40
Algoritmo 3.2 Needleman–Wunsch con gap esteso
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
for i = 1 to length(sequence1){
for j = 1 to length(sequence2){
mismatch = -|IL(line,i) -IR(line,j)|
if( M(i-1,j) is a gap )
north <- M(i-1,j) +egap
else
north <- M(i-1,j) +gap
endif
diagonal <- M(i-1,j-1) +match +mismatch
if( M(i,j-1) is a gap )
west <- M(i,j-1) +egap
else
west <- M(i,j-1) +gap
endif
M(i,j) <- max(north, diagonal, west)
}
}
3.2
Back Tracking
Durante la creazione della matrice dei punteggi viene segnata anche la direzione
da cui si è provenuti, seguendo all’indietro queste direzioni è possibile ottenere
il backtracking. Questo procedimento in genere porta alla generazione di più
più percorsi, di conseguenza è necessario fornire nuovi parametri che consentano
di scegliere quale fra i vari cammini è quello giusto. Molte strategie sono state
fornite per risolvere questo problema. Alcune suggeriscono di scegliere i percorso
meno spigolosi e più smussati, altre sono basate sull’intersezione dei bordi, i
quali vengono identificati in una fase di pre-processazione. Queste intersezioni
vengono utilizzare per costruire vincoli che a seconda che vengano soddisfatti o
meno rendono un percorso migliore o peggiore rispetto ad un altro. In Fig:3.1
segnato in rosso è possibile vedere un allineamento, tenendo sempre a mente che
abbiamo come sequenze di input sequence1 = EDECE e sequence2 = ADCE
l’allineamento finale (rispetto a sequence2) porterà a: AD-CE, la sequenza è
identica all’originale tranne per il carattere “-” che indica una situazione di gap.
i
i
i
i