Mostrando entradas con la etiqueta parámetros intrínsecos. Mostrar todas las entradas
Mostrando entradas con la etiqueta parámetros intrínsecos. Mostrar todas las entradas

lunes, 12 de mayo de 2014

Visualización 3D para Realidad Aumentada

En esta entrada, trataré de explicar conceptos básicos sobre visualización 3D que son necesarios para trabajar en el ámbito de la Realidad Aumentada. Hablaré de sistemas de coordenadas, parámetros de visualización y transformaciones


Inicialmente, necesitamos definir un sistema de coordenadas de visualización para los parámetros de visualización de la cámara (en negro en el detalle, es la matriz P; que si además tenemos en cuenta la distorsión también se incluye el rojo) que nos permita definir el plano de proyección o visualización (en verde en el detalle; es lo que ve la cámara), donde podamos proyectar cada objeto 3D traído desde sus coordenadas locales (en el detalle en azul) hasta las coordenadas de visualización.

relacion entre sist coord
Relación entre los diferentes sistemas de coordenadas definidos

Se suceden diferentes transformaciones de coordenadas para llevar cada objeto 3D desde la escena (coordenadas locales) hasta el sistema de coordenadas de visualización (coordenadas de la cámara) y de ahí proyectarlos en el plano de visualización (coordenadas de pantalla). Esta última transformación dependerá del modelo de proyección elegida que en computer vision pueden ser diversos; aunque los más utilizados son el de proyección paralela y el de proyección en perspectiva. Dedicaré otra entrada a explicarlos.

transformaciones RA
Transformaciones RA
El proceso de visualización 3D, en concreto, comienza por posicionar y orientar los objetos de la escena respecto del SRU, obteniendo las coordenadas universales del objeto (transformación de modelado). A continuación se hace lo mismo con la cámara, obteniendo las coordenadas de visualización (transformación de visualización) y el volumen de visualización.
En este momento cámara y objetos están posicionados a partir del origen del RSU y mirando en dirección negativa del eje Z. ARToolKit hace estos dos procesos en uno solo, al cargar la matriz T en el modelview de OpenGL.

A continuación, mediante la transformación de proyección (en perspectiva en nuestro caso) se transforma el volumen de visualización en un cubo unitario obteniendo las coordenadas normalizadas. Hemos pasado los objetos de 3D a 2D y las coordenadas Z de los puntos son almacenadas en un Buffer de profundidad (Z-Buffer). Los objetos que quedan fuera del volumen son eliminados o recortados para obtener las coordenadas recortadas (transformación de recorte).

Finalmente, se ajustan las coordenadas x e y del cubo a las coordenadas de la pantalla, pudiendo adaptarse a diferentes tamaños y resoluciones (transformación de pantalla). En una etapa final de rasterización, se toman las coordenadas de la pantalla y el Z-Buffer y se definen los colores de los pixels.

transformación de visualización
Transformación de visualización. Las zonas con sombra corresponden al volumen de visualización



jueves, 8 de mayo de 2014

Calibrando mi cámara

La calibración de una cámara representa un paso importante para procesos de reconstrucción 3D o sensorización mediante una cámara. Con la calibración de la cámara se consiguen estimar los parámetros intrínsecos y extrínsecos de la misma los cuales son necesarios para realizar la reconstrucción 3D del entorno y situar la cámara en el mismo. Por este motivo, una de las primeras cosas que tenemos que hacer es calibrar nuestra cámara.


Existen muchos métodos de calibración de una cámara. Normalmente, el proceso se puede realizar en dos pasos. Primero se estima la matriz de proyección y después se estiman los parámetros intrínsecosextrínsecos de la cámara a partir de ella. Durante el proceso,  la gran mayoría de métodos utilizan plantillas de líneas o puntos.

Calibración en ARToolKit

ARToolKit propone dos programas de calibración con los que poder establecer los parámetros intrínsecos de la cámara (punto central de la imagen, distorsión de la lente, longitud focal, relación de aspecto y de inclinación), que tendrán que almacenarse en el fichero camara_para.dat y que se entran como datos a nuestros programas ARTollKit. Estos ficheros son:

  • Calib_dist utiliza la plantilla calib_dist.pdf para medir el punto central de la cámara y el factor de distorsión de la lente. En diferentes posiciones y orientaciones de la plantilla, el programa hará una captura de pantalla y en ella marcaremos con el ratón todos los puntos siguiendo un orden (izda -> dcha y arriba->abajo). A continuación la aplicación nos muestra el resultado del cálculo de estos parámetros, para que realicemos una comprobación visual. Cada vez que pulsemos con el botón izquierdo del ratón se mostrará una imagen con líneas de color rojo que deben pasar por el centro de cada círculo de calibración. Finalmente, se generará el fichero con los datos.


  • salida de calib_dist
    Salida de Calib_dist

  • Calib_param utiliza la plantilla calib_cpara para medir la longitud focal de la cámara y otros parámetros. Realiza un proceso similar al anterior pero moviendo líneas horizontales y despues verticales hasta hacerlas coincidir con las de la plantilla. El orden (izda -> dcha y arriba->abajo) es igualmente importante.

salida calib_param
Salida de Calib_param

plantillas calibracion ARToolKit
Plantillas de calibración calib_dist y calib_param

Los procesos de calibración están perfectamente definidos en el apartado de documentación de la web de ARToolKit. Os dejo también un acceso a las plantillas de calibración.

martes, 6 de mayo de 2014

