Trasformazioni omografiche

Le coordinate omogenee (sezione 1.4) permettono di rappresentare uno spettro molto ampio di trasformazioni unificando sotto lo stesso formalismo sia trasformazioni lineari (affini, rotazioni, traslazioni) che trasformazioni prospettiche.

Dati due piani distinti $\Pi_i$ e $\Pi_j$ si dice che essi sono riferiti a una trasformazione omografica (homographic transformation) quando esiste una corrispondenza biunivoca tale che:

Sia il piano $\Pi$ osservato da due viste differenti. Nello spazio $\mathbb{R}^{2}$ l'omografia (la trasformazione omografica) è rappresentata da equazioni del tipo:

\begin{displaymath}
\begin{array}{l}
u_j = \dfrac{h_0 u_i + h_1 v_i + h_2}{h_6 ...
...c{h_3 u_i + h_4 v_i + h_5}{h_6 u_i + h_7 v_i + h_8}
\end{array}\end{displaymath} (1.75)

dove $(u_i,v_i)$ sono coordinate dei punti appartenenti al piano $\Pi_i$, mentre $(u_j,v_j)$ sono punti del piano $\Pi_j$.

Per la sua particolare forma tale trasformazione è descrivibile attraverso una trasformazione lineare usando le coordinate omogenee (sezione 1.4):

\begin{displaymath}
\begin{bmatrix}
u_j  v_j  1
\end{bmatrix}=
\mathbf{H}^{\Pi}_{ij}
\begin{bmatrix}
u_i  v_i  1
\end{bmatrix}\end{displaymath} (1.76)

avendo definito
\begin{displaymath}
\mathbf{H}^{\Pi}_{ij} =
\begin{bmatrix}
h_0 & h_1 & h_2 \\
h_3 & h_4 & h_5 \\
h_6 & h_7 & h_8 \\
\end{bmatrix}\end{displaymath} (1.77)

Nello spazio $\mathbb{R}^{2}$ le omografie sono codificate da matrici $3 \times 3$ (omografie 2D): allo stesso modo è possibile definire trasformazioni omografiche per spazio di dimensione maggiore. Per compattezza e per mantenere il riferimento a una rappresentazione in memoria row-major, come in C, la matrice $\mathbf{H}^{\Pi}_{ij}$ è stata espressa usando i coefficienti $h_0 \ldots h_8$ piuttosto che la classica sintassi per indicare gli elementi della matrice.

Viene definita matrice omografica $\mathbf{H}^{\Pi}_{ij}$ la matrice che converte punti omogenei $\mathbf{x}_i$ appartenenti al piano $\Pi_i$ della immagine $i$ in punti $\mathbf{x}_j$ omogenei dell'immagine $j$ con la relazione

\begin{displaymath}
\mathbf{x}_j = \mathbf{H}^{\Pi}_{ij} \mathbf{x}_i
\end{displaymath} (1.78)

Essendo una relazione tra grandezze omogenee il sistema è definito a meno di un fattore moltiplicativo: qualunque multiplo dei parametri della matrice omografica definisce la medesima trasformazione perché qualunque multiplo dei vettori di ingresso o uscita soddisfa ugualmente la relazione (1.75). Come conseguenza di ciò i gradi di libertà del problema non sono 9, come in una generica trasformazione affine in $\mathbb{R}^{3}$, ma 8 in quanto è sempre possibile fissare un vincolo aggiuntivo sugli elementi della matrice. Esempi di vincoli usati spesso sono $h_8 = 1$ o $\Vert \mathbf{H} \Vert _{F}=1$. È da notare che $h_8 = 1$ non è generalmente un vincolo ottimo dal punto di vista computazionale in quanto l'ordine di grandezza che assume $h_8$ può essere molto diverso da quello degli altri elementi della matrice stessa e potrebbe generare singolarità, oltre al caso limite in cui $h_8$ potrebbe essere zero. Il vincolo alternativo $\Vert \mathbf{H} \Vert _{F}=1$, soddisfatto gratuitamente dell'uso di risolutori basati su fattorizzazioni SVD o QR, è invece computazionalmente ottimo.

Figura 1.6: Esempio di trasformazione Omografica: l'omografia mette in relazione piani in prospettiva con piani non in prospettiva.

Image fig_homography

Figura 1.7: Esempio di trasformazione Omografica: l'omografia mette in relazione piani “virtuali” tra loro.
Image fig_homography2

Le applicazioni che coinvolgono trasformazioni omografiche sono molteplici. Verranno in dettaglio affrontante nel capitolo 8 della camera pin-hole, ma in sintesi tali trasformazioni permettono la rimozione della prospettiva da piani in immagine, la proiezione di piani in prospettiva e associare i punti di piani osservati da punti di vista differenti. Un modo per ottenere delle trasformazioni prospettiche è mettere in relazione punti tra i piani che si vogliono trasformare e determinare in questo modo i parametri della matrice omografica (1.75) anche in maniera sovradimensionata, per esempio attraverso il metodo dei minimi quadrati. Un modo per ricavare i coefficienti sarà mostrato nell'equazione (8.52). Va ricordato che tale trasformazione, che lega punti di piani tra due viste prospettiche, vale solo e solamente per i punti dei piani considerati: l'omografia mette in relazione punti di piani tra loro, ma solo quelli. Qualsiasi punto non appartenente al piano verrà riproiettato in una posizione errata.

È facile vedere che ogni omografia è sempre invertibile e l'inversa della trasformazione è una trasformazione omografica anche essa:

\begin{displaymath}
\left( \mathbf{H}^{\Pi}_{ij} \right)^{-1} = \mathbf{H}^{\Pi}_{ji}
\end{displaymath} (1.79)

Una possibile forma per l'inversa dell'omografia (1.75) è

\begin{displaymath}
\begin{array}{l}
u_i = \dfrac{(h_5 h_7 - h_4 h_8)u_j + (h_1...
...u_j + (h_0 h_7 - h_1 h_6) v_j + h_1 h_3 - h_4 h_0 }
\end{array}\end{displaymath} (1.80)

e, essendo conosciuta a meno di un fattore moltiplicativo, non è stato fatto uso di divisioni nel ricavare i parametri della trasformazione inversa (unnormalized inverse homographic matrix).

È da segnalare che quando i due piani messi in relazione sono paralleli, allora $h_{6}=0 \wedge h_{7}=0$, la trasformazione omografica si riduce ad una trasformazione affine (affine transformation) rappresentata dalle classiche equazioni

\begin{displaymath}
\begin{array}{l}
u_j = h_0 u_i + h_1 v_i + h_2 \\
v_j = h_3 u_i + h_4 v_i + h_5
\end{array}\end{displaymath} (1.81)

già incontrate in precedenza.



Subsections
Paolo medici
2025-03-12