Mostrando entradas con la etiqueta visión por computador. Mostrar todas las entradas
Mostrando entradas con la etiqueta visión por computador. Mostrar todas las entradas

lunes, 29 de septiembre de 2014

Fundamentos técnicos de mi proyecto: Publicidad y Realidad Aumentada

Punto de partida para la realización de este proyecto de "Detección y localización de estructuras planas para aplicaciones de Realidad Aumentada en Publicidad" han sido las propuestas técnicas que comento en este post. Son algunas de las más relevantes en este ámbito. Todas ellas fundamentan y contribuyen al desarrollo de este trabajo. 



ARToolKit (Dr. Hirokazu Kato, 1999)
ARToolKit
ejemplo de renderizado de un objeto 3D
sobre un patrón detectado por
ARToolKit

ARToolKit es una librería de software para la creación de aplicaciones de Realidad Aumentada. ARToolKit utiliza algoritmos de visión por computador para realizar el tracking visual desde el punto de vista del usuario, con el fin de saber de qué punto de vista dibujar la imagen virtual. Para ello, la aplicación necesita saber dónde está el usuario en el mundo real. Las librerías de seguimiento de vídeo ARToolKit permiten estimar la posición de la cámara real y su orientación relativa a los marcadores físicos, en tiempo real. Esto permite el fácil desarrollo de una amplia gama de aplicaciones de Realidad Aumentada.

Algunas de las características de ARToolKit incluyen:
  • Seguimiento de la posición de la cámara simple / orientación. 
  • Código de seguimiento que utiliza marcas negras simples. 
  • Capacidad de usar cualquier patrón de marcadores cuadrados. 
  • Fácil código de calibración de la cámara. 
  • Rapidez suficiente para aplicaciones de RA en tiempo real. 
  • Distribuciones SGI IRIX, Linux, MacOS y Windows OS. 
  • Distribuido con el código fuente completo.
Desarrollado en 1999 por el Dr. Hirokazu Kato, en la actualidad es una tecnología liberada bajo licencia GPL, debido a lo cual se ha hecho muy popular y es ampliamente utilizada.


Detecting Planes and Estimating their Orientation from a single image. (O. Haines, 2012)

En este trabajo O. Haines propone un algoritmo para detectar zonas planas en una imagen individual de una escena de exteriores urbanos, capaz de identificar múltiples zonas planas distintas, y la estimación de su orientación. Mediante el uso de técnicas de machine learning, se extrae la relación entre la apariencia y estructura a partir de un amplio conjunto de ejemplos. La detección de zonas planas se logra mediante la clasificación de la superposición de múltiples zonas de la imagen, con el fin de obtener una estimación inicial de planicidad para un conjunto de puntos, que se segmentan en regiones planas y no planas usando una secuencia de campos aleatorios de Markov. Este trabajo difiere de los métodos anteriores en que no se basa en detección de líneas, y es capaz de predecir una orientación real para las zonas planas. Se demuestra que el método es capaz de extraer de forma fiable zonas planas en una variedad de escenas, y se compara favorablemente con los métodos existentes.

Resultados Haines
resultados obtenidos por el algoritmo de Haines


 Detecting Planar Surfaces in Outdoor Urban Environments. (P. David, 2008)


P. David describe un método para detectar automáticamente las fachadas de edificios en imágenes de entornos exteriores urbanos para su aplicación en navegación basada en visión, reconocimiento de marcas y de aplicaciones de vigilancia. En particular, la proliferación de Smartphones con cámara y funcionalidad GPS, hace necesario un sistema de backup de geolocalización cuando las señales GPS de satélite se bloquean en los llamados "cañones urbanos". El método que propone, localiza en primer lugar los segmentos de línea de la imagen y extrae los puntos de fuga de éstos mediante el algoritmo de estimación robusta de RANSAC. A continuación, las intersecciones de los segmentos de línea asociados con cada uno de los pares de puntos de fuga son utilizados para generar el plano de apoyo de cada una de las fachadas según su orientación. Seguidamente, se agrupan los puntos pertenecientes a cada plano de apoyo utilizando un algoritmo que no requiere el conocimiento del número de agrupaciones o de su proximidad espacial. Por último, las fachadas del edificio se identifican mediante el ajuste de cuadriláteros alineados con los puntos de fuga de cada uno de los grupos de puntos de apoyo. Los experimentos muestran un buen rendimiento en una serie de entornos urbanos complejos. La principal contribución de este algoritmo es un rendimiento mejorado sobre los algoritmos existentes y la no imposición de restricciones sobre las fachadas en cuanto a número u orientación, estableciendo unas mínimas restricciones en la longitud de los segmentos de línea detectados y de la verticalidad de las paredes.

