Poses objetivo: restricciones, rango y correlación

A menudo nos hacen preguntas relacionadas con el tipo de poses que deben capturarse para una calibración de cámara confiable y robusta. Si bien la respuesta a esto es bastante compleja y depende de muchos factores, como la lente, la configuración, las limitaciones de captura, el presupuesto de patrones, el ruido del detector, etc., existen algunos principios matemáticos fundamentales que descubriremos en este artículo. Comprender estas relaciones nos ayudará a diseñar mejores procedimientos de calibración y a mejorar la precisión de la calibración.


Configuración del problema

Comenzamos con el modelo de cámara estenopeica y usamos un objetivo plano simplificado. Para un punto característico del objetivo $\mathbf{P}_i=[X_i,Y_i,0,1]^\top$, primero cambiamos su base de coordenadas a la de la cámara y luego proyectamos al plano de la imagen:

$$ \begin{bmatrix}x_{c,i}\\y_{c,i}\\z_{c,i}\end{bmatrix} = \mathbf{R}\,\mathbf{P}_i+\mathbf{t}, \qquad \begin{bmatrix} \hat{u}_i\\ \hat{v}_i\\ 1 \end{bmatrix} = \begin{bmatrix} f\frac{x_{c,i}}{z_{c,i}} + c_x\\ f\frac{y_{c,i}}{z_{c,i}} + c_y\\ 1 \end{bmatrix} $$

Para las siguientes fórmulas, parametrizaremos la rotación usando un vector de ángulo-eje $\mathbf{r}=[r_x,r_y,r_z]^\top$.

Una vista de cuatro puntos aporta 8 restricciones (4 puntos × 2 coordenadas de píxeles). Sin embargo, solo si todos los parámetros son identificables podemos determinar 8 valores de parámetros. El vector residual contiene las diferencias entre las coordenadas de los puntos detectados y proyectados

$$ \mathbf{r}(\boldsymbol{\theta})= [\hat{u}_1-u_1^{\text{meas}},\hat{v}_1-v_1^{\text{meas}},\ldots,\hat{u}_4-u_4^{\text{meas}},\hat{v}_4-v_4^{\text{meas}}]^\top \in\mathbb{R}^{8} $$

En la calibración de la cámara, usualmente estimamos los parámetros $\hat{\boldsymbol{\theta}}$ mediante mínimos cuadrados no lineales:

$$ \hat{\boldsymbol{\theta}}= \arg\min_{\boldsymbol{\theta}}\;\frac{1}{2}\|\mathbf{r}(\boldsymbol{\theta})\|_2^2 $$

En la iteración $k$, linealizamos la función de proyección alrededor de la estimación actual $\boldsymbol{\theta}_k$:

$$ \mathbf{r}(\boldsymbol{\theta}_k+\Delta\boldsymbol{\theta}) \approx \mathbf{r}_k + \mathbf{J}_k\Delta\boldsymbol{\theta}, \qquad \mathbf{J}_k=\left.\frac{\partial\mathbf{r}}{\partial\boldsymbol{\theta}}\right|_{\boldsymbol{\theta}_k} $$

Aquí $\mathbf{J}_k$ es la matriz jacobiana del vector residual con respecto a los parámetros. Con esta aproximación, el problema de optimización local se convierte en:

$$ \Delta\boldsymbol{\theta} = \arg\min_{\Delta\boldsymbol{\theta}}\;\frac{1}{2}\|\mathbf{r}_k + \mathbf{J}_k\Delta\boldsymbol{\theta}\|_2^2. $$

Lo que se puede encontrar tomando la derivada con respecto a $\Delta\boldsymbol{\theta}$ e igualando a cero. Esto resulta en el sistema lineal:

$$ \mathbf{J}_k^\top\mathbf{J}_k\,\Delta\boldsymbol{\theta} = -\mathbf{J}_k^\top\mathbf{r}_k, $$

que se resuelve en cada iteración, y los parámetros se actualizan como $\boldsymbol{\theta}_{k+1}=\boldsymbol{\theta}_k+\Delta\boldsymbol{\theta}$.

