martes, 29 de noviembre de 2011

Áreas relacionadas a la graficación

Procesamiento de imágenes
En el procesamiento digital de imágenes se distinguen dos niveles principales de manera general:
  • Procesamiento de imágenes a bajo nivel
  • Muy poco uso de conocimiento respecto al contenido de las imágenes.
  • Comúnmente se reconoce una secuencia de cuatro para el procesamiento a bajo nivel: adquisición de la imagen, pre-procesamiento, segmentación de la imagen, descripción y clasificación de objetos.
  • Entendimiento de imágenes a alto nivel
  • Existe la capacidad de realizar toma de decisiones respecto al contenido de las imágenes.
El procesamiento de imágenes está dado por un conjunto de operaciones llevadas a cabo sobre las imágenes a fin de realizar mediciones cuantitativas para poder describirlas.
Una característica es un atributo usado para hacer decisiones respecto a objetos en la imagen. Algunos atributos son naturales y se definen mediante la apariencia visual de la imagen, los artificiales, son el resultado de operaciones realizadas a la imagen.
Una imagen f(x,y) está dada por sus coordenadas espaciales y su brillo, y es representada matemáticamente en una matriz.
Las herramientas para la adquisición de imágenes transforman la imagen visual de un objeto físico y sus características intrínsecas en un conjunto de datos digitalizados, usados para procesarla.
El procesamiento digital de imágenes tiene diversas aplicaciones y problemas:
  • Representación
  • Transformación
  • Modelado
  • Restauración
  • Reconstrucción
  • Análisis
  • Comprensión de datos