Resultados David
resultados obtenidos por el algoritmo de P. David


Computer Vision Centric Hybrid Tracking for Augmented Reality in Outdoor Urban Environments. (W.T. Fong, S.K. Ong, A.Y.C. Nee, 2009)

El trabajo liderado por  W.T.Fong presenta un sistema de seguimiento híbrido para Realidad Aumentada en ambientes urbanos exteriores, que integra la visión por computador (CV), GPS y sensores de inercia. El sistema está diseñado para superficies exteriores planas en ambientes urbanos, proporcionando aumento con gran precisión y libre de jitter. Para ello, se parte de dos algoritmos de CV de seguimiento, “Keypoint Signatures for Fast Learning and Recognition” y “Second-order Minimization for Outdoor Tracking”, que al no escalar a entornos de gran tamaño y no ser del todo robustos, son completados con GPS y detección inercial. De esta manera, primero se define una región de búsqueda limitada para después inicializar el seguimiento mediante CV. Se consigue así un sistema con la precisión y estabilidad requeridas para aplicaciones de Realidad Aumentada. El trabajo presenta las modificaciones de los dos algoritmos de CV junto con las consideraciones de diseño para construir el sistema de seguimiento híbrido propuesto. Presenta, también, los resultados de experimentación del sistema y el aumento en las superficies del mundo real.

Resultados Fong
resultados obtenidos por el algoritmo de Fong



lunes, 12 de mayo de 2014

Perspectiva: proyectando objetos en Realidad Aumentada

La Perspectiva es un modelo de proyección que consigue efecto distancia al quedar representados los objetos más alejados con un menor tamaño. En esta entrada, trataré de explicar cómo se realiza la transformación de proyección en perspectiva en el ámbito de la Realidad Aumentada para obtener escenas más realistas, simulando la manera en que el ojo humano y las cámaras físicas forman imágenes. 



El modelo de proyección en perspectiva consiste en la proyección de los vértices de los objetos de la escena mediante trayectorias convergentes en un punto central del plano de proyección. Se consigue así un efecto distancia ya que los objetos situados más distantes del plano de visualización aparezcan más pequeños en la imagen. Las escenas generadas utilizando este modelo de proyección son más realistas, ya que ésta es la manera en que el ojo humano y las cámaras físicas forman imágenes.

perspectiva simple
matriz perspectiva
Perspectiva simple y matriz de proyección

Siguiendo la idea de la cámara estenopeica, desplazamos el plano de visualización una distancia d por detrás del origen (en dirección -Z). De esta forma, según la proyección simple, cada punto p se proyecta en el plano de visualización situado en z = -d obteniendo el punto p'=(px',py',-d). Aplicando semejanza de triángulos y un parámetro de homogeneización h = -pz/d, obtenemos la matriz de proyección Mp, que nos aplasta los vértices de los objetos 3D sobre el plano de visualización 2D.

Esta proceso no puede deshacerse; no tiene inverso. Por este motivo es interesante proyectar en lugar de sobre un plano, sobre una pirámide truncada (lo mas estrecha posible) que, una vez normalizada, se convertirá en un cubo unitario  (en lugar de un cuadrado de lado 1), que si podrá deshacerse. Así, definimos la pirámide de visualización (frustrum) cuyas bases son paralelas al plano de proyección (que queda definido por los lados top, bottom, left, right y las distancias near y far). La matriz de perspectiva que transforma la pirámide en el cubo unitario será:

frustrum
Frustrum
matriz perspectiva frustrum
Matriz de perspectiva para el frustrum

Para evitar errores de precisión en el Z-Buffer con distancias grandes, conviene que los planos de la pirámide truncada estén cerca (la distancia far-near sea muy pequeño).

Obtenemos así el volumen de visualización normalizado a un cubo unitario y 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).

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

Creando mis propios marcadores

ARToolKit pone a nuestra disposición una serie de marcadores reconocibles y utilizables por sus funciones. Pero, ¿por qué no utilizar nuestros propios marcadores? ¿por qué no personalizar o utilizar nuestro logo o nuestras imágenes favoritas como patrón de un marcador?


Existen muchos métodos para realizar un marcador. De hecho, lo más sencillo es partir de una plantilla de marcador en blanco y con cualquier programa de imagen, insertar nuestro patrón en su interior. Pero con cuidado, tenemos que respetar algunas restricciones si queremos que nuestra marca pueda ser detectada sin problemas. Al final del post os dejo algunos consejos.