La identificabilidad de los parámetros se rige por el rango y el número de condición de $\mathbf{J}$. Si las columnas son dependientes, $\mathbf{J}$ es singular (tiene un rango menor que el número de columnas). Si las columnas son casi dependientes, el número de condición, $\mathrm{cond}(\mathbf{J})$ es alto y la actualización es inestable y sensible al ruido.

La matriz $\mathbf{H}=\mathbf{J}^\top\mathbf{J}$ se denomina Hessiana aproximada o matriz de información. Resume la cantidad de información que las mediciones de la imagen proporcionan sobre las perturbaciones de los parámetros locales. Las entradas diagonales grandes significan que un parámetro cambia la imagen fuertemente; las entradas fuera de la diagonal grandes significan que dos parámetros inducen cambios de imagen similares y, por lo tanto, pueden confundirse.

Podemos derivar de ella una matriz de covarianza no escalada (bajo algunas suposiciones)

$$ \mathbf{C}_0 = \mathbf{H}^{-1} $$

A partir de esta covarianza, la matriz de correlación $\mathbf{R}$ se obtiene normalizando todas las entradas:

$$ R_{ij}=\frac{(C_0)_{ij}}{\sqrt{(C_0)_{ii}(C_0)_{jj}}} $$

Esta matriz responde: ¿qué parámetros varían juntos en la estimación local?

También podemos calcular una matriz de correlación parcial, que contiene correlaciones condicionales. Interpretación: los valores cercanos a $\pm 1$ significan que los parámetros $i$ y $j$ siguen siendo difíciles de distinguir incluso después de condicionar el resto; los valores cercanos a $0$ significan que su acoplamiento local directo es débil.

Los valores de incertidumbre mostrados son las desviaciones estándar no escaladas correspondientes, obtenidas de la diagonal de $\mathbf{C}_0$:

$$ \sigma_i = \sqrt{(C_0)_{ii}} $$

Así, por ejemplo, $\sigma_f=\sqrt{(C_0)_{ff}}$, $\sigma_{c_x}=\sqrt{(C_0)_{c_xc_x}}$, y $\sigma_{t_z}=\sqrt{(C_0)_{t_zt_z}}$. Los valores más grandes significan una evidencia local más débil para ese parámetro.


Vistas frontoparalelas

Comenzamos con una situación de captura simple: un objetivo plano sostenido de frente (frontoparalelo) con respecto a la cámara. Esta es una configuración natural y algunas calibraciones pueden y deben ser frontoparalelas.

Sin embargo, esta es también la situación en la que surge una ambigüedad importante. Sean los parámetros desconocidos $\boldsymbol{\theta}=[f,r_x,r_y,r_z,t_x,t_y,t_z]^\top$. Si el tablero es exactamente frontoparalelo, entonces $\mathbf{R}=\mathbf{I}$ y cada esquina tiene la misma profundidad de cámara $z_{c,i}=t_z$. Para un punto del tablero $\mathbf{P}_i=[X_i,Y_i,0]^\top$, las ecuaciones del estenopeico se reducen a

$$ u_i = f\frac{X_i+t_x}{t_z}, \qquad v_i = f\frac{Y_i+t_y}{t_z}. $$

Así, la imagen depende de $f$ y $t_z$ solo a través de la relación $f/t_z$. Si definimos $\alpha=f/t_z$, entonces

$$ u_i=\alpha(X_i+t_x), \qquad v_i=\alpha(Y_i+t_y). $$

Este es el acoplamiento fundamental escala-profundidad: multiplicar $f$ y $t_z$ por el mismo factor deja la imagen proyectada sin cambios.

El Jacobiano local lo hace explícito. Sea

$$ x_i=X_i+t_x, \qquad y_i=Y_i+t_y, \qquad z_i=t_z. $$

Las dos filas Jacobianas aportadas por la esquina $i$ son

