Articulo de referencia

Matriz de la cámara

En visión por computadora, una matriz de cámara o matriz de proyección (de cámara) es una 3 × 4 {\displaystyle 3\times 4} Matriz que describe el mapeo de una cámara estenopeica ...

En visión por computadora, una matriz de cámara o matriz de proyección (de cámara) es una3×4{\displaystyle 3\times 4}Matriz que describe el mapeo de una cámara estenopeica desde puntos 3D en el mundo a puntos 2D en una imagen.

Dejarincógnita{\displaystyle \mathbf {x} }Sea una representación de un punto 3D en coordenadas homogéneas (un vector de 4 dimensiones), y seay{\displaystyle \mathbf {y} }Sea una representación de la imagen de este punto en la cámara estenopeica (un vector tridimensional). Entonces se cumple la siguiente relación.

ydoincógnita{\displaystyle \mathbf {y} \sim \mathbf {C} \,\mathbf {x} }

dóndedo{\displaystyle \mathbf {C} }es la matriz de la cámara y la{\displaystyle \,\sim }El signo implica que los lados izquierdo y derecho son iguales excepto por una multiplicación por un escalar distinto de cero.k0{\displaystyle k\neq 0}:

y=kdoincógnita.{\displaystyle \mathbf {y} =k\,\mathbf {C} \,\mathbf {x} .}

Dado que la matriz de la cámara do{\displaystyle \mathbf {C} } Al estar involucrado en el mapeo entre elementos de dos espacios proyectivos , también puede considerarse un elemento proyectivo. Esto significa que solo tiene 11 grados de libertad, ya que cualquier multiplicación por un escalar distinto de cero da como resultado una matriz de cámara equivalente.

Derivación

El mapeo de las coordenadas de un punto 3D P a las coordenadas de imagen 2D de la proyección del punto sobre el plano de la imagen, según el modelo de cámara estenopeica , viene dado por

(y1y2)=Fincógnita3(incógnita1incógnita2){\displaystyle {\begin{pmatrix}y_{1}\\y_{2}\end{pmatrix}}={\frac {f}{x_{3}}}{\begin{pmatrix}x_{1}\\x_{2}\end{pmatrix}}}

dónde(incógnita1,incógnita2,incógnita3){\displaystyle (x_{1},x_{2},x_{3})}son las coordenadas 3D de P relativas a un sistema de coordenadas centrado en la cámara,(y1,y2){\displaystyle (y_{1},y_{2})}son las coordenadas de la imagen resultante, y f es la distancia focal de la cámara para la cual asumimos f > 0. Además, también asumimos que x 3 > 0 .

Para derivar la matriz de la cámara, la expresión anterior se reescribe en términos de coordenadas homogéneas. En lugar del vector 2D(y1,y2){\displaystyle (y_{1},y_{2})}consideramos el elemento proyectivo (un vector 3D)y=(y1,y2,1){\displaystyle \mathbf {y} =(y_{1},y_{2},1)}y en lugar de igualdad consideramos igualdad salvo escala por un número distinto de cero, denotado{\displaystyle \,\sim }. Primero, escribimos las coordenadas de la imagen homogénea como expresiones en las coordenadas 3D habituales.

(y1y21)=(Fincógnita3incógnita1Fincógnita3incógnita21)(incógnita1incógnita2incógnita3F){\displaystyle {\begin{pmatrix}y_{1}\\y_{2}\\1\end{pmatrix}}={\begin{pmatrix}{\frac {f}{x_{3}}}x_{1}\\{\frac {f}{x_{3}}}x_{2}\\1\end{pmatrix}}\sim {\begin{pmatrix}x_{1}\\x_{2}\\{\frac {x_{3}}{f}}\end{pmatrix}}}

Finalmente, las coordenadas 3D también se expresan en una representación homogénea.incógnita{\displaystyle \mathbf {x} }y así es como aparece la matriz de la cámara:

(y1y21)(10000100001F0)(incógnita1incógnita2incógnita31){\displaystyle {\begin{pmatrix}y_{1}\\y_{2}\\1\end{pmatrix}}\sim {\begin{pmatrix}1&0&0&0\\0&1&0&0\\0&0&{\frac {1}{f}}&0\end{pmatrix}}\,{\begin{pmatrix}x_{1}\\x_{2}\\x_{3}\\1\end{pmatrix}}} o ydoincógnita{\displaystyle \mathbf {y} \sim \mathbf {C} \,\mathbf {x} }

dóndedo{\displaystyle \mathbf {C} }es la matriz de la cámara, que aquí viene dada por

do=(10000100001F0){\displaystyle \mathbf {C} ={\begin{pmatrix}1&0&0&0\\0&1&0&0\\0&0&{\frac {1}{f}}&0\end{pmatrix}}},

y la matriz de cámara correspondiente ahora se convierte en

do=(10000100001F0)(F0000F000010){\displaystyle \mathbf {C} ={\begin{pmatrix}1&0&0&0\\0&1&0&0\\0&0&{\frac {1}{f}}&0\end{pmatrix}}\sim {\begin{pmatrix}f&0&0&0\\0&f&0&0\\0&0&1&0\end{pmatrix}}}

El último paso es consecuencia dedo{\displaystyle \mathbf {C} }siendo él mismo un elemento proyectivo.

La matriz de la cámara obtenida aquí puede parecer trivial, ya que contiene muy pocos elementos distintos de cero. Esto depende en gran medida de los sistemas de coordenadas elegidos para los puntos 3D y 2D. Sin embargo, en la práctica, son comunes otras formas de matrices de cámara, como se mostrará más adelante.

Posición de la cámara

La matriz de la cámarado{\displaystyle \mathbf {C} }El derivado en la sección anterior tiene un espacio nulo que está generado por el vector

norte=(0001){\displaystyle \mathbf {n} ={\begin{pmatrix}0\\0\\0\\1\end{pmatrix}}}

Esta es también la representación homogénea del punto 3D con coordenadas (0,0,0), es decir, el "centro de la cámara" (también conocido como pupila de entrada ; la posición del orificio de una cámara estenopeica ) está en O. Esto significa que el centro de la cámara (y solo este punto) no puede ser mapeado a un punto en el plano de la imagen por la cámara (o, equivalentemente, se mapea a todos los puntos de la imagen, ya que cada rayo en la imagen pasa por este punto).

Para cualquier otro punto 3D conincógnita3=0{\displaystyle x_{3}=0}, el resultadoydoincógnita{\displaystyle \mathbf {y} \sim \mathbf {C} \,\mathbf {x} }está bien definido y tiene la formay=(y1y20){\displaystyle \mathbf {y} =(y_{1}\,y_{2}\,0)^{\top }}Esto corresponde a un punto en el infinito en el plano de la imagen proyectiva (aunque, si se considera que el plano de la imagen es un plano euclidiano , no existe un punto de intersección correspondiente).

Matriz de cámara normalizada y coordenadas de imagen normalizadas

La matriz de la cámara derivada anteriormente se puede simplificar aún más si asumimos que f = 1 :

do0=(100001000010)=(I0){\displaystyle \mathbf {C} _{0}={\begin{pmatrix}1&0&0&0\\0&1&0&0\\0&0&1&0\end{pmatrix}}=\left({\begin{array}{c|c}\mathbf {I} &\mathbf {0} \end{array}}\right)}

dóndeI{\displaystyle \mathbf {I} }aquí denota un3×3{\displaystyle 3\times 3}matriz identidad . Tenga en cuenta que3×4{\displaystyle 3\times 4}matrizdo{\displaystyle \mathbf {C} }aquí se divide en una concatenación de un3×3{\displaystyle 3\times 3}matriz y un vector tridimensional. La matriz de la cámarado0{\displaystyle \mathbf {C} _{0}}a veces se la denomina forma canónica .

Hasta ahora, todos los puntos en el mundo 3D se han representado en un sistema de coordenadas centrado en la cámara , es decir, un sistema de coordenadas cuyo origen se encuentra en el centro de la cámara (la ubicación del orificio de una cámara estenopeica ). Sin embargo, en la práctica, los puntos 3D pueden representarse en términos de coordenadas relativas a un sistema de coordenadas arbitrario (X1', X2', X3'). Suponiendo que los ejes de coordenadas de la cámara (X1, X2, X3) y los ejes (X1', X2', X3') son de tipo euclidiano (ortogonales e isotrópicos), existe una única transformación euclidiana 3D (rotación y traslación) entre los dos sistemas de coordenadas. En otras palabras, la cámara no necesariamente se encuentra en el origen al observar a lo largo del eje z .

Las dos operaciones de rotación y traslación de coordenadas 3D se pueden representar como las dos4×4{\displaystyle 4\times 4}matrices

(R001){\displaystyle \left({\begin{array}{c|c}\mathbf {R} &\mathbf {0} \\\hline \mathbf {0} &1\end{array}}\right)}y(It01){\displaystyle \left({\begin{array}{c|c}\mathbf {I} &\mathbf {t} \\\hline \mathbf {0} &1\end{array}}\right)}

dóndeR{\displaystyle \mathbf {R} }es un3×3{\displaystyle 3\times 3}matriz de rotación yt{\displaystyle \mathbf {t} }es un vector de traslación tridimensional. Cuando la primera matriz se multiplica por la representación homogénea de un punto 3D, el resultado es la representación homogénea del punto rotado, y la segunda matriz realiza una traslación. Al realizar las dos operaciones en secuencia, es decir, primero la rotación y luego la traslación (con el vector de traslación dado en el sistema de coordenadas ya rotado), se obtiene una matriz combinada de rotación y traslación.

(Rt01){\displaystyle \left({\begin{array}{c|c}\mathbf {R} &\mathbf {t} \\\hline \mathbf {0} &1\end{array}}\right)}

Suponiendo queR{\displaystyle \mathbf {R} }yt{\displaystyle \mathbf {t} }son precisamente las rotaciones y traslaciones que relacionan los dos sistemas de coordenadas (X1,X2,X3) y (X1',X2',X3') anteriores, esto implica que

incógnita=(Rt01)incógnita{\displaystyle \mathbf {x} =\left({\begin{array}{c|c}\mathbf {R} &\mathbf {t} \\\hline \mathbf {0} &1\end{array}}\right)\mathbf {x} '}

dóndeincógnita{\displaystyle \mathbf {x} '}es la representación homogénea del punto P en el sistema de coordenadas (X1',X2',X3').

Suponiendo también que la matriz de la cámara viene dada pordo0{\displaystyle \mathbf {C} _{0}}, el mapeo de las coordenadas en el sistema (X1,X2,X3) a coordenadas de imagen homogéneas se convierte en

ydo0incógnita=(I0)(Rt01)incógnita=(Rt)incógnita{\displaystyle \mathbf {y} \sim \mathbf {C} _{0}\,\mathbf {x} =\left({\begin{array}{c|c}\mathbf {I} &\mathbf {0} \end{array}}\right)\,\left({\begin{array}{c|c}\mathbf {R} &\mathbf {t} \\\hline \mathbf {0} &1\end{array}}\right)\mathbf {x} '=\left({\begin{array}{c|c}\mathbf {R} &\mathbf {t} \end{array}}\right)\,\mathbf {x} '}

En consecuencia, la matriz de la cámara que relaciona los puntos en el sistema de coordenadas (X1',X2',X3') con las coordenadas de la imagen es

donorte=(Rt){\displaystyle \mathbf {C} _{N}=\left({\begin{array}{c|c}\mathbf {R} &\mathbf {t} \end{array}}\right)}

una concatenación de una matriz de rotación 3D y un vector de traslación 3D.

Este tipo de matriz de cámara se denomina matriz de cámara normalizada ; asume una distancia focal de 1 y que las coordenadas de la imagen se miden en un sistema de coordenadas cuyo origen se encuentra en la intersección entre el eje X3 y el plano de la imagen, y que tiene las mismas unidades que el sistema de coordenadas 3D. Las coordenadas de imagen resultantes se denominan coordenadas de imagen normalizadas .

La posición de la cámara

Nuevamente, el espacio nulo de la matriz de cámara normalizada,donorte{\displaystyle \mathbf {C} _{N}}Descrito anteriormente, está abarcado por el vector de 4 dimensiones.

norte=(R1t1)=(norte~1){\displaystyle \mathbf {n} ={\begin{pmatrix}-\mathbf {R} ^{-1}\,\mathbf {t} \\1\end{pmatrix}}={\begin{pmatrix}{\tilde {\mathbf {n} }}\\1\end{pmatrix}}}

Estas son también, de nuevo, las coordenadas del centro de la cámara, ahora relativas al sistema (X1',X2',X3'). Esto se puede ver aplicando primero la rotación y luego la traslación al vector tridimensional.norte~{\displaystyle {\tilde {\mathbf {n} }}}y el resultado es la representación homogénea de coordenadas 3D (0,0,0).

Esto implica que el centro de la cámara (en su representación homogénea) se encuentra en el espacio nulo de la matriz de la cámara, siempre que esté representado en términos de coordenadas 3D relativas al mismo sistema de coordenadas al que se refiere la matriz de la cámara.

La matriz de cámara normalizadadonorte{\displaystyle \mathbf {C} _{N}}ahora se puede escribir como

donorte=R(IR1t)=R(Inorte~){\displaystyle \mathbf {C} _{N}=\mathbf {R} \,\left({\begin{array}{c|c}\mathbf {I} &\mathbf {R} ^{-1}\,\mathbf {t} \end{array}}\right)=\mathbf {R} \,\left({\begin{array}{c|c}\mathbf {I} &-{\tilde {\mathbf {n} }}\end{array}}\right)}

dóndenorte~{\displaystyle {\tilde {\mathbf {n} }}}son las coordenadas 3D de la cámara relativas al sistema (X1',X2',X3').

Matriz de cámara general

Dada la asignación producida por una matriz de cámara normalizada, las coordenadas de imagen normalizadas resultantes pueden transformarse mediante una homografía 2D arbitraria . Esto incluye traslaciones y rotaciones 2D, así como escalado (isotrópico y anisotrópico), pero también transformaciones de perspectiva 2D generales . Dicha transformación puede representarse como una3×3{\displaystyle 3\times 3}matrizH{\displaystyle \mathbf {H} }que mapea las coordenadas de imagen normalizadas homogéneasy{\displaystyle \mathbf {y} }a las coordenadas de la imagen transformada homogéneay{\displaystyle \mathbf {y} '}:

y=Hy{\displaystyle \mathbf {y} '=\mathbf {H} \,\mathbf {y} }

Al insertar la expresión anterior para las coordenadas de imagen normalizadas en términos de las coordenadas 3D se obtiene

y=Hdonorteincógnita{\displaystyle \mathbf {y} '=\mathbf {H} \,\mathbf {C} _{N}\,\mathbf {x} '}

Esto produce la forma más general de matriz de cámara.

do=Hdonorte=H(Rt){\displaystyle \mathbf {C} =\mathbf {H} \,\mathbf {C} _{N}=\mathbf {H} \,\left({\begin{array}{c|c}\mathbf {R} &\mathbf {t} \end{array}}\right)}

Véase también

Referencias

  • Richard Hartley y Andrew Zisserman (2003). Geometría de múltiples vistas en visión por computadora . Cambridge University Press. ISBN 0-521-54051-8.