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}}}
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}'}
È 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.
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}}
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).