Se define como ruido cualquier entidad en las imágenes, datos o resultados intermedios que no son interesantes para la computación que se pretende llevar a cabo.
Las técnicas de filtraje son transformaciones de la imagen píxel a píxel, que dependen de los niveles de gris de los píxeles vecinos en la imagen original. El proceso de filtraje se realiza utilizando matrices denominadas máscaras, que son aplicadas sobre la imagen. Los filtros sirven para suavizar o realzar detalles de la imagen, o minimizar efectos de ruido.
Filtro gaussiano. Este filtro implementa máscaras que intentan imitar la forma de una gaussiana: G(x,y) = e - (x + y)² / 2σ², donde x, y son las coordenadas de la imagen y sigma una desviación estándar de la probabilidad de distribución asociada.
Filtro mediana (rango de vecindades). El objetivo del filtro mediana es reducir el empañamiento de los bordes. Este filtro reemplaza el píxel actualmente analizado en la imagen por la mediana del brillo con respecto a los vecinos más cercanos.
Filtro de suavizado direccional (preservación de bordes). La eliminación de ruido mediante suavizado distorsiona la información con respecto a los bordes. Que se calcula en varias direcciones según la ecuación:
I’ (x,y) = 1/Nθ(k,l)EθΣΣ I(x-k, y-l).
Filtro de suavizado conservador. Esta técnica de reducción del nivel de ruido emplea un algoritmo de filtración simple y rápido que sacrifica su poder de eliminación de ruido a cambio de preservar el detalle espacial de la frecuencia en una imagen, removiendo píxeles aislados con un valor muy alto o muy bajo.
Realce de contraste. Tiene como objetivo mejorar la calidad de las imágenes bajo ciertos criterios subjetivos del ojo humano. El contraste entre dos objetos se puede definir como la razón entre sus niveles de gris medios. La manipulación de contraste consiste en una transferencia radiométrica en cada píxel.
Filtro paso bajo es empleado para remover ruido de alta frecuencia espacial en una imagen digital. La reducción del ruido mediante el filtro de paso bajo se lleva a cabo mediante una cancelación de las variaciones más rápidas entre píxel y píxel.
Filtro paso alto opera mediante el análisis de los valores de cada píxel y cambiando estos de acuerdo a los valores de los píxeles vecinos. El filtro paso alto realza detalles de la imagen.
Filtro SUSAN (Smallest Univalue Segment Assimilating Nucleus). Preserva la estructura de la imagen alisando únicamente sobre los píxeles que se encuentran dentro de la región del píxel analizado (píxel central). Este filtro integra los mejores aspectos de los métodos de reducción de ruidos existentes incluyendo la preservación de bordes. 
En el análisis de objetos dentro de las imágenes resulta esencial distinguir entre el objeto de interés y el resto de la imagen. Una de las técnicas más conocidas es la segmentación mediante la detección de bordes. 
La detección de bordes es la aplicación de un algoritmo con esté proposito que dará como resultado un contorno. Su objetivo es obtener imágenes cuya salida muestre píxeles de mayor intensidad en los valores que detecten transiciones cercanas.
Alguno de los algoritmos de detección de bordes más comunes son:
Técnicas basadas en el gradiente: Operador de Roberts, Operador de Sobel, Operador de Prewitt, Operador Isotrópico.
Operadores basados en cruces por cero: Operador de Marr-Hildreth, Detector de Canny.
Los operadores basados en el gradiente son píxeles con un alto gradiente. Un rápido índice de cambio de intensidad dada por el ángulo del vector gradiente puede observarse en los píxeles de los bordes.
Un píxel de borde se describe por: Intensidad del borde (magnitud del gradiente) y dirección del borde (ánglo del gradiente).
Operador de Roberts. Utiliza las direcciones diagonales para calcular el vector gradiente mediante máscaras.
Operador de Sobel. Calcula la magnitud del gradiente mediante: Msx² + sy²
Operador de Prewitt. Expande la definición del gradiente en una máscara de 3x3 para se más inmune al ruido, utiliza la misma ecuación que Sobel, pero con constante c = 1.
Operador Isotrópico. Intenta llegar a un equilibrio entre operador Prewitt y Sobel. Prewitt proporciona detección para bordes verticales y horizontales, y Sobel detección de bordes diagonales.
Visión por computadora
La visión es un medio para un fin – conocer el mundo observándolo – la visión artificial tiene como medio para adquirir el conocimiento un instrumento de cómputo. El tema de visión artificial es extenso: los asuntos tales como la restauración de imágenes, mejoramiento de imagen, inspección visual automatizada, visión robótica, escenas tridimensionales, y percepción y cognición visual todas forman parte del término “Visión artificial”.
Los primeros experimentos de cómputo para desarrollar sistemas artificiales para la visión de máquinas comenzaron con amplia variedad en grados de complejidad, han sido usados en muchas áreas diversas tales como ofimática, medicina, detección remota por satélite, y en el mundo industrializado y militar. Los usos han sido muchos y variados.
A la visión artificial le compete estudiar la estructura física tridimensional del mundo para el análisis automático de imágenes.
Las imágenes son imágenes digitales: son representaciones discretas (es decir, ellas tienen valores distintos en los puntos regularmente muestreados) y son representaciones cuantificadas (es decir, cada valor es un valor del número entero).
La visión artificial incluye muchas técnicas que son útiles para si mismas. Más significativamente, sin embargo, la visión artificial se refiere al procesamiento de imágenes, estas imágenes son solamente la materia prima de una ciencia mucho más amplia, la misma que se esfuerza en última instancia para emular las capacidades perceptivas del hombre, y para verter una luz sobre la manera por la cual él logra su interacción adaptativa y robusta con su ambiente.
Animación por computadora
La animación es la simulación de un movimiento, creada por una serie de imágenes o cuadros.
La animación por computadora se puede definir como un formato de presentación
de información digital en movimiento a través de una secuencia de imágenes o cuadros creadas o generadas por la computadora.
Características de la Animación 3D
La animación por computadora permite crear escenar “realmente” tridimensionales, en una escena animada por computadora es posible cambiar el ángulo de la cámara y ver otra parte de la escena. Se pueden reutilizar partes de la animación por separado.
Una animación se ve más realista si variamos el peso y el tamaño de los objetos. Para cambiar el peso es necesario cambiar el tiempo que tarda en moverse. Mientras más pesado su masa es mayor y es necesario aplicar mayor fuerza para moverlo.
Es necesario pensar en la forma como se moverán los objetos. Cada movimiento se realiza por una razón. Es necesario conocer las formas en que actúan los cuerpos.
En la animación en tres dimensiones debe considerarse la forma en que se detiene los cuerpos. Al animar a un personaje es conveniente que si se va a detener, alguna parte de su cuerpo se siga moviendo ligeramente, como la cabeza o un brazo.
Hay tres fases que componen una acción: La anticipación de la acción, la acción en sí y la reacción a la acción.
Técnicas de animación
La animación en acetatos (cel animation), la animación basada en cuadros (flipbook animation) y la animación en sprite.
Animación Basada en Cuadros
Para hacer una secuencia, se van filmando las imágenes cuadro por cuadro y luego estos se unen para formar la animación. Es posible formar bibliotecas de movimientos de cada parte del cuerpo de la animación para de esta forma combinarlas y hacer animaciones diferentes.
Animación Basada en Sprites
Se refiere a animaciones de objetos sobre fondos estáticos, es decir, lo que cambia son los personajes.
Key Framming
Se refiere a establecer posiciones en puntos específicos de tiempo en una animación y la parte intermedia la obtiene la computadora por medio de interpolación matemática.
Rotoscopiado
Se obtienen la posición y el ángulo de los puntos clave de imágenes reales y se trata de hacer converger los modelos en computadora con ellos.
Motion Control
Consiste en obtener posiciones clave de manera automática a partir de un actor real por medio de dispositivos que se conectan a su cuerpo.
Wavelets
Significa “pequeñas ondulaciones”. Esta técnica permite que en una sola imagen se compriman una gran cantidad de datos para que al acercarse a ella, se vayan viendo los detalles.
Técnicas de Pixar
El proceso que utiliza Pixar [12] para crear sus animaciones se compone de cuatro etapas principales: Desarrollo (crear el guión de la historia), preproducción (se direccionan los retos técnicos), producción (creación de la película) y post producción (pulir los últimos detalles).