generacion marcadores
Generación de marcadores con mk_patt
Una vez creado el marcador, tiene que ser reconocido por ARToolKit y entrenado para generar su fichero de datos correspondiente. Para ello, ARToolKit proporciona una sencilla aplicación, mk_patt, que nos pedirá el fichero de parámetros de la cámara y abrirá una ventana de vídeo. Entonces mostraremos a la cámara nuestro marcador impreso y aparecerán en su contorno una esquina roja y otra verde. Tenemos que orientar la cámara hasta situar el contorno rojo en la esquina superior izquierda de nuestro marcador y, en ese momento, pulsar el botón izquierdo del ratón para generar el fichero del marcador. Este fichero se introduce como dato en nuestros programas ARToolKit.

Este proceso de generación de marcadores están perfectamente definidos en el apartado de documentación de la web de ARToolKit. Os dejo también un acceso a la plantilla de marcador en blanco.

Consejos sobre marcadores

  • El patrón debe ser sencillo. El rango de detección se ve afectado por la complejidad de la marca. Los patrones simples (con grandes áreas de color blanco o negro) son detectados mejor.
  • No debe tener simetrías.
  • Cuanto mayor es la resolución del patrón reescalado, mayor es la precisión de ARToolKit, pero requiere más capacidad de cómputo para realizar las operaciones.
  • El tamaño físico de la marca afecta directamente a la facilidad de detección; a mayor tamaño de marca, mayor distancia puede ser cubierta. Por ejemplo, marcas de 7 cm de lado pueden ser detectadas hasta una distancia máxima de 40 cm (a una resolución de 640x480 píxels). Si aumentamos el tamaño de la marca a 18cm, ésta será detectada hasta una distancia de 125cm.
  • Finalmente las condiciones de iluminación afectan enormemente a la detección de las marcas. El uso de materiales que no ofrezcan brillo especular, y que disminuyan el reflejo en las marcas mejoran notablemente la detección de las marcas.



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.

domingo, 4 de mayo de 2014

AR Conceptos I

Muchas son las tecnologías implicadas y los conceptos técnicos asociados a la Realidad Aumentada (RA). En esta serie de entradas AR Conceptos, 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.


La Realidad Virtual (RV)
realidad_virtual
Realidad virtual
Es una ciencia basada en el empleo de ordenadores y otros dispositivos, cuyo fin es producir una apariencia de realidad que permita al usuario tener la sensación de estar presente en ella. Se consigue mediante la generación por ordenador de un conjunto de imágenes que son contempladas por el usuario a través de un dispositivo denominado visor. A diferencia de la Realidad Aumentada, las tecnologías  de RV sumergen al usuario dentro de un entorno completamente sintético, sin  consciencia del mundo real que lo rodea.


Inteligencia Artificial (IA)
Es un área multidisciplinaria que, a través de ciencias, tales como la informática, la lógica y la filosofía, estudia la creación y diseño de entidades capaces de razonar por sí mismas utilizando como paradigma la inteligencia humana.

Visión por Computador (CV)
También llamada visión artificial o visión técnica, es un subcampo de la inteligencia artificial cuyo propósito es programar un computador para que "entienda" una escena o las características de una imagen. Entre sus objetivos se incluyen:

  • La detección, segmentación, localización y reconocimiento de ciertos objetos en imágenes (por ejemplo, caras humanas).
  • La evaluación de los resultados (por ejemplo, segmentación, registro).
  • Registro de diferentes imágenes de una misma escena u objeto, es decir, hacer concordar un mismo objeto en diversas imágenes.
  • Seguimiento de un objeto en una secuencia de imágenes.
  • Mapeo de una escena para generar un modelo tridimensional de la escena; este modelo podría ser usado por un robot para navegar por la escena.
  • Estimación de las posturas tridimensionales de humanos.
  • Búsqueda de imágenes digitales por su contenido.

Estos objetivos se consiguen por medio de reconocimiento de patrones, aprendizaje estadístico, geometría de proyección, procesamiento de imágenes, teoría de grafos y otros campos. La visión artificial cognitiva está muy relacionada con la psicología cognitiva y la computación biológica.


Esquema de las relaciones entre la visión por computadora y otras áreas afines

Computación Gráfica (CG)
Es el campo de la informática visual, donde se utilizan computadoras tanto para generar imágenes visuales sintéticamente como para integrar o cambiar la información visual y espacial probada del mundo real. Herramientas informáticas como maya, 3D studio MAX o blender son de las más utilizadas.

Marcador artificial o Marca
Son impresiones cuadradas o circulares  normalmente en blanco y negro, utilizadas, una vez detectadas, para posicionar la cámara virtual y ubicar objetos 3D en el registro. Los principales factores que afectan a la detección de marcas son su tamaño físico, su complejidad, su orientación relativa respecto de la cámara y las condiciones de iluminación. Algunos ejemplos de marcadores son:


marcadores


Plano de la imagen
En proyección, es el plano perpendicular a las líneas de mira (trayectorias paralelas desde el ojo del observador hasta un punto particular sobre el objeto observado). Este plano esta localizado entre el ojo del observador y el objeto que esta siendo mirado.

Registro o escena
Imágenes reales registradas por una cámara en el momento o previamente. El mayor problema que implica obtener el registro es calcular la posición relativa de la cámara real respecto de la escena para poder generar imágenes virtuales correctamente alineadas con esa imagen real (posición y rotación). El registro debe ser preciso (errores de muy pocos milímetros son muy sensibles en determinadas aplicaciones, como en medicina  o en soporte a las aplicaciones industriales) y robusto (debe funcionar correctamente en todo momento). El registro puede realizarse empleando diferentes  tipos de sensores y técnicas (las más extendidas son mediante el uso de tracking visual).

Tracking
Es un conjunto de métodos que tratan de obtener una estimación de la trayectoria en el espacio realizada por un objeto o sensor. Se pueden emplear diferentes tipos de sensores como mecánicos, magnéticos, ondas sonoras, inerciales o cámaras de visión.  Las cámaras están actualmente integradas en multitud de dispositivos portátiles y permiten realizar tracking a un coste reducido.

Tracking visual
El tracking basado en cámaras de vídeo es un subcampo del tracking 3D en el que se emplean técnicas de visión por computador para obtener el posicionamiento de seis grados de libertad de la cámara  (tres grados de la posición y tres de la orientación). Para calcular la posición de la cámara respecto al mundo real se necesitan un conjunto de referencias tridimensionales. Algunos  ejemplos de estas referencias pueden ser marcas con una descripción geométrica previamente conocida u objetos previamente modelados. Realizando una comparación con lo que percibe la cámara en el mundo real es posible obtener el posicionamiento relativo a estas  referencias.

viernes, 28 de marzo de 2014

AR Fundamentos

La Realidad Aumentada (RA) se encarga del estudio de técnicas que permiten la integración interactiva y en tiempo real entre el mundo real (normalmente a partir de imágenes capturadas u otra  información como geolocalización) y el mundo virtual (que normalmente añade información digital, cálculos o modelos 3D).


La RA trata de aumentar la percepción que tenemos del mundo real mediante elementos virtuales generados por ordenador. Esto difiere de la realidad virtual,  ya que ésta última introduce al usuario en un mundo totalmente artificial. De esta forma, una escena real vista a través de un dispositivo digital, como gafas o dispositivos de mano preparados para ello, puede incluir información virtual que mejore o amplíe la escena en  algún sentido. El objetivo no es una simple superposición de gráficos digitales en una escena real, sino que se persigue que el resultado de la aumentación sea realista y consistente con el entorno. Esto implica que la información y los gráficos generados deben ser coherentes con la iluminación natural del medio, e interactuar de  forma adecuada ante estímulos humanos o naturales. Este es el concepto de Alineación 3D.

taxonomía de RA
Taxonomía de Realidad Aumentada según Milgram y Kishino

El primer paso, y el más complicado, que deben realizar los sistemas de Realidad Aumentada en el proceso de generación de RA es el denominado registro, que consiste en calcular la posición relativa de la cámara real respecto de la escena para poder generar imágenes virtuales correctamente alineadas con esa imagen real. Este registro debe ser preciso (errores de muy pocos milímetros son muy sensibles en determinadas aplicaciones, como en medicina o en soporte a las aplicaciones industriales) y robusto (debe funcionar correctamente en todo momento). Este registro puede realizarse empleando diferentes tipos de sensores y técnicas (las más extendidas son mediante el uso tracking visual con o sin marcadores).

procesoRA
Proceso de generación RA

Así, la Realidad Aumentada se sitúa entre medias de los entornos reales y los virtuales, encargándose de construir y alinear objetos virtuales que se integran en un escenario real. El siguiente video muestra los fundamentos de la Realidad Aumentada:




Cuatro son los elementos necesarios en todo proceso de generación de Realidad Aumentada:
  • Elemento capturador
  • Elemento de proyección
  • Elemento de procesado
  • Elemento activador
La Realidad Aumentada abarca diferentes disciplinas:

  • Visión por computador
  • Geometría
  • Análisis numérico
  • Reconocimiento de patrones
  • Tecnologías de integración de sensores
  • Tratamiento de gráficos 3D por ordenador
  • Tecnologías de inmersión sensorial