AR Conceptos II

Esta es la segunda entrada de la serie de AR Conceptos, como en las anteriores, realizaré un listado y una breve explicación de los más importantes sin dejar, por ello, de dedicar diferentes entradas a otros tantos conceptos que requieran una explicación mayor.



calibración
Plantilla de calibración
Calibración de la cámara
La calibración de una cámara representa un paso importante para procesos de reconstrucción 3D o sensorización mediante una cámara. Con la calibración de la cámara se consiguen estimar los parámetros intrínsecos y extrínsecos de la misma los cuales son necesarios para realizar la reconstrucción 3D del entorno y situar la cámara en el mismo

Existen muchos métodos de calibración de una cámara. Normalmente, el proceso se puede realizar en dos pasos. Primero se estima la matriz de proyección y después se estiman los parámetros intrínsecos y extrínsecos de la cámara a partir de ella. Durante el proceso,  la gran mayoría de métodos utilizan plantillas de líneas o puntos.

Parámetros intrínsecos de la cámara
Los parámetros intrínsecos son aquellos que definen la geometría interna y la óptica de la cámara. Son constantes en tanto no varíen las características y posiciones relativas entre la óptica y el sensor imagen. Los parámetros intrínsecos de la cámara son: punto central de la imagen, distorsión de la lente, longitud focal, relación de aspecto y de inclinación.

  1. Distancia focal: es la distancia existente entre el plano de la imagen de la cámara y su foco (punto donde convergen los rayos de luz originados desde un punto en el objeto observado). Puesto que la lente de la cámara es convergente, la distancia focal es positiva.
  2. Punto central: es el punto central del plano de la imagen.
  3. Punto principal: es la intersección entre el plano de la imagen y el eje óptico (recta perpendicular al plano de la imagen y que pasa por el foco). Suele estar cerca del centro de la imagen
  4. Distorsión de la lente: La óptica de la cámara introduce aberraciones que distorsionan la imagen, como por ejemplo, aberraciones cromáticas, aberraciones que afectan a la nitidez, distorsión tangencial, distorsión radial, entre otras. Esta última es la más típica y existen dos tipos: con distorsión positiva (tipo cojín) o con distorsión negativa (tipo barril).
  5. Relación de aspecto: es la proporción que guarda una imagen entre su ancho y su altura. Se obtiene al dividir el ancho entre la altura.
  6. Factor de conversión pixel-milímetros: Las coordenadas 2D obtenidas están expresadas en forma de píxeles, así que el número de píxeles por milímetro se usa para transformarlas a medidas del Sistema Internacional de Unidades (SI).
  7. Relación de inclinación u Oblicuidad: es el ángulo que existe entre los ejes en las direcciones x y y. Normalmente 90º

Matriz de calibración de la cámara K

matriz k
matriz K
Integra los principales parámetros intrínsecos de la cámara, longitud focal, punto principal y oblicuidad, suponiendo ésta ubicada en el origen del sistema de coordenadas Euclidianas con el eje principal orientado en línea recta hacia el eje Z. En la matriz K se supone que las coordenadas de la imagen están en coordenadas no homogéneas y tienen una escala igual para ambos ejes de direcciones x y y . Si las coordenadas de la imagen son medidas en pixels, esto tendrá el efecto de introducir factores de escala diferentes en cada dirección. Así, αx =fmx y αy =fmy representan la longitud focal en pixels (f es el factor de escala introducido para pasar a pixels). Los parámetros x0 =mxpx y y0 =mypy son las coordenadas del punto principal en pixels. Finalmente, s es el parámetro de oblicuidad; normalmente vale 0.

Matriz de perspectiva de la cámara P

matriz P
matriz P
Es la matriz de calibración K a la que se le añade un vector de valores nulos. Permite pasar de  puntos 3D a pixels (2D). 








Parámetros extrínsecos de la cámara
matriz T
matriz T
Los parámetros extrínsecos relacionan los sistemas de referencia del mundo real y la cámara describiendo la posición y orientación de la cámara en el sistema de coordenadas del mundo real. Hacen referencia a las transformaciones geométricas de rotación y traslación de la cámara y se reflejan en la matriz de transformación T=(R|t).

La relación entre las coordenadas de la cámara y las coordenadas del mundo vendrá dada por la matriz de proyección o compuesta C, que es una 4x4 producto de PT.


matriz C
matriz C


Inclinación de la cámara 
Se considera inclinación de una cámara al ángulo que ésta forma con el eje Z del mundo real.

Transformaciones geométricas
Son las transformaciones básicas de los objetos que componen la escena, normalmente consistentes en cambios de posición, orientación y tamaño. En general podemos decir que una transformación toma como entrada elementos como vértices y vectores y los convierte de alguna manera. Las principales son la traslación, la rotación y el cambio de escala. En una próxima entrada explicaré en que consisten.


Coordenadas homogéneas
En geometría proyectiva, las coordenadas homogéneas son un instrumento usado para describir un punto en el espacio proyectivo. En ellas, todo punto bidimensional está definido por tres coordenadas. De tal modo que añadimos un término extra (parámetro homogéneo h) a la representación del punto en el espacio (x,y), para obtener la representación homogénea de la posición descrita como (xh , yh , h). Este parámetro homogéneo h es un valor distinto de cero tal que x = xh/h, y = yh/h. Existen, por tanto infinitas representaciones homogéneas equivalentes de cada par de coordenadas, aunque se utiliza normalmente h = 1.