Pin-Hole Camera

In questo capitolo viene affrontato il problema di descrivere il processo attraverso il quale la luce incidente sugli oggetti viene impressa su un sensore digitale. Tale concetto è fondamentale nell'elaborazione delle immagini in quando fornisce la relazione che lega i punti di un'immagine con la loro posizione nel mondo, ovvero permette di determinare la zona del mondo associata a un pixel dell'immagine o, viceversa, individuare l'area dell'immagine che raccoglie una determinata regione in coordinate mondo.

Il modello proiettivo universalmente accettato, detto della Pin-Hole Camera, è basato su semplici rapporti geometrici.

In figura 7.1 è mostrato uno schema molto semplificato di come avviene la formazione dell'immagine sul sensore. Il punto osservato $(x_i,y_i,z_i)^{\top}$, espresso in coordinate camera, viene proiettato su una cella del sensore $(\tilde{u}_i, \tilde{v}_i)^{\top}$. Tutti questi raggi passano per uno stesso punto: il punto focale (pin-hole).

Figura: Il modello di camera pin-hole. Un punto mondo in coordinate camera viene proiettato sul piano immagine.
Image fig_pinhole

Analizzando la figura 7.1 si vede come i rapporti tra triangoli simili generati dai raggi ottici descrivono l'equazione che permette di proiettare un generico punto $(x_{i},y_{i},z_{i})^{\top}$, espresso in coordinate camera (uno dei sistemi di riferimento in cui si può operare), in coordinate sensore $(\tilde{u}_{i}, \tilde{v}_{i})^{\top}$:

\begin{displaymath}
\begin{bmatrix}
\tilde{u}_{i} \\
\tilde{v}_{i}
\end{bmatrix} = \frac{f}{z_{i}} \begin{bmatrix}
x_{i} \\
y_{i}
\end{bmatrix}\end{displaymath} (7.1)

dove $f$ è la distanza focale (distanza tra il pin-hole e il sensore). È da precisare che le coordinate $(x_{i},y_{i},z_{i})^{\top}$, espresse in coordinate camera, in questo libro seguono la regola della mano sinistra (molto usata in computer graphics), contrapposta alla regola della mano destra (più usata in applicazioni robotiche) invece scelta per esprimere le coordinate mondo. L'utilizzo della coordinata $z$ per esprimere la distanza è un obbligo puramente matematico a causa delle trasformazioni che verranno presentate fra poco.

Le coordinate sensore $(\tilde{u}_{i}, \tilde{v}_{i})^{\top}$ non sono le coordinate immagine ma sono ancora delle coordinate “intermedie”. È quindi necessario applicare una ulteriore trasformazione per ottenere le coordinate immagine:

\begin{displaymath}
\begin{bmatrix}
u_{i} \\
v_{i}
\end{bmatrix} = \begin{bmatr...
...
\end{bmatrix} +
\begin{bmatrix}
u_{0} \\
v_{0}
\end{bmatrix}\end{displaymath} (7.2)

dove le coordinate $(u_{0}, v_{0})$ (principal point) tengono conto dello scostamento dell'origine delle coordinate nell'immagine memorizzata rispetto alla proiezione del punto focale sul sensore.

$D_{u}$ e $D_{v}$ sono fattori di conversione tra le unità del sistema di riferimento del sensore (metri) con quelle immagine (pixel) e tengono conto dei diversi fattori di conversione coinvolti. Con l'avvento dei sensori digitali normalmente $D_{u} = D_{v}$.

In mancanza di informazioni, reperibili dai vari datasheet, su $f$, $D_{u}$ e $D_{v}$, c'è la tendenza ad accorpare queste variabili in due nuove variabili chiamate $k_u$ e $k_v$, le lunghezze focali efficaci misurate in pixel, ottenibili in maniera empirica dalle immagini, come si vedrà nella sezione sulla calibrazione. Queste variabili, coinvolte nella conversione tra coordinate sensore e coordinate immagine, sono tra loro in relazione come

\begin{displaymath}
\begin{array}{l}
k_{u} = D_{u} f = \frac{u_0}{ \tan { \alpha...
..._{v} = D_{v} f = \frac{v_0}{ \tan { \alpha_{v} } }
\end{array}\end{displaymath} (7.3)

con $\alpha_{u}$ e $\alpha_{v}$ angoli approssimabili alla semiampiezza dell'apertura della camera (orizzontale e verticale rispettivamente). Quando l'ottica non è distorta e il sensore ha pixel quadrati, $k_u$ e $k_v$ tendono ad assumere lo stesso valore.

A causa della presenza del rapporto, l'equazione (7.1) non è chiaramente rappresentabile in un sistema lineare. Tuttavia risulta possibile modificare tale scrittura, aggiungendo un incognita $\lambda$ e un vincolo ulteriore, per poter rappresentare in forma di sistema lineare tale equazione. Per fare questo verrà sfruttata la teoria presentata in sezione 1.4 riguardante le coordinate omogenee. Grazie alle coordinate omogenee si mostra facilmente che il sistema (7.1) si può scrivere come

\begin{displaymath}
\begin{bmatrix}
\lambda~u_{i} \\
\lambda~v_{i} \\
\lambda ...
...{K}
\begin{bmatrix}
x_{i} \\
y_{i} \\
z_{i} \\
\end{bmatrix}\end{displaymath} (7.4)

risolto per $\lambda = z_{i}$. Per questo motivo $\lambda$ si sottointende e si usano invece le coordinate omogenee: per ottenere il punto in coordinate non omogenee bisogna infatti dividere le prime due coordinate per la terza, ottenendo l'equazione (7.1). L'utilizzo delle coordinate omogenee permette di rendere implicita la divisione per la coordinata $z$.

La matrice $\mathbf{K}$, unendo le trasformazioni (7.2) e (7.3), può essere scritta come:

\begin{displaymath}
\mathbf{K} =
\begin{bmatrix}
\dfrac{ u_0 }{ \tan { \alpha_{u...
...} & u_{0} \\
0 & k_{v} & v_{0} \\
0 & 0 & 1 \\
\end{bmatrix}\end{displaymath} (7.5)

Tale matrice non dipendendo, come vedremo successivamente, da fattori che non siano altri che quelli della camera stessa, è detta matrice dei fattori intrinseci. La matrice $\mathbf{K}$ è una matrice triangolare superiore, definita da 5 parametri.

Con i sensori digitali moderni e la costruzione di telecamere non manualmente ma con macchine a controllo numerico precise, è possibile porre lo skew factor $k_{\gamma}$, un fattore che tiene conto del fatto che l'angolo tra gli assi nel sensore non sia esattamente 90 gradi, a zero.

Ponendo $k_{\gamma}=0$, l'inversa della matrice (7.5) si può scrivere come:

\begin{displaymath}
\mathbf{K}^{-1} =
\begin{bmatrix}
\dfrac{1}{k_{u}} & 0 & -\d...
...{k_{v}} & -\dfrac{v_{0}}{k_{v}} \\
0 & 0 & 1 \\
\end{bmatrix}\end{displaymath} (7.6)

La conoscenza di questi parametri (vedi sezione 7.5 riguardante la calibrazione) determina la possibilità di trasformare un punto da coordinate camera a coordinate immagine o, viceversa, generare la retta in coordinate camera sottesa a un punto immagine.

Con questa modellazione, in ogni caso, non si è tenuto conto dei contributi dovuti alla distorsione della lente. Il modello della pin-hole camera è infatti valido solamente se le coordinate immagine che si utilizzano si riferiscono a immagini senza distorsione.



Subsections
Paolo medici
2017-11-02