Explicación de los modelos de cámaras
El modelo de cámara es el elemento central de cualquier rutina de calibración. Por lo tanto, para comprender mejor los factores que influyen en una buena calibración de la cámara, vale la pena profundizar en los modelos de cámara.
El modelo estenopeico
Un modelo de cámara relaciona puntos en 3D con sus proyecciones en una imagen de cámara. El modelo más común es, con diferencia, el modelo de cámara estenopeica, que parte del supuesto fundamental de que los rayos de luz entran en la cámara a través de una abertura infinitamente pequeña (el estenopo), como se muestra a continuación.
Proyección a través de un agujero estenopeico. (c) Wikimedia. Usuario Pbroks13.
Matemáticamente y en el campo de la visión artificial, los puntos en el espacio tridimensional suelen denotarse como $$Q=[X,Y,Z] .$$ Su proyección correspondiente sobre la imagen de la cámara es $$q=[u,v,1] .$$ El '1' en $q$ es necesario, ya que estamos trabajando con coordenadas homogéneas. Para obtener una explicación, haga clic aquí . Los dos pueden relacionarse mediante el modelo de agujero de alfiler:
$$q = \begin{bmatrix} f & 0 & c_x \\ 0 & f & c_y \\ 0 & 0 & 1 \end{bmatrix} \cdot Q$$
El modelo de cámara estenopeica. Modificado de la documentación en línea de OpenCV. (c) Itseez.
Esta proyección básicamente hace dos cosas: escala las coordenadas por $f$ y las traslada de modo que las coordenadas no sean relativas al centro de la cámara, sino que tengan un sistema de coordenadas ubicado en la esquina superior izquierda de la imagen. Esta es la forma natural de indexar las posiciones de los píxeles en una imagen digital.
Los parámetros $c_x, c_y$ se denominan coordenadas del punto principal, ya que también se pueden interpretar como las coordenadas de la imagen del punto principal , que es donde el eje óptico interseca el plano de la imagen. En m cámaras, es razonable suponer que $c_x, c_y$ está en el centro exacto de la imagen. Sin embargo, es posible que la lente no esté perfectamente centrada con el sensor de imagen, en particular en cámaras de bajo costo como las de los teléfonos inteligentes. Y en cámaras y lentes especializadas, como lentes Scheimpflug o lentes de proyección fuera del eje, el eje óptico no interseca deliberadamente el centro de la imagen. En estas situaciones, $c_x, c_y$ deben determinarse a partir de la calibración.
El parámetro $f$ es la distancia focal y depende de la lente y el sensor de la cámara utilizados. Una distancia focal grande/larga se escala por un número grande y se puede interpretar como un "zoom" grande, mientras que una lente macro tendría una distancia focal pequeña/corta. Las unidades de $f$ necesariamente tienen que ser compatibles con las de $q$ y $Q$. Por lo tanto, si los puntos 3d $Q$ se dan en metros y $q$ en píxeles (o px), $f$ tiene unidades de [px/m]. Nótese que en aplicaciones prácticas, $Q$ se expresa con mayor frecuencia en [m] o [mm], mientras que $q$ casi siempre estaría en [px]. Sin embargo, es importante tener en cuenta la posición del origen.
Ampliación del modelo estenopeico
A través de la experimentación, y con el fin de dar cabida a cámaras y lentes que no están bien descritas mediante el modelo estenopeico simple, una extensión común tiene los siguientes parámetros:
$$q = \begin{bmatrix} f_x y \alpha f_x y c_x \\ 0 y f_y y c_y \\ 0 y 0 y 1 \end{bmatrix} \cdot Q$$
La formulación exacta difiere un poco de un autor a otro. Sin embargo, lo importante a tener en cuenta es que al introducir $f_x$ y $f_y$ en lugar de solo una $f$ común, permitimos que la cámara escale de manera diferente en las direcciones $x$ e $y$. La relación $f_x/f_y$ a veces se denomina relación de aspecto . Esto podría deberse a píxeles no cuadrados (observados en algunos estándares de digitalización para cámaras analógicas, por ejemplo, 480i o 576i) o algunas lentes de cámara anisotrópicas exóticas. Dependiendo de la calidad de la cámara que se esté calibrando, la inclusión de $f_x$ y $f_y$ aún puede estar justificada. Afortunadamente, ambos parámetros se pueden determinar de manera muy sólida y repetida en la calibración de la cámara y, como tal, generalmente no se hace mucho daño al calibrar ambos.
Por otro lado, los modelos $\alpha$ presentan sesgos en la cámara, lo que rara vez se justifica en la práctica en los dispositivos modernos. Esto permite que los ejes x e y del sensor no sean perfectamente perpendiculares. Este parámetro debería excluirse del modelo y la calibración de la cámara en casi todas las aplicaciones modernas, a menos que exista una buena razón para incluirlo, ya que de lo contrario, hace que la calibración sea menos robusta.
Distorsión de la lente
El modelo de agujero de alfiler sólo es perfectamente válido para una cámara con una pupila de entrada (o apertura) infinitamente pequeña. En la práctica, este tipo de cámaras no existen, por supuesto, ya que no permitirían la entrada de luz. Por lo tanto, normalmente se requiere un sistema de lentes para enfocar los rayos entrantes sobre el sensor de imagen. Al hacerlo, se introduce cierto grado de distorsión en la lente . Esto suele ser mucho más pronunciado en lentes macro de gran angular (a veces llamados lentes de ojo de pez) que en lentes de distancia focal larga, porque es más difícil construir lentes de gran angular con baja distorsión, aunque los fabricantes hacen todo lo posible para evitarlo.
Efectos de distorsión radial
Un grupo de efectos de distorsión de la lente tiene simetría radial, lo que significa que a una distancia dada del punto principal, la cantidad de distorsión es constante. Cuando la lente se distorsiona hacia adentro, esto se denomina distorsión de barril . Por el contrario, cuando se distorsiona hacia afuera, se denomina distorsión de cojín . Una mezcla de ambas se denomina distorsión de manillar .
Distorsión de barril (izquierda), distorsión de cojín (centro) y distorsión de bigote (derecha). (c) Wikimedia. Usuario WolfWings.
Al ser radialmente simétrica, una sola función de la variable $r$ es suficiente para describir el efecto de distorsión. Utilizando $(x,y) = (X/Z, Y/Z)$ como coordenadas de cámara normalizadas, podemos definir $r$:
$$r(x,y) = \sqrt{x^2 + y^2},$$
es decir, $r(x,y)$ representa la distancia desde el centro de la imagen.
En la literatura se han propuesto diferentes funciones paramétricas adecuadas para los efectos de distorsión de lentes radiales. Un modelo ampliamente aceptado es el modelo radial de orden par de Brown [1]:
$$q_{\text{corregida}} = (1 + k_1 r^2 + k_2 r^4 + k_5 r^6) \cdot q .$$
En este modelo se utilizan tres parámetros (k_1, k_2, k_5). Son coeficientes polinómicos, lo que permite que exista una distorsión que varía suavemente y que puede ser estrictamente negativa (distorsión de barril), estrictamente positiva (distorsión de cojín) o ambas (distorsión de bigote). Nótese que solo se deben incluir órdenes polinómicos pares, ya que el dominio de la función siempre es positivo ($r \in [0; r_{\text{max}} ]$).
Efectos de distorsión tangencial
Un efecto que no se explica fácilmente con un modelo de distorsión radial es la distorsión tangencial o de prisma fino , que puede deberse a un descentramiento, es decir, a que los diferentes elementos de la lente no estén perfectamente alineados, o a que el eje óptico no sea perfectamente normal al plano del sensor. Brown [1] también propuso un modelo útil que se ha demostrado que se ajusta bien a la distorsión de píxeles:
$$q_{\text{corregida}} = \begin{bmatrix} 2 k_3 xy + k_4 (r^2+2x^2) \\ k_3 (r^2 + 2*y^2) + 2 k_4 xy \end{bmatrix} \cdot q .$$
La combinación del modelo radial anterior y el tangencial a veces se denomina modelo Plumb Bob o modelo Brown-Conrady .
En el caso de cámaras y lentes de buena calidad, a menudo no es necesario incluir parámetros de distorsión tangencial en el modelo de la cámara. Al igual que las coordenadas del punto central y los parámetros de distorsión radial, normalmente se necesita una gran cantidad de imágenes de calibración bien distribuidas para determinar estos parámetros con precisión y buena repetibilidad. Por lo tanto, a menudo es mejor no incluirlos, especialmente si la cámara y el lente son de calidad suficiente.
Centro de proyección en perspectiva
Se ha sugerido que el centro de distorsión puede no coincidir perfectamente con el centro de la proyección en perspectiva. En el modelo "Brown-Conrady ampliado", se añaden los desplazamientos $(d_x, d_y)$ para el centro de distorsión óptica, mientras que $(c_x, c_y)$ es el desplazamiento del punto principal del modelo estenopeico como antes.
Con estos parámetros adicionales, las coordenadas radiales del píxel se dan como:
$$r(x,y) = \sqrt{(x-d_x)^2 + (y-d_y)^2}$$
Este modelo Brown-Conrady extendido se implementa en nuestro software Calibrator y se ha demostrado que agrega una precisión considerable agregando solo dos parámetros adicionales.
Adenda: Acerca de las coordenadas homogéneas
La forma habitual de representar puntos en el espacio 3D o en un plano 2D es utilizar 3 vectores y 2 vectores respectivamente. Sin embargo, para algunos propósitos, resulta muy útil utilizar coordenadas homogéneas, en las que se introduce una coordenada adicional.
Por ejemplo, un punto de imagen 2-d puede denotarse como $q_{\text{inhom}} =[u,v]$. En coordenadas homogéneas, escribimos $q_{\text{hom}} =s \cdot [u,v,1]$ y tenemos $s$ como parámetro de escala libre. Cualquier elección de $s$ representa el mismo punto 2-d. Sin embargo, no podemos permitir que $s$ sea 0 o infinito.
Ahora imaginemos una transformación de coordenadas que consiste en escalar por un factor $\alpha$ y trasladar con un vector $[t_x, t_y]$. Podría aplicarse a $q_{\text{inhom}} $ de la siguiente manera:
$$\hat{q}_{\text{inhom}} = \begin{bmatrix} u \\ v \end{bmatrix} = \begin{bmatrix} \alpha & 0 \\ 0 & \alpha \end{bmatrix} q_{\text{inhom}} + \begin{bmatrix} t_x \\ t_y \end{bmatrix}$$
Esto funciona bien, pero la transformación no es lineal (no se puede expresar como un único producto matriz-vector). Sin embargo, para muchas derivaciones, simplificaría enormemente las matemáticas si esta transformación pudiera expresarse como una única operación matriz-vector. Con la versión homogénea de $q$, podemos hacer lo siguiente:
$$ \hat{q}_{\text{hom}} = s \begin{bmatrix} u \\ v \\ 1 \end{bmatrix} = \begin{bmatrix} \alpha & 0 & t_x \\ 0 & \alpha & t_y \\ 0 & 0 & 1 \end{bmatrix} q_{\text{hom}} $$
Es decir: ahora la transformación (una proyección en este caso) se expresa como una transformación lineal. Para convertir $\hat{q}_{\text{hom}} $ en $\hat{q}_{\text{inhom}} $, lo cual podemos interpretar fácilmente, simplemente dividimos con los dos primeros componentes de $\hat{q} _{\text{inhom}} $ por el tercero (que es el factor de escala arbitrario $s$).
Este truco permite expresar muchas formulaciones geométricas de una manera más sencilla. Además, existe una interpretación útil de las coordenadas 2D homogéneas: sabemos que cualquier punto de la imagen de una cámara corresponde a algún punto de una línea específica en el espacio 3D. Las coordenadas homogéneas de la línea 2D son exactamente la parametrización de esta línea en el espacio. Variando $s$, nos movemos a lo largo de esa línea. Fijando $s = 1$, intersectamos el plano de la imagen y obtenemos las coordenadas del punto 2D que normalmente nos interesan.
Las coordenadas homogéneas tienen otras propiedades interesantes. Wikipedia ofrece una excelente descripción general .
Referencias
[1]: Calibración de cámara de corto alcance, DC Brown, Ingeniería fotogramétrica, páginas 855-866, vol. 37, n.º 8, 1971.