$$ \frac{\partial(u_i,v_i)}{\partial(f,r_x,r_y,r_z,t_x,t_y,t_z)} = \begin{bmatrix} \dfrac{x_i}{z_i} & -\dfrac{f x_i y_i}{z_i^2} & f\!\left(\dfrac{1}{z_i}+\dfrac{x_i^2}{z_i^2}\right) & -\dfrac{f y_i}{z_i} & \dfrac{f}{z_i} & 0 & -\dfrac{f x_i}{z_i^2}\\[8pt] \dfrac{y_i}{z_i} & -f\!\left(\dfrac{1}{z_i}+\dfrac{y_i^2}{z_i^2}\right) & \dfrac{f x_i y_i}{z_i^2} & \dfrac{f x_i}{z_i} & 0 & \dfrac{f}{z_i} & -\dfrac{f y_i}{z_i^2} \end{bmatrix}. $$

Apilando las cuatro esquinas se obtiene la matriz completa $\mathbf{J}\in\mathbb{R}^{8\times 7}$.

Observamos una relación lineal entre las columnas asociadas con $f$ y $t_z$. Para cada esquina,

$$ \frac{\partial u_i}{\partial t_z} = -\frac{f}{t_z}\frac{\partial u_i}{\partial f}, \qquad \frac{\partial v_i}{\partial t_z} = -\frac{f}{t_z}\frac{\partial v_i}{\partial f}. $$

Por lo tanto, sobre todo el Jacobiano apilado,

$$ \mathbf{J}_{t_z} = -\frac{f}{t_z}\,\mathbf{J}_f. $$

Así, la columna $t_z$ es un múltiplo escalar exacto de la columna $f$. Incluso si añadiéramos más filas correspondientes a diferentes poses y puntos del objetivo, la dependencia permanecería. Como consecuencia, $\mathbf{J}$ no tiene rango completo (es singular), y el sistema lineal de ecuaciones no puede resolverse de forma única.

Al bloquear la relación $f/t_z$, observe cómo los puntos siempre se proyectan exactamente en los mismos lugares del plano de la imagen. Si calibráramos ciegamente solo con vistas frontoparalelas, los errores de reproyección podrían ser bajos, pero la distancia focal no se determinaría con precisión, simplemente porque no era identificable a partir de la evidencia proporcionada.

  • Las vistas frontoparalelas no pueden separar la escala focal $f$ de la profundidad $t_z$.
  • Esto conduce a una dependencia lineal exacta en la matriz jacobiana (singular).
  • Necesitamos evidencia de calibración que identifique distintamente todos los parámetros.

Las vistas inclinadas desenmascaran los parámetros

La siguiente pregunta natural es qué cambia cuando inclinamos el objetivo. Intuitivamente, la inclinación debería ayudar, porque las esquinas ahora ocupan diferentes profundidades y, por lo tanto, responden de manera diferente a los cambios en los parámetros de la cámara.

Supondremos $r_x=0$ y $r_z=0$ mientras variamos $r_y$. Una vez que el tablero está inclinado, las cuatro esquinas ya no comparten la misma profundidad, por lo que la simetría frontoparalela se rompe: cambiar la distancia focal, la profundidad y la rotación ya no produce el mismo movimiento de imagen en cada esquina.

Ahora obtenemos un Jacobiano de rango completo y técnicamente una solución única. Observe cómo la correlación disminuye cuando se aumenta el tamaño del tablero porque esto resulta en una mayor variación de profundidad. Sin embargo, el número de condición es alto, y se necesitaría más evidencia para mejorar el desacoplamiento y reducir la incertidumbre en la distancia focal.

  • La inclinación introduce una variación de profundidad en las esquinas, lo que descorrelaciona $f$ y $t_z$.
  • Los tableros de calibración grandes permiten una mayor variación de profundidad.

Estimación del punto principal

Hasta ahora, solo hemos incluido la distancia focal como un parámetro intrínseco. Sin embargo, en la práctica, la calibración a menudo se vuelve más difícil porque queremos estimar más parámetros, como las coordenadas del punto principal. Esto es similar a aumentar la flexibilidad del modelo en un problema de ajuste general: el modelo puede explicar más variaciones, pero también exige más evidencia de los datos.

Para ilustrar ese efecto, ahora agregamos la coordenada del punto principal $c_x$ al vector de parámetros: $\boldsymbol{\theta}=[f,r_x,r_y,r_z,t_x,t_y,t_z,c_x]^\top$. En este escenario, $r_z=0$ mientras que $r_x$ y $r_y$ pueden variarse con los deslizadores.

