Subsections


Calibrazione implicita

L'idea base della Direct Linear Transformation proposta da Abdel-Aziz e Karara (AAK71) permette di calcolare direttamente i coefficienti delle matrici (8.50), (8.53) o della matrice (8.18) disinteressandosi completamente dei parametri e dalla struttura del modello della trasformazione prospettica. In tale articolo viene anche presentato un approccio per risolvere problemi sovradimensionati attraverso la tecnica della Pseudoinversa.

Dato il sistema (8.18) è necessario ricavare i 12 parametri della matrice proiettiva $\mathbf{P}$ per avere una calibrazione del sistema implicita ovvero dove non si conoscono i parametri (da 9 a 11 a seconda del modello) interni che han generato gli elementi della matrice stessa. Tale rappresentazione della camera pin-hole è ovviamente ideale (senza non-linearità dal modello).

La funzione prospettica scritta in forma implicita è

\begin{displaymath}
\begin{pmatrix}
u_i \\
v_i \\
1
\end{pmatrix} = \mat...
...x} \begin{pmatrix}
x_i \\
y_i \\
z_i \\
1
\end{pmatrix}\end{displaymath} (8.46)

dove gli elementi $p_{0} \ldots p_{11}$ sono scritti in ordine row-major. È possibile rigirare il sistema (8.46) in modo da avere 2 coppie di vincoli lineari per ogni punto di cui si conoscono le sue coordinate in immagine e in coordinate mondo:
\begin{displaymath}
\left[ \begin{array}{cccccccccccc}
x_i & y_i & z_i & 1 & 0...
...\begin{pmatrix}
p_0 \\
\vdots \\
p_{11}
\end{pmatrix} = 0
\end{displaymath} (8.47)

Tale tecnica si chiama DLT (direct linear transformation). Siccome ogni punto fornisce 2 vincoli, per ottenere questi 12 parametri sono necessari almeno 6 punti non linearmente dipendenti ovvero che non appartengano allo stesso piano e tantomeno alla medesima retta.

Essendo un sistema omogeneo, la sua soluzione sarà il sottospazio nullo di $\mathbb{R}^{12}$, kernel della matrice dei termini noti. Per questo motivo la matrice $\mathbf{P}$ è conosciuta a meno di un fattore moltiplicativo e ne consegue che ha solo 11 parametri liberi (sono anche di meno considerando che una telecamera moderna ha solo 3-4 parametri intrinseci e i 6 estrinseci). Avendo rigirato il sistema la propagazione del rumore sui punti non è più lineare e questa soluzione non soddisfa la massima verosimiglianza. La matrice $\mathbf{P}$ ottenuta attraverso questo procedimento, anche se nasconde la struttura interna del sensore, permette di proiettare un punto da coordinate mondo a coordinate immagine e da un punto in coordinate immagine ricavare la retta che sottende tale punto nel mondo.

Il risultato è generalmente instabile usando solo 6 punti e perciò la stima viene normalmente effettuata processando più punti del minimo e si sfruttano tecniche come la pseudoinversa per determinare una soluzione che minimizzi gli errori di misura.

Generalizzazione nel caso di coordinate omogenee

L'equazione 8.46 può essere generalizzata al caso di punto “immagine” in coordinate omogenee $(u_i, v_i, w_i)$:
\begin{displaymath}
\begin{pmatrix}
u_i \\
v_i \\
w_i
\end{pmatrix} \equ...
...P} \begin{pmatrix}
x_i \\
y_i \\
z_i \\
1
\end{pmatrix}\end{displaymath} (8.48)

Il problema è uguale a quello visto in precedenza, la soluzione omogenea esiste e l'equazione risolutiva omogenea (8.47) si generalizza in

