Dubbio phase unwrapping di Goldstein
Ciao ragazzi,
Per un progetto universitario devo sviluppare un programma C++ che implementi l'algoritmo di phase unwrapping di Goldstein qui descritto.
Sono al primo passo nel quale dovrei determinare i residui (descritto a pagina 5 del PDF linkato). In sostanza si tratta di scansionare la matrice di input delle fasi wrapped prendendo gruppi di 4 pixel in quadrati 2x2 e calcolare la somma delle differenze dei loro valori lungo un percorso in senso orario.
Prendiamo quindi l'esempio dato nel paper. La matrice di input è
Il residuo centrale è calcolato sull'array 2x2
Nel paper il residuo di questa matrice vale 1. Calcoliamolo:





Mmmm, il risultato non è quello atteso.
Analizziamo meglio il problema. Prendo una generica matrice 2x2
Il residuo sarà in generale

Il path è quindi sempre conservativo, anche se in tutti i paper ed esempi in giro per la rete si hanno residui pari a 1 e -1 (e proprio su questi si basano poi gli step successivi dell'algoritmo).
Altri paper in cui se ne parla sono
Il calcolo è banale, eppure sembro essere l'unico con questo problema. Cosa sto sbagliando?
Grazie in anticipo
Giulio
Per un progetto universitario devo sviluppare un programma C++ che implementi l'algoritmo di phase unwrapping di Goldstein qui descritto.
Sono al primo passo nel quale dovrei determinare i residui (descritto a pagina 5 del PDF linkato). In sostanza si tratta di scansionare la matrice di input delle fasi wrapped prendendo gruppi di 4 pixel in quadrati 2x2 e calcolare la somma delle differenze dei loro valori lungo un percorso in senso orario.
Prendiamo quindi l'esempio dato nel paper. La matrice di input è
- Codice: Seleziona tutto
0.0 0.1 0.2 0.3
0.0 0.0 0.3 0.4
0.9 0.8 0.6 0.5
0.8 0.8 0.7 0.6
Il residuo centrale è calcolato sull'array 2x2
- Codice: Seleziona tutto
d1
0.0 → 0.3
d4 ↑ ↓ d2
0.8 ← 0.6
d3
Nel paper il residuo di questa matrice vale 1. Calcoliamolo:





Mmmm, il risultato non è quello atteso.
Analizziamo meglio il problema. Prendo una generica matrice 2x2
- Codice: Seleziona tutto
a b
c d
Il residuo sarà in generale

Il path è quindi sempre conservativo, anche se in tutti i paper ed esempi in giro per la rete si hanno residui pari a 1 e -1 (e proprio su questi si basano poi gli step successivi dell'algoritmo).
Altri paper in cui se ne parla sono
- Questo a pag 22 (numero di pagina del PDF)
- Questo alla slide 10
- Qui a pagina 15 (numero di pagina del PDF)
- Qui un esempio di codice che implementa lo stesso algoritmo, tra la 41esima e la 53esima riga.
Il calcolo è banale, eppure sembro essere l'unico con questo problema. Cosa sto sbagliando?
Grazie in anticipo
Giulio