Una vez que se introducen los parámetros del punto principal, los datos de calibración deben contener suficiente asimetría y variación del punto de vista para distinguirlos de los efectos de la pose y la escala. Observe que la estimación de $c_x$ necesita específicamente una rotación no nula alrededor de x. De lo contrario, la flexibilidad adicional simplemente se manifiesta como una mayor incertidumbre y un acoplamiento más fuerte.

  • Agregar parámetros de punto principal aumenta la dimensión del espacio de parámetros y exige más evidencia.
  • La estimación de $c_x$ requiere $r_x$ no nulo, mientras que la estimación de $c_y$ requiere $r_y$ no nulo.

Añadir planos

La práctica normal es recopilar más de una imagen. En términos de calibración, eso significa añadir más vistas, más diversidad de poses o más cobertura del objetivo.

A continuación, mantenemos la misma cámara pero observamos dos planos inclinados. La escala focal compartida se estima una vez, mientras que cada plano tiene su propia pose que debe estimarse: $\boldsymbol{\theta}=[f,r_{1x},r_{1y},r_{1z},t_{1x},t_{1y},t_{1z},r_{2x},r_{2y},r_{2z},t_{2x},t_{2y},t_{2z}]^\top$.

Esta configuración añade parámetros, pero también proporciona un soporte geométrico sustancialmente mayor. Los parámetros compartidos de la cámara ahora deben explicar las mediciones provenientes de múltiples planos con diferentes orientaciones, lo cual es exactamente el tipo de diversidad que mejora el acondicionamiento y reduce el acoplamiento.

  • Añadir otro plano proporciona más evidencia independiente al mismo tiempo que añade seis parámetros a estimar.
  • Múltiples planos reducen el acoplamiento dañino de parámetros porque los parámetros compartidos deben explicar observaciones más variadas.
  • Una mejor calibración proviene de vistas y poses diversas.

¿Qué pasa con la distorsión de la lente?

La distorsión de la lente se comporta de manera algo diferente a los parámetros intrínsecos y de pose discutidos anteriormente. El punto clave es que la distorsión es principalmente un efecto de plano de imagen: describe cómo los puntos de la imagen se desvían de la proyección estenopeica ideal en función de dónde se encuentran en la imagen.

Por esa razón, la distorsión no requiere fundamentalmente observaciones inclinadas. Lo que realmente requiere es cobertura. Si el objetivo solo se observa cerca del centro de la imagen, los datos de calibración contienen muy poca información sobre cómo se comporta la lente cerca de los bordes de la imagen, donde la distorsión suele ser más fuerte.

La inclinación sigue siendo útil en una calibración completa porque mejora la identificabilidad general de los parámetros y ayuda a separar diferentes efectos. Pero para la distorsión en sí, la cobertura amplia de la imagen es el requisito más importante. En la práctica, esto significa mover el objetivo para que las características aparezcan cerca de los bordes y esquinas del sensor, no solo cerca del centro.

  • La distorsión de la lente es principalmente un efecto del plano de la imagen, no un efecto de variación de profundidad.
  • Los parámetros de distorsión necesitan una buena cobertura de la imagen, especialmente hacia los bordes.

Conclusiones sobre la calibración

¿Qué podemos aprender de este análisis sobre cómo diseñar procedimientos de calibración?

Primero, la geometría del objetivo de calibración y su pose en relación con la cámara tienen una fuerte influencia en la identificabilidad local de los parámetros.

Las vistas frontoparalelas por sí solas no pueden distinguir la escala focal de la profundidad y no restringen las coordenadas del punto principal.

Sin embargo, incluso con inclinación, algunos parámetros pueden seguir estando fuertemente correlacionados si sus efectos en la imagen son lo suficientemente similares.

Por lo tanto, es importante considerar no solo el número de restricciones, sino también su diversidad y cómo interactúan con las incógnitas.

Los productos de software de Calib.io, Calibrator y libCalib, proporcionan herramientas para analizar y visualizar estas relaciones, ayudando a los usuarios a diseñar mejores procedimientos de calibración y comprender las limitaciones de sus datos.

Regresar al blog

Deja un comentario

Ten en cuenta que los comentarios deben aprobarse antes de que se publiquen.