\begin{displaymath}
{\tiny\left[ \begin{array}{cccccccccccc}
w_i x_i & w_i y_i...
...begin{pmatrix}
p_0 \\
\vdots \\
p_{11}
\end{pmatrix} = 0}
\end{displaymath} (8.49)

per ogni $i$.

Questa formulazione è utile quando il modello proiettivo non segue il modello pin-hole ma è sempre possibile ricavare le coordinate “camera” dei raggi ottici sottesi al pixel e pertanto disponibili in formato omogeneo.

Calcolo DLT dell'omografia

Solitamente per ridurre il numero di elementi della matrice $\mathbf{P}$ si può aggiungere il vincolo che tutti i punti coinvolti nel processo di calibrazione appartengano a un piano particolare (per esempio al terreno). Ciò significa porre la condizione $z_{i}=0$ $\forall i$, che implica l'eliminazione di una colonna (relativa all'asse $z$) della matrice che si riduce alla dimensione $3 \times 3$, diventa invertibile e si può definire omografica (vedi sezione 1.10).

Definiamo pertanto la matrice $\mathbf{H} = \mathbf{P}_Z$ (crf. con (8.30)) come

\begin{displaymath}
\lambda
\begin{pmatrix}
u_{i} \\
v_{i} \\
1
\end{pmatrix} = \mathbf{H} \begin{pmatrix}
x_{i} \\
y_{i} \\
1
\end{pmatrix}\end{displaymath} (8.50)

Come si è visto nella sezione 8.3 tale matrice è molto utile perché permette fra le altre cose di rimuovere la prospettiva dall'immagine, sintetizzando una visuale fronto-parallela del piano, con una trasformazione dal nome di rettificazione ortogonale, bird eye view o inverse perspective mapping. Tale trasformazione vale pertanto sia che si voglia rimuovere la prospettiva (perspective mapping o inverse perspective mapping), sia che si voglia riproiettare un piano tra due immagini (ground plane stereo), sia generare un immagine con differenti parametri (rettificazione, immagini panoramiche) attraverso l'utilizzo di un piano virtuale.

Come nel caso precedente è possibile trasformare la relazione non lineare (8.50) in modo da ottenere dei vincoli lineari:

\begin{displaymath}
\left[
\begin{array}{ccccccccc}
x_i & y_i & 1 & 0 & 0 & 0 &...
...ight] \begin{pmatrix}
h_0 \\
\vdots \\
h_8
\end{pmatrix} = 0
\end{displaymath} (8.51)

Siccome anche questa matrice è definita a meno di un fattore moltiplicativo, ha solo 8 gradi di libertà e si può pertanto porre un vincolo ulteriore.

Se si dispone di un risolutore di sistemi lineari abbastanza moderno il vincolo aggiuntivo $\vert\mathbf{H}\vert=1$ è automaticamente soddisfatto durante il calcolo del kernel della matrice dei termini noti (fattorizzazione QR o decomposizione SVD).

Un altro metodo più semplice ed intuivo consiste nel porre come vincolo aggiuntivo $h_{8}=1$: in questo modo, invece che risolvere un sistema omogeneo, si può risolvere un problema lineare tradizionale. Il sistema (8.50) si può anche in questo caso riarrangiare in modo da ottenere dei vincoli lineari nella forma:

\begin{displaymath}
\left[
\begin{array}{cccccccc}
x_{i} & y_{i} & 1 & 0 & 0 & 0...
...7}
\end{pmatrix}=
\begin{pmatrix}
u_{i} \\
v_{i}
\end{pmatrix}\end{displaymath} (8.52)

Questo è un sistema (non omogeneo) di due equazioni in 8 incognite $h_0 \ldots h_7 $ e ogni punto, di cui si conoscono sia la posizione nel mondo su un piano sia la posizione nell'immagine, fornisce 2 vincoli.

