Subsections

Camere allineate

Nel caso di camere perfettamente allineate rispetto agli assi e aventi parametri intrinseci uguali (stessa focale e stesso principal point) le equazioni per la ricostruzione tridimensionale si semplificano enormemente.

In questa condizione le equazioni della proiezione prospettica si riducono a

\begin{displaymath}
\begin{array}{l}
u_i = - k_{u} \dfrac{ y - y_i }{ x - x_i ...
...= - k_{v} \dfrac{ z - z_i }{ x - x_i } + v_{0} \\
\end{array}\end{displaymath} (9.15)

con $(x,y,z)$ un punto in coordinate “mondo” (si veda la sezione successiva) e $(u_i,v_i)$ coordinate del punto proiettato sull'immagine i-esima. Il punto $(u_0,v_0)$ è il principal point che deve essere il medesimo per tutte le camere coinvolte e le camere si è supposto che siano tutte perfettamente allineate con la terna di assi.

Limitiamoci ora al solo caso stereoscopico: per semplicità verrà indicato con il pedice 1 la camera sinistra e 2 la camera destra. I vincoli di allineamento impongono $x_1=x_2=0$, $y_1=b$, $y_2=0$ e $z_1=z_2=0$ avendo posto, senza perdita di generalità, la camera destra al centro del sistema di riferimento. La quantità $b = y_1 - y_2$ è definita baseline.

La differenza $d = u_1 - u_2$ delle coordinate orizzontali delle proiezioni un medesimo punto visto nelle due immagini della coppia stereo si definisce disparità. Tale valore si ottiene inserendo i vincoli di allineamento nell'equazione (9.15) e risulta

\begin{displaymath}
u_1 - u_2 = d = k_u \frac{ b }{ x }
\end{displaymath} (9.16)

Invertendo questa semplice relazione e sostituendola in equazione (9.15) è possibile ricavare il punto in coordinate mondo $(x,y,z)$ corrispondente a un punto $(u_2,v_2)$ della camera destra con disparità $d$:

\begin{displaymath}
\begin{array}{l}
x = k_u \dfrac{b}{d} \\
y = - (u_2 - u_0...
...
z = - (v - v_0) \dfrac{k_u}{k_v} \dfrac{b}{d} \\
\end{array}\end{displaymath} (9.17)

È chiaro che deve essere $d \geq 0$ per punti mondo posti davanti alla coppia stereo.

Come è possibile notare, ogni elemento è determinato attraverso il fattore moltiplicativo $b$ della baseline, vero fattore di scala della ricostruzione, e dall'inverso della disparità $1/d$.

Triangolazione in coordinate mondo

Le coordinate $(x,y,z)$ così ottenute sono coordinate sensore, riferite a una configurazione stereoscopica particolare dove orientazione e posizionamento sono allineati e coincidenti con gli assi del sistema. Per passare da coordinate sensore al caso generico di coordinate mondo, con camere arbitrariamente orientate, bisogna applicare una trasformazione che porti le coordinate da sensore a mondo, ovvero la matrice di rotazione $\prescript{w}{}{\mathbf{R}}_{b}$ e la traslazione $(x_i,y_i,z_i)^{\top}$ coordinata del pin-hole, in modo da poter scrivere

\begin{displaymath}
\begin{bmatrix}
x  y  z
\end{bmatrix} = \prescript{w...
...nd{bmatrix} + \begin{bmatrix}
x_i  y_i  z_i
\end{bmatrix}\end{displaymath} (9.18)

Unendo l'equazione (9.17) con l'equazione (9.18), è possibile definire una matrice $\mathbf{M}$ in modo che la conversione tra punto immagine-disparità $(u_i,v,d)$ e coordinata mondo $(x,y,z)$ si possa scrivere in forma molto compatta come

\begin{displaymath}
\begin{bmatrix}
x  y  z
\end{bmatrix} = \frac{1}{d} ...
...nd{bmatrix} + \begin{bmatrix}
x_i  y_i  z_i
\end{bmatrix}\end{displaymath} (9.19)

dove i può rappresentare indistintamente la camera sinistra o la destra.

Paolo medici
2025-03-12