jueves, 17 de noviembre de 2011

Técnicas de sombreado clásicas y avanzadas

Clásicas: Modelo de iluminación local
Son aquellos en los que se considera que la intensidad de luz en un punto de la superficie de un objeto se debe exclusivamente a las Fuentes luminosas. 
Renderizado en Tiempo Real
La  renderización es el proceso de generar una imagen desde un modelo, y  se suele aplicar en la computación gráfica, más comúnmente a la infografía. En infografía este proceso se desarrolla con el fin de imitar un espacio 3D formado por estructuras poligonales, comportamiento de luces, texturas, materiales (agua,  madera,  metal, plástico,  tela, etcétera) y  animación, simulando ambientes y estructuras físicas verosímiles. Una de las partes más importantes de los programas dedicados a la  infografía son los motores de renderizado, los cuales son capaces de realizar técnicas complejas como  radiosidad,  raytrace, canal alfa, reflexión, refracción o iluminación global.
Cuando se trabaja en un  programa de diseño  3D asistido por ordenador, normalmente no es posible visualizar en tiempo real el acabado final deseado de una escena 3D compleja ya que esto requiere una potencia de cálculo demasiado elevada, por lo que se opta por crear el entorno 3D con una forma de visualización más simple y técnica, y luego generar el lento proceso de renderización para conseguir los resultados finales deseados. El tiempo de render depende en gran medida de los parámetros establecidos en los materiales y luces, así como de la configuración del programa de renderizado.
Realistas: Modelo de iluminación global
Son aquellos en los que se considera que la intensidad de luz en un punto de la superficie de un objeto se debe a las fuentes luminosas y al resto de los elementos existentes en la escena.
Trazado de rayos
Consiste en que –teniendo la posición y atributos físicos de cada uno de los objetos a iluminar, así como la situación, intensidad y tipo de fuentes de luz que iluminan los objetos, junto con la posición del observador y la del plano de proyección de la imagen (la pantalla), y el modo de iluminación o cálculo del color en un punto de la superficie de un objeto- se traza un rayo desde la posición del observador a través de cada uno de los píxeles del plano de proyección (una de las ventajas del raytracing es que los rayos que se procesan son sólo los rayos que parten del observador ), y por cada uno de estos rayos trazados se busca si interseca con alguno de los objetos que se representan; si no se encuentra ninguna intersección, para ese pixel, no se sigue el proceso y se le hace corresponder, por defecto, un color de fondo.  Si el rayo se encontrara con un objeto, se analizan los atributos físicos que tiene asignado el objeto y se resuelve según la modelización de la iluminación, calculando su color en el punto del objeto donde interseca el rayo.
Radiosidad
El método de radiosidad, consiste en que las reflexiones de la luz sobre los objetos se tratan como reflexiones difusas ideales de tal manera que la modelización de los efectos ópticos, como la de los espejos, por ejemplo, no se realiza. Este método hace aquello que no realiza el trazado de rayos. Para este método, los materiales de los objetos tienen superficies mate que no producen reflexiones espectaculares, por lo que la parte de energía que les llega, y que no haya sido absorbida por la superficie, se refleja por igual a lo largo de toda esta superficie del objeto. 
Cálculos de iluminación por pixel
Antes de que el color final del píxel sea decidido, un cálculo de iluminación debe ser computado para sombrear a los píxeles basados en alguna luz que puede estar presente en la escena.
Sombreado Plano o Constante
Los tres vectores, l, n y v, pueden variar según se va entre puntos sobre una superficie.
• Para un polígono plano, n es constante.
• Si se asume un observador distante, v es constante sobre el polígono.
• Si la fuente de luz es distante, l es constante.
Si los tres vectores son constantes, entonces el cálculo de sombreado se lleva a cabo una sola vez para cada polígono, y se asignará la misma sombra a cada punto en el polígono.
Sombreado plano mostrará diferencias de sombreado entre los polígonos.
Sombreado Gouraud
En el sombreado Gouraud, se define la normal en un vértice como el promedio normalizado de las normales de los polígonos que comparten el vértice.
Desde la perspectiva de OpenGL, el sombreado Gouraud es sencillo. Se necesita solamente asignar correctamente las normales de vértices. Sin embargo, existe un problema, encontrar las normales para promediar. Si el programa es lineal, especificar una lista de vértices (y otras propiedades), no se tiene la información necesaria de cuales polígonos comparten un vértice. Lo que se requiere es una estructura de datos para representar un "mesh". Atravesar esta estructura de datos puede generar los vértices con las normales promediadas. Tal estructura de datos debe contener, de manera mínima, polígonos, vértices, normales, y propiedades de los materiales.
Sombreado Phong
Phong propuso que, en lugar de interpolar intensidades de los vértices, se interpole normales a lo largo del polígono. Para un polígono que comparte lados y vértices con otros polígonos.
Se puede computar normales en los vértices interpolando sobre las normales de los polígonos que comparten el vértice. Luego, se puede usar interpolación bilineal, para interpolar las normales sobre el polígono.
Una vez obtenidas las normales en cada punto, se puede hacer cálculos de sombreado independientes. Normalmente, este proceso se combinará con la rasterización del polígono.
Sombreado Phong producirá imágenes mas suaves que con el sombreado Gouraud, pero a un costo computacional mayor.
Recortado de caras traseras
 En una escena, los objetos se tapan a sí mismos y entre sí, quedando siempre partes ocultas al observador.
