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).