L'avere imposto $h_{8}=1$ tuttavia implica che il punto $(0,0)$ non può essere una singolarità dell'immagine (es. linea dell'orizzonte), e in generale non è una scelta ottima dal punto di vista della precisione della soluzione come già discusso in precedenza.

È importante notare che la soluzione dipende fortemente dalla normalizzazione scelta. La scelta $\vert H\vert=c$ può essere chiamata standard least-squares.

In entrambi i casi sono richiesti almeno 4 punti per ottenere un omografia $\mathbf{H}$ e ogni punto in più permette di ottenere una soluzione di errore inferiore. Questi sistemi, quando sovradimensionati, possono essere risolti usando il metodo della pseudoinversa 1.1.

La matrice $\mathbf{H}$ è definita da 4 parametri intrinseci e dai 6 parametri estrinseci. La separazione dei parametri intrinseci dai parametri estrinseci suggerisce di estrarre tali parametri in maniera indipendente in modo da irrobustire la calibrazione. Dopotutto i parametri intrinseci possono essere ricavati con un certo grado di precisione offline e valgono per tutti i possibili posizionamenti della camera (si veda poi 8.5.4).

Definiamo la matrice $\mathbf{R}_{Z}$ (cfr. con (8.31)) come

\begin{displaymath}
\lambda
\begin{pmatrix}
\tilde{u_{i}} \\
\tilde{v_{i}} \\
...
...hbf{R}_{Z}
\begin{pmatrix}
x_{i} \\
y_{i} \\
1
\end{pmatrix}\end{displaymath} (8.53)

avendo indicato con $(\tilde{u_{i}},\tilde{v_{i}})$ le cosidette coordinate immagine normalizzate (coordinante omogenee al punto $(\tilde{x}_i,\tilde{y}_i,\tilde{z}_i)^{\top}$ in coordinate camera).

La matrice $\mathbf{H}$ è definita a meno di un fattore di scala, mentre $\mathbf{R}_{Z}$ permette di definire la scala in quanto presenta ancora due colonne ortonormali. La conoscenza delle due colonne della matrice di rotazione permette di ricavare la terza e perciò tale calibrazione diventa valida per punti anche fuori dal piano $z=0$.

Come è stato fatto in precedenza, un sistema non-lineare in 3 equazioni omogenee, quando opportunamente riarrangiato, fornisce due vincoli lineari:

\begin{displaymath}
\begin{array}{l}
\mathbf{A}\mathbf{x}=0 \\
\mathbf{A} = \be...
...}, r_{6}, r_{7}, p_{x}, p_{y}, p_{z} \right)^{\top}
\end{array}\end{displaymath} (8.54)

(Abdel-Aziz e Karara (AAK71)). È dunque possibile costruire un sistema di $2 \times N$ equazioni per tutti gli $N$ punti di controllo, per cercar di ottenere le 9 incognite. La matrice è definita a meno di un fattore moltiplicativo, ma in questo caso la struttura interna della matrice $\mathbf{R}_{Z}$ può essere di aiuto per ricavare i parametri estrinseci (cfr. sezione 8.5.3). Di fatto le due colonne della matrice devono essere ortonormali:
\begin{displaymath}
\begin{array}{rl}
r^{2}_{0} + r^{2}_{3} + r^{2}_{6} & = 1 ...
...\
r_{0}r_{1} + r_{3}r_{4} + r_{6}r_{7} & = 0 \\
\end{array}\end{displaymath} (8.55)

Questi vincoli non lineari aggiuntivi sono frutto del fatto che tale matrice è definita esplicitamente da solo 6 parametri (3 rotazioni e la traslazione).

Rappresentazione geometrica

Le equazioni (8.47) e (8.51) si possono ricavare anche da considerazioni puramente geometriche in quanto i vettori immagine e camera devono essere paralleli (il fattore $lamba_i$ è puramente moltiplicativo e sul vettore al massimo incide una trasformazione affine):

\begin{displaymath}
\mathbf{p} \times \mathbf{P} \mathbf{x} = \mathbf{0}
\qquad
\mathbf{m}' \times \mathbf{H} \mathbf{m} = \mathbf{0}
\end{displaymath} (8.56)

Questa formulazione compatta è quella che normalmente viene indicata come DLT (HZ04) e si applica a tutte quelle trasformazioni lineari conosciute a meno di un fattore moltiplicativo per trasformare tale problema in un problema omogeneo.

Paolo medici
2025-03-12