Las partes ocultas deben ser eliminadas de posteriores operaciones: proceso de visibilidad.
El proceso de visibilidad es complejo, por lo que existen numerosas soluciones.
 Técnicas implicadas:
  • Cálculo de normales
  • Ordenación
  • Algoritmos de visibilidad
  • Aceleración por coherencia

Técnicas de aceleración
o    Eliminación de caras traseras
o    Coherencia
o    Contenedores
Algoritmo fundamental en el espacio de la imagen: trazado de visuales (ray casting)
Algoritmos más conocidos:
Z- Buffer
Prioridad en lista
Scan- Line
Buffer de Profundidad
El z-buffering, o el buffer de profundidad es la parte de la memoria de nuestra tarjeta gráfica encargada de la visibilidad de nuestros gráficos 3D según las coordenadas de sus pixeles, con lo que se puede gestionar qué elementos de una escena renderizada son visibles y cuales permanecerán ocultos según sus posiciones en el eje Z (distancia a cámara).
En definitiva lo que se hace es comparar las profundidades de ambos gráficos para representar el objeto más cercano al observador. La profundidad elegida se guardará en el z-buffering reemplazando a la anterior.
Transparencias
La implementación de la transparencia en un programa OpenGL no suele ser sencilla. Podemos combinar los colores de los objetos para una escena simple que contenga unas pocas superficies opacas y transparentes utilizando el valor de mezcla alpha para especificar el grado de transparencia y procesando las superficies según su orden de profundidad. Pero las operaciones de mezcla de color OpenGL ignoran los efectos de refracción, y el manejo de superficies transparentes en escenas complejas con una diversidad de condiciones de iluminación o con animaciones puede resultar muy complicado. Así mismo, OpenGL no proporciona ninguna funcionalidad para simular la apariencia superficial de un objeto translúcido (como por ejemplo un cristal esmerilado), que dispersa de manera difusa la luz transmitida a través del material semitransparente. Por tanto, para mostrar superficies translúcidas o los efectos de iluminación resultantes de la refracción, necesitamos describir nuestras propias rutinas. Para simular los efectos de iluminación a través de un objeto translúcido, podemos utilizar una combinación de valores de textura superficial y de propiedades del material. Para los efectos de refracción, podemos desplazar las posiciones de píxel para las superficies que se encuentren detrás de un objeto transparente.
El blending es simplemente una técnica que se puede utilizar para obtener efectos de transparencias.
La transparencia mediante el blending es tan difícil como incómoda, pero si se controlan algunos aspectos de la escena, se puede conseguir el efecto deseado sin demasiada complejidad.

Buffer de Stencil
Stencill Buffer es una memoria intermedia que analiza y actualiza píxeles (con sus operaciones) junto con buffer de profundidad.  Añade planos de bits adicionales para cada píxel además de los bits de color y profundidad.
Stencil Buffer se puede pensar que simplemente etiqueta los píxeles en la interpretación o renderización de la escena en la pantalla para controlar las siguientes interpretaciones. Los pasos son siguientes:
1.    Dada una escena con una sombra fija. Los píxeles de la escena se podrían considerar con “dentro” de la sombra o “fuera”. Asumimos que podemos etiquetar cada píxel apropiadamente.
2.    Cuando los píxeles ya son etiquetados, actualizamos los píxeles etiquetados como “dentro” de la sombra. Y renderizamos la escena con la fuente de luz desactivada.
3.    Después actualizamos los píxeles etiquetados como “fuera” de la sombra. Activamos la luz y renderizamos otra vez.

Buffer de acumulación
El buffer de acumulación sirve para capturar el buffer de color en un fotograma y aplicarle acumulaciones del color de otro fotograma/s. Esto básicamente sirve para simular el efecto de estela que deja un objeto cuando se mueve muy rápidamente en el encuadre de la cámara.
Fuentes de Luz
La luz puede dejar una superficie mediante dos procesos fundamentales:
• Emisión propia
• Reflexión
Normalmente se piensa en una fuente de luz como un objeto que emite luz solo mediante fuentes de energía internas, sin embargo, una fuente de luz, como un foco, puede reflejar alguna luz incidente a esta del ambiente.
Se considerarán cuatro tipos básicos de fuentes, que serán suficientes para generar las escenas más sencillas:
1. Luz ambiente
2. Fuentes de punto
3. Spotlights (Luces direccionales)
4. Luces distantes
Fuentes de color
Para la mayoría de las aplicaciones, se puede modelar fuentes de luz en base a tres componentes primarios, RGB, y puede usar cada uno de los tres colores fuentes para obtener el componente de color correspondiente que un observador humano vería.
Se describe una fuente mediante una función de intensidad o luminancia de tres componentes: Cada uno de los componentes es la intensidad de los componentes rojo, verde y azul independientes.


Luz Ambiente
Como el modelo de iluminación es local, las partes que no están iluminadas por una fuente de luz se verían totalmente negras. Para evitar esto, se supone que hay una iluminación uniforme que es el promedio de la luz reflejada por los objetos, a la que llamamos ambiental. 
En algunos cuartos, las luces se diseñan y ubican para proveer iluminación uniforme en el cuarto. Tal iluminación se logra mediante fuentes grandes con difusores cuyo propósito es esparcir la luz en todas las direcciones. Se puede crear una simulación precisa de tal iluminación, modelando todas las fuentes distribuidas, y luego integrando la iluminación de estas fuentes en cada punto de una superficie reflectora. Hacer tal modelo y generar la escena sería una tarea formidable para un sistema gráfico, especialmente si se desea ejecución en tiempo real. De manera alternativa, se puede ver el efecto deseado de las fuentes: lograr un nivel de luz uniforme en el cuarto. Esta iluminación uniforme se llama luz ambiente.

Spotlights (Luces direccionales)
Los spotlights se caracterizan por un rango delgado de ángulos por los cuales se emite luz. Se puede construir un spotlight sencillo de una fuente de punto limitando los ángulos de donde la luz de la fuente se puede ver. Se puede usar un cono cuyo ápice está en ps, apuntando en la dirección ls, y cuyo ancho está determinado por el ángulo θ.
Spotlights más realistas se caracterizan por una distribución de luz dentro del cono, normalmente con la mayoría de la luz concentrada en el centro del cono.
Fuentes de Luz Distantes
La mayoría de los cálculos de sombreado requieren la dirección de un punto sobre la superficie a la fuente de luz. Según se mueve a lo largo de la superficie, se debe recomputar este vector para calcular la intensidad en cada punto. Sin embargo, si la fuente de luz está lejos de la superficie, el vector no cambiará mucho según se mueve de un punto a otro, al igual que la luz del sol da en todos los objetos cercanos entre si con el mismo ángulo. 
En la práctica, los cálculos para fuentes de luz distantes son similares a los cálculos para proyecciones paralelas; se reemplaza la ubicación de la fuente de luz por una dirección de la fuente de luz. Por lo tanto, en coordenadas homogéneas, una fuente de luz de punto en p0 se representará internamente como una matriz columna de cuatro dimensiones
donde la fuente de luz distante se representa mediante
que es la representación de un vector.
Intensidad Completa
La intensidad completa exclusivamente para efectos de iluminación es la siguiente:




Referencias