Mostrando entradas con la etiqueta proyección. Mostrar todas las entradas
Mostrando entradas con la etiqueta proyección. Mostrar todas las entradas

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).

AR Conceptos III

Esta es la tercera 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.


Visualización 3D o gráficos 3D por ordenador

Es es conjunto de tecnologías y técnicas gráficas desarrolladas mediante software específico para crear objetos o diseños gráficos tridimensionales. Un gráfico 3D difiere de uno bidimensional principalmente por la forma en que ha sido generado. Este tipo de gráficos se originan mediante un proceso de cálculos matemáticos sobre entidades geométricas tridimensionales producidas en un ordenador, y cuyo propósito es conseguir una proyección visual en dos dimensiones para ser mostrada en una pantalla o impresa en papel.

Alrededor de  la visualización 3D existen diferentes técnicas y conceptos.

Modelado
La etapa de modelado consiste en ir dando forma a objetos individuales que luego serán usados en la escena creada. Existen diversos tipos de modelado, con NURBS y modelado poligonal o subdivisión de superficies. Además, aunque menos usado, existe otro tipo llamado Image Based Modeling (IBM) que consiste en convertir una fotografía a 3D mediante el uso de diversas técnicas, de las cuales, la más conocida es la fotogrametría cuyo principal impulsor es Paul Debevec. El Modelado de Superficies no tiene curvas calculadas en cada linea (ejemplo SketchUp).

modelado por superficies
Modelado por superficies NURBS

Iluminación
Creación de luces de diversos tipos puntuales, direccionales en área o volumen, con distinto color o propiedades. Esto es la clave de una animación. Gran parte de la iluminación en 3D requiere del entendimiento físico de la luz en la realidad, este entendimiento puede ir desde lo más básico en el tema como por ejemplo el concepto de iluminación global hasta comportamientos complejos y extraños de la luz como la dispersión en superficies y subsuperficies

Animación
La animación es muy importante dentro de los gráficos porque en estas animaciones se intenta imitar a la realidad misma; por esto es un trabajo que usualmente requiere muchas horas. Los objetos se pueden animar en cuanto a:
  • Transformaciones básicas en los tres ejes (XYZ), rotación, escala y traslación.
  • Forma: mediante esqueletos, mediante deformadores o dinámicas.

Renderizado
renderizado
Renderizado
Mediante el renderizado se consiguen imágenes realistas. Proceso de generar una imagen o vídeo mediante el calculo de iluminación global (GI) partiendo de un modelo en 3D. Este término técnico es utilizado por los animadores o productores audiovisuales (CG) y en programas de diseño en 3D como por ejemplo 3DMax, Maya, Blender, etc.

El proceso de renderizado se desarrolla con el fin de generar en un espacio 3D formado por estructuras poligonales; una simulación realista del comportamiento tanto de luces, texturas y materiales (agua, madera, metal, plástico, tela, etcétera) como también de los comportamientos físicos y animación, es el caso de la simulación de colisiones y fluidos, simulando ambientes y estructuras físicas verosímiles. Una de las partes más importantes de los programas dedicados a la renderización es el motor de renderizado, el cual es capaz de realizar complejos cálculos como radiosidad, raytrace (trazador de rayos), canal alfa, reflexión, refracción o iluminación global (GI).

El proceso de rénder necesita una gran capacidad de cálculo, pues requiere simular gran cantidad de procesos físicos complejos. La capacidad de cálculo se ha incrementado rápidamente a través de los años, permitiendo un grado superior de realismo en los rénders. Los estudios de cine que producen animaciones generadas por ordenador hacen uso, en general, de lo que se conoce como render farm (granja de rénder) para acelerar la producción de fotogramas.


Radiosidad
La radiosidad es un conjunto de técnicas para el cálculo de la iluminación global que tratan de resolver el problema básico de la renderización de la forma más realista posible en el campo de los gráficos 3D por computadora. Dicho problema es el transporte de la luz que sólo se puede modelar de forma óptima considerando que cada fuente luminosa emite un número enorme de fotones, que rebotan al chocar contra una superficie describiendo una cantidad de trayectorias imposibles de simular en un computador. Una de las técnicas empleadas en el cálculo de la radiosidad es el método de Montecarlo para resolver este problema mediante números aleatorios y de forma estadística.

Raytrace
Determina las superficies visibles en la escena que se quiere sintetizar trazando rayos desde el observador (cámara) hasta la escena a través del plano de la imagen. Se calculan las intersecciones del rayo con los diferentes objetos de la escena y aquella intersección que esté más cerca del observador determina cuál es el objeto visible.

El algoritmo de trazado de rayos extiende la idea de trazar los rayos para determinar las superficies visibles con un proceso de sombreado (cálculo de la intensidad del píxel) que tiene en cuenta efectos globales de iluminación como pueden ser reflexiones, refracciones o sombras arrojadas. Para simular los efectos de reflexión y refracción se trazan rayos recursivamente desde el punto de intersección que se está sombreando dependiendo de las características del material del objeto intersecado. Para simular las sombras arrojadas se lanzan rayos desde el punto de intersección hasta las fuentes de luz. Estos rayos se conocen con el nombre de rayos de sombra (shadow rays).

El algoritmo básico de trazado de rayos fue mejorado por Robert Cook (1985) para simular otros efectos en las imágenes mediante el muestreo estocástico usando un método de Montecarlo; entre estos efectos podemos citar el desenfoque por movimiento (blur motion), la profundidad de campo o el submuestreo para eliminar efectos de aliasing en la imagen resultante.

En la actualidad, el algoritmo de trazado de rayos es la base de otros algoritmos más complejos para síntesis de imágenes (mapeado de fotones, Metropolis, entre otros) que son capaces de simular efectos de iluminación global complejos como la mezcla de colores (color blending) o las cáusticas.

Proyección
Es la transformación de coordenadas para convertir cada objeto 3D desde el sistema de coordenadas de visualización (coordenadas de la cámara) en un objeto 2D dibujado sobre en el plano de visualización (coordenadas de pantalla). Ecomputer vision existen distintos modelos de proyección, aunque los más utilizados son:

  1. Modelo de proyección paralelaConsiste en proyectar puntos del espacio contra el plano de proyección mediante haces de rectas siempre paralelas entre sí. Esta técnica de representación gráfica se utiliza en diseños de ingeniería y arquitectura ya que su principal ventaja es que mantiene las proporciones relativas de lo representado y se puede medir sobre él directamente. De esta manera se puede reconstruir el objeto fácilmente a partir de representaciones concretas.
  2. Modelo de proyección en perspectivaConsiste 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 efecto distancia al quedar representados los objetos más alejados con un menor tamaño. 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.
    proyección en perspectiva
    Modelo de proyección en perspectiva


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



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.