Trasformazione di Helmert

Niente fonti!
Questa voce o sezione sull'argomento matematica non cita le fonti necessarie o quelle presenti sono insufficienti.
Questa voce è da wikificare
Questa voce o sezione sull'argomento matematica non è ancora formattata secondo gli standard.
Questa voce o sezione sull'argomento matematica ha problemi di struttura e di organizzazione delle informazioni.
Motivo: Manca una sezione iniziale

Informazioni teoriche

Per rototraslazione e variazione di scala nel piano intendiamo un cambiamento di coordinate cartesiane da un sistema di riferimento ad un altro con alterazione delle unità di misura e quindi di scala. Tutto ciò è possibile grazie ad una trasformazione lineare composta da una traslazione e da una rotazione, accompagnate da un fattore di riduzione o ingrandimento. Questo problema prende il nome di trasformazione di Helmert a sette parametri, ed è individuato dall'espressione:

X = λ R X + T {\displaystyle {\vec {X}}'=\lambda R{\vec {X}}+{\vec {T}}}

dove i parametri da determinare sono tre per la rotazione, tre per la traslazione ed uno per le unità di misura.

In particolare: R è la matrice di rotazione rispetto ai tre assi (matrice 3x3), T {\displaystyle {\vec {T}}} è il vettore di traslazione (3 componenti) e λ {\displaystyle \lambda } è il fattore di scala, mentre X {\displaystyle {\vec {X}}} e X {\displaystyle {\vec {X}}'} rappresentano rispettivamente le coordinate dei punti prima e dopo la trasformazione.

Per comodità consideriamo uno spazio di lavoro bidimensionale, quindi la matrice R sarà una 2x2 e dipenderà da un solo parametro, 𝛼, che individua l’angolo di rotazione e T {\displaystyle {\vec {T}}} diventerà un vettore a due componenti ( T x {\displaystyle T_{x}} e T y {\displaystyle T_{y}} ). R {\displaystyle R} è della forma:

R ( α ) = ( c o s ( α ) s i n ( α ) s i n ( α ) c o s ( α ) ) {\displaystyle R(\alpha )={\begin{pmatrix}cos(\alpha )&-sin(\alpha )\\sin(\alpha )&cos(\alpha )\end{pmatrix}}}

A questo punto si vuole stimare i valori dei parametri α {\displaystyle \alpha } , λ {\displaystyle \lambda } , T x {\displaystyle T_{x}} , T y {\displaystyle T_{y}} che governano la trasformazione tramite il metodo dei minimi quadrati. Prima è però necessario svolgere un processo di linearizzazione del sistema rispetto ai parametri α {\displaystyle \alpha } e λ {\displaystyle \lambda } , ponendo a = λ cos α {\displaystyle a=\lambda \cos \alpha } , b = λ sin α {\displaystyle b=\lambda \sin \alpha } e b a = tan α {\displaystyle {\frac {b}{a}}=\tan \alpha } . Si ottiene:

λ R ( α ) = ( a b b a ) {\displaystyle \lambda R(\alpha )={\begin{pmatrix}a&-b\\b&a\end{pmatrix}}}

Dunque, conoscendo le coordinate X {\displaystyle {\vec {X}}} e X {\displaystyle {\vec {X}}'} di un certo numero di punti (più sono minore sarà l’errore) e utilizzando queste supposizioni/semplificazioni:

  • le coordinate X {\displaystyle {\vec {X}}} note senza errori;
  • le coordinate X {\displaystyle {\vec {X}}'} incorrelate e con medesima varianza;
  • utilizzo delle coordinate baricentriche;

la trasformazione diventa:

X = ( a b b a ) X + T {\displaystyle {\vec {X}}'={\begin{pmatrix}a&-b\\b&a\end{pmatrix}}{\vec {X}}+{\vec {T}}}

Calcolo delle coordinate baricentriche

In prima battuta si calcolano le coordinate del baricentro dei punti nei due sistemi di riferimento:

X B = 1 N x p {\displaystyle {\vec {X}}_{B}={\frac {1}{N}}\sum {\vec {x}}_{p}} X B = 1 N x p {\displaystyle {\vec {X}}_{B}'={\frac {1}{N}}\sum {\vec {x}}_{p}'}

Successivamente si calcolano le coordinate baricentriche di tutti gli N punti relativamente al loro baricentro:

W p = X p X B {\displaystyle {\vec {W}}_{p}={\vec {X}}p-{\vec {X}}_{B}} W p = X p X B {\displaystyle {\vec {W}}_{p}'={\vec {X}}p'-{\vec {X}}_{B}'}

Nuova forma per le trasformazione di Helmert

È possibile ora modificare la prima equazione mediante l’utilizzo delle coordinate baricentriche:

X p = λ R X p + T W p = λ R ( α ) W p X B + T + λ R ( α ) X B {\displaystyle {\vec {X}}_{p}'=\lambda R{\vec {X}}_{p}+{\vec {T}}\longrightarrow {\vec {W}}_{p}'=\lambda R(\alpha ){\vec {W}}_{p}-{\vec {X}}_{B}'+{\vec {T}}+\lambda R(\alpha ){\vec {X}}_{B}}

la quale, ponendo T 0 = X B + T + λ R ( α ) X B {\displaystyle {\vec {T}}_{0}=-{\vec {X}}_{B}'+{\vec {T}}+\lambda R(\alpha ){\vec {X}}_{B}} risulta:

W p = λ R ( α ) W p + T 0 {\displaystyle {\vec {W}}_{p}'=\lambda R(\alpha ){\vec {W}}_{p}+{\vec {T}}_{0}}

A questo punto il problema può essere ricondotto ad un’equazione matriciale del tipo:

y = A x {\displaystyle {\vec {y}}=A{\vec {x}}}

Esplicitando per ogni punto e ricordando il precedente cambio di variabile otteniamo:

{ W p x = W p x a W p y b + T 0 x W p y = W p y a + W p x b + T 0 y {\displaystyle {\begin{cases}{\vec {W}}_{px}'={\vec {W}}_{px}a-{\vec {W}}_{py}b+{\vec {T}}_{0x}\\{\vec {W}}_{py}'={\vec {W}}_{py}a+{\vec {W}}_{px}b+{\vec {T}}_{0y}\end{cases}}}

ovvero:

( W 1 x W 1 y . . . W p x W p y . . . W N x W N y ) = ( W 1 x W 1 y 1 0 W 1 y W 1 x 0 1 . . . W p x W p y 1 0 W p y W p x 0 1 . . . W N x W N y 1 0 W 1 y W 1 x 0 1 ) {\displaystyle {\begin{pmatrix}{\vec {W}}_{1x}'\\{\vec {W}}_{1y}'\\...\\{\vec {W}}_{px}'\\{\vec {W}}_{py}'\\...\\{\vec {W}}_{Nx}'\\{\vec {W}}_{Ny}'\end{pmatrix}}={\begin{pmatrix}{\vec {W}}_{1x}&-{\vec {W}}_{1y}&1&0\\{\vec {W}}_{1y}&{\vec {W}}_{1x}&0&1\\...\\{\vec {W}}_{px}&-{\vec {W}}_{py}&1&0\\{\vec {W}}_{py}&{\vec {W}}_{px}&0&1\\...\\{\vec {W}}_{Nx}&-{\vec {W}}_{Ny}&1&0\\{\vec {W}}_{1y}&{\vec {W}}_{1x}&0&1\end{pmatrix}}} ( a b T 0 x T 0 y ) {\displaystyle *{\begin{pmatrix}a\\b\\{\vec {T}}_{0x}\\{\vec {T}}_{0y}\end{pmatrix}}}

dove y {\displaystyle {\vec {y}}} rappresenta il vettore contenente i termini noti, A {\displaystyle A} la matrice dei coefficienti e x {\displaystyle {\vec {x}}} il vettore dei parametri da stimare.

Stima dei parametri

Per la risoluzione del sistema è conveniente normalizzarlo, moltiplicando ambo i membri per la trasposta di A {\displaystyle A} ( A T {\displaystyle A^{T}} ) :

A T A x = A T y {\displaystyle A^{T}A{\vec {x}}=A^{T}{\vec {y}}}

Allora, definendo con N = A T A {\displaystyle N=A^{T}A} la matrice normale, i prodotti A T A {\displaystyle A^{T}A} e A T y {\displaystyle A^{T}{\vec {y}}} risultano essere:

N = A T A = ( d 0 0 0 0 d 0 0 0 0 N 0 0 0 0 N ) {\displaystyle N=A^{T}A={\begin{pmatrix}d&0&0&0\\0&d&0&0\\0&0&N&0\\0&0&0&N\\\end{pmatrix}}} A T y = ( p q 0 0 ) {\displaystyle A^{T}{\vec {y}}={\begin{pmatrix}p\\q\\0\\0\\\end{pmatrix}}}

con :

d = p = 1 N ( W p x 2 + W p y 2 ) {\displaystyle d=\sum _{p=1}^{N}(W_{px}^{2}+W_{py}^{2})}

p = p = 1 N ( W p x W p x + W p y W p y ) {\displaystyle p=\sum _{p=1}^{N}(W_{px}W_{px}'+W_{py}W_{py}')}

p = p = 1 N ( W p y W p x W p x W p y ) {\displaystyle p=\sum _{p=1}^{N}(W_{py}W_{px}'-W_{px}W_{py}')}

La matrice normale è diagonale in quanto le coordinate baricentriche hanno media nulla; le componenti T 0 x {\displaystyle {\vec {T}}_{0x}} e T 0 y {\displaystyle {\vec {T}}_{0y}} sono pari a zero per il medesimo motivo.

Per la stima dei parametri non ci resta che determinare il sistema. Si ottengono le seguenti relazioni:

a ^ = p q {\displaystyle {\hat {a}}={\frac {p}{q}}} b ^ = q d {\displaystyle {\hat {b}}={\frac {q}{d}}} T 0 x = 0 {\displaystyle {\vec {T}}_{0x}=0} T 0 x = 0 {\displaystyle {\vec {T}}_{0x}=0}

Grazie a queste è possibile stimare i parametri α {\displaystyle \alpha } e λ {\displaystyle \lambda }  :

λ ^ = a ^ 2 + b ^ 2 {\displaystyle {\hat {\lambda }}={\sqrt {{\hat {a}}^{2}+{\hat {b}}^{2}}}} α ^ = arctan a ^ b ^ {\displaystyle {\hat {\alpha }}=\arctan {\frac {\hat {a}}{\hat {b}}}}

mentre una stima del vettore traslazione è T = X B λ R X B {\displaystyle {\vec {T}}={\vec {X}}_{B}'-{\lambda }R{\vec {X}}_{B}}

Calcolo degli scarti e delle varianza

Definiamo gli scarti come differenza tra il valore reale e quello stimato:

ν = y A x ^ {\displaystyle {\vec {\nu }}={\vec {y}}-A{\vec {\hat {x}}}}

Per calcolare la varianza a posteriori si usa la formula:

σ 0 2 ^ = ν T ν r {\displaystyle {\hat {\sigma _{0}^{2}}}={\frac {\nu ^{T}\nu }{r}}}

con r = (numero di misure) - (numero parametri).