lunes, 17 de marzo de 2014

Geometría en la visión por computador, calibrado de la cámara I


En esta entrada voy a tratar algunos aspectos de la geometría que hay detrás de la visión por computador, en este caso en concreto voy a abordar la relación que hay entre las imágenes capturadas por un cámara en el mundo real, y la representación o proyección que se tiene en el plano de la imagen. Esto nos resultará muy útil a la hora de poder calibrar una cámara. 

Primeramente asumimos que  los rayos luminosos entran en la cámara y quedan enfocados en un punto denominado centro de proyección. Este centro será el origen de un sistema de referencia de tres dimensiones, por tanto este centro, denominado C, tendrá coordenadas $C(0,0,0)$. Justo delante del centro de proyección tenemos el plano de la imagen, que es el plano que contiene la proyección de la imagen que la cámara está "observando", como puede verse en la figura está se encuentra a una distancia f del centro del proyección, en nuestra representación sobre el eje Z. El plano de la imagen va a tener su propio sistema de coordenadas, formado por los vectores unitarios $(u,v)$. Ahora un punto de un objeto del mundo real, con coordenadas $p(x,y,z)$ - según sistema de referencia en centro de proyección - se proyecta en el plano de la imagen con coordenadas $p(u_{c},v_{c})$, según sistema de referencia $(u,v)$.




Los triángulos formados por los vértices C(0,0,0), $p(u_{c},v_{c})$, p(x,y,z) y (u_{0},v_{0}), son semejantes por lo que:

$\frac{f}{z}=\frac{u_p}{x}$

$\frac{v_p-u_0}{y}=\frac{f}{z}$

Sin embargo desde el punto de vista del software el origen de la imagen se encuentra en el extremo superior izquierdo de la imagen - plano de la imagen -, por lo que las ecuaciones anteriores deberían describirse como:  

$\frac{f}{z}=\frac{u_p-u_0}{x}$

Con la información de una sola cámara no es posible decir nada sobre la profundidad de la imagen, esto es, sobre el valor de z, no obstante si es posible relacionar la posición en el plano de la imagen con los valores x e y del mundo real. Para ello se emplea la matriz de transformación M tal que:

$[u_p,v_p,1]=M[x,y,z,1]^{T}$

Donde la matriz $M=K[RT]$, siendo R y T una rotación y una traslación entre el sistema de referencia de la cámara y las del objeto  respectivamente. La matriz K contiene los parámetros internos de la cámara, ya que su valor es:

$K = \begin{pmatrix}
 f& 0 & u_0 \\
 0& f & v_0\\
 0& 0  &0
\end{pmatrix}$


Si ahora consideramos el valor z como 0 para todos los objetos y colocamos un tablero de ajedrez donde el tamaño de los recuadros es conocido, tendremos una relación entre las coordenadas de los píxeles y las coordenadas reales, esta relación podría ser usada en la ecuación de transformación para averiguar R,T y la matriz de parámetros internos de la cámara. Se necesitan muchas de estas correspondencias para poder resolver el sistema de ecuaciones que sale de la ecuación matricial anterior, no obstante este trabajo lo puede realizar OpenCV o Matlab por nosotros. En la siguiente entrada emplearemos OpencCV para realizar esta calibración y si dispongo de tiempo, también añadiré una entrada más realizando este trabajo desde Matlab.




No hay comentarios:

Publicar un comentario