Trasformazioni omografiche

Le coordinate omogenee (sezione 1.5) permettono di rappresentare uno spettro molto ampio di trasformazioni unificando sotto lo stesso formalismo trasformazioni lineari e affini, come rotazioni, traslazioni e cambi di scala, e trasformazioni prospettiche.

Una trasformazione omografica è una corrispondenza biunivoca tra due piani proiettivi che preserva le relazioni di incidenza tra punti e rette.

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 tra i punti dei due piani che preserva le relazioni di incidenza tra punti e rette. In particolare, ad ogni punto di $\Pi_i$ corrisponde un solo punto di $\Pi_j$ e ad ogni retta di $\Pi_i$ corrisponde una sola retta di $\Pi_j$.

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

dove $(u_i,v_i)$ sono coordinate dei punti appartenenti alla proiezione del piano $\Pi$ nell'immagine $i$, mentre $(u_j,v_j)$ sono le coordinate delle proiezioni degli stessi punti nell'immagine $j$.

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

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

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

Nello spazio $\mathbb{R}^{2}$ le omografie sono codificate da matrici $3 \times 3$ (omografie 2D): allo stesso modo è possibile definire trasformazioni omografiche per spazi 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 alla proiezione del piano $\Pi$ nell'immagine $i$ in punti $\mathbf{x}_j$ omogenei nell'immagine $j$ con la relazione

\begin{displaymath}
\mathbf{x}_j \sim \mathbf{H}^{\Pi}_{ij} \mathbf{x}_i.
\end{displaymath} (1.114)

Essendo una relazione tra grandezze omogenee il sistema è definito a meno di un fattore moltiplicativo: qualunque multiplo non nullo dei parametri della matrice omografica definisce la medesima trasformazione, poiché le coordinate omogenee sono definite a loro volta a meno di un fattore di scala. Come conseguenza di ciò i gradi di libertà del problema non sono 9, 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 ottimale 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, nel caso in cui $h_8=0$, tale normalizzazione non è possibile.

Il vincolo alternativo $\Vert \mathbf{H} \Vert _{F}=1$ non privilegia invece un particolare elemento della matrice ed è particolarmente naturale quando i parametri vengono ricavati mediante fattorizzazioni come la SVD. Infatti indicando con $\mathbf{h} = (h_0,\ldots,h_8)^{\top}$ il vettore dei parametri dell'omografia, ogni corrispondenza punto-punto fornisce dei vincoli sui coefficienti di $\mathbf{h}$. Come verrà mostrato in dettaglio nella sezione 9.5.1, tali vincoli possono essere raccolti in un sistema lineare omogeneo della forma $\mathbf{A}\mathbf{h}=0$. Poiché la soluzione nulla non è significativa, è necessario imporre un vincolo di normalizzazione, per esempio appunto $\Vert\mathbf{h}\Vert=1$, riconducendosi esattamente al problema dei sistemi lineari omogenei discusso nella sezione 1.1. In presenza di rumore la soluzione viene ottenuta selezionando il vettore singolare destro associato al minimo valore singolare della matrice $\mathbf{A}$.

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 affrontate nel capitolo 9 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 di 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.111) anche in maniera sovradimensionata, per esempio attraverso il metodo dei minimi quadrati. Un modo per ricavare i coefficienti sarà mostrato nell'equazione (9.58). Va ricordato che tale trasformazione, che lega punti di piani tra due viste prospettiche, vale solo e solamente per i punti del piano considerato: l'omografia mette in relazione punti di un piano tra loro, ma solo quelli. Qualsiasi punto non appartenente al piano verrà riproiettato in una posizione errata.

Poiché una trasformazione omografica è rappresentata da una matrice non singolare, essa è invertibile e l'inversa è una trasformazione omografica anch'essa:

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

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

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

e, essendo conosciuta a meno di un fattore moltiplicativo, non è necessario normalizzare la matrice inversa mediante il determinante (unnormalized inverse homographic matrix).

È da segnalare che quando l'omografia non introduce una componente prospettica, cioè quando $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.117)

già incontrate in precedenza.



Subsections
Paolo medici
2026-10-06