martes, 29 de noviembre de 2011

Resumen de la Unidad 5

3.1 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
• 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.
•Muy poco uso de conocimiento respecto al contenido de las imágenes.
-Entendimiento de imágenes a alto nivel
•Existe la capacidad de realizar toma de decisiones respecto al contenido de las imágenes.
El objetivo de este trabajo emplea cada una de las herramientas descritas para el procesamiento de imágens de bajo nivel, su alcance llega hasta el nivel de entendimiento al aplicar la toma de decisiones basada en las características obtenidas a partir 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; es decir, extraer ciertas características que permitan mejorar, perfeccionar o detallar la imagen.
 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, en tanto otros, los artificiales, son el resultado de operaciones realizadas a la imagen .
El poder realizar mediciones sobre las imágenes generalmente requiere que sus características estén bien definidas, los bordes bien delimitados y el color y brillo sean uniformes. El tipo de mediciones a realizar para cada característica específica es un factor importante para poder determinar los pasos apropiados para su procesamiento. Los procedimientos aplicados para el procesamiento de imágenes están orientados a las aplicaciones. Lo que puede ser adecuado para una aplicación puede no serlo para otra.
En el procesamiento digital de imágenes, existen diversas aplicaciones y problemas:
-Representación
-Transformación
-Modelado
-Restauración
-Reconstrucción
-Análisis
-Compresión de datos
Para propósitos de este trabajo, son las áreas de restauración y análisis donde se presentan las principales herramientas de uso básico: aplicación de filtros para la eliminación de ruido (restauración), detección de esquinas, bordes, líneas, y puntos (análisis), para la detección de características.
3.2 Filtros para la eliminación de ruido en las imágenes
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.
Para realizar el procesamiento en este sistema, se considera como ruido en las imágenes  electrocardiográficas un fondo con cuadriculado, así como cualquier otro píxel ajeno a la curva del electrocardiograma que pueda presentarse en la imagen.
Las técnicas de filtraje son transformaciones de la imagen píxel a píxel, que no dependen solamente del nivel de gris de un determinado píxel, sino también del valor 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. La imagen resultante de la aplicación de un filtro es una nueva imagen. Los filtros sirven para suavizar o realzar detalles de la imagen, o inclusive minimizar efectos de ruido.
3.2.1 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.
Este filtro tiene el inconveniente de que, además de remover el ruido, empaña la imagen ocasionando pérdida de los detalles más finos. El filtro gaussiano es comúnmente utilizado en aplicaciones de detección de bordes y análisis de escala espacial.
3.2.2 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. Este filtro tiene la ventaja de no ser afectado por píxeles individuales ruidosos. La eliminación de ruido obtenida con el filtro mediana es bastante buena, con la ventaja de no empañar demasiado los bordes .
3.2.3 Filtro de suavizado direccional (preservación de bordes)
La eliminación de ruido mediante suavizado distorsiona la información con respecto a los bordes. Para reducir el empañamiento de bordes al realizar el suavizado se puede usar un filtro de promediado direccional que se calcula en varias direcciones según la ecuación: I’ (x,y) = 1/Nθ(k,l)EθΣΣ I(x-k, y-l).
3.2.4 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.
3.2.5 Realce de contraste
La técnica de realce de contraste tiene como objetivo mejorar la calidad de las imágenes bajo ciertos criterios subjetivos del ojo humano. Normalmente esta técnica es utilizada como una etapa de pre-procesamiento para sistemas de reconocimiento de patrones.
3.2.6 Filtro paso bajo
El filtro paso bajo es un tipo de filtro de suavizado empleado para remover ruido de alta frecuencia espacial en una imagen digital. Este ruido es generalmente introducido en la imagen durante el proceso de conversión de analógico a digital como un efecto secundario de la conversión física de patrones de energía luminosa a patrones eléctricos.
3.2.7 Filtro paso alto
De manera general, el filtro paso alto opera de la misma manera que el filtro paso bajo, 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 efecto en este filtro es, sin embargo, el opuesto. En vez de obtener un suavizado de la imagen, el filtro paso alto realza detalles de la imagen.
3.2.8 Filtro SUSAN (Smallest Univalue Segment Assimilating Nucleus)
El algoritmo SUSAN para la eliminación de ruido 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) tomando un excedente del promedio de los píxeles en la localidad que cae dentro del USAN (Univalue Segment Assimilating Nucleus), siendo este un núcleo circular de píxeles utilizado para el cálculo matemático del nuevo valor del píxel central.
3.3 Operadores para la detección de bordes
La detección de esquinas y líneas se basa en los operadores de detección de bordes, mismos que, mediante el cálculo de primeras y segundas derivadas permiten determinar puntos de principal importancia para poder realizar las mediciones necesarias.
Algunos de los algoritmos de detección de bordes más comunes son los siguientes:
-Técnicas basadas en el gradiente:
 •Operador de Roberts
•Operador de Sobel
•Operador de Prewitt
•Operador Isotrópico (u operador de Frei-Chen)
-Operadores basados en cruces por cero:
•Operador de Marr-Hildreth
 •Detector de Canny
Los operadores basados en el gradiente asumen que los bordes de una imagen son píxeles con un alto gradiente.
Un píxel de borde se describe mediante dos características importantes:
1. Intensidad del borde, que es igual a la magnitud del gradiente.
2. Dirección del borde, que es igual al ángulo del gradiente.
3.3.1 Operador de Roberts
Es el operador de gradiente más simple. Utiliza las direcciones diagonales para calcular el vector gradiente.
3.3.2 Operador de Sobel
El operador de Sobel es la magnitud del gradiente, calculada mediante: M√ sx² + sy² donde las derivadas parciales son calculadas por:
sx = (a2 + ca3 +a4) – (a0 + ca7 +a6)
sy = (a6 + ca5 + a4) – (a0 + ca1 + a2)
3.3.3 Operador de Prewitt
El operador de Prewitt, al igual que el de Sobel, expande la definición del gradiente en una máscara de 3 X 3 para ser más inmune al ruido, utilizando la misma ecuación que Sobel.
3.3.4 Operador Isotrópico
El operador de Prewitt proporciona una buena detección para bordes verticales y horizontales, mientras que el operador de Sobel es mejor en la detección de bordes diagonales.
4 La animación por computadora
La animación por computadora se puede definir como un formato de presentación de información digital en el movimiento atreves de una secuencia de imágenes o cuadros creada por la computadora, se utilice principalmente en video juegos películas.
Es la técnica que consiste en crear imágenes en movimiento mediante el uso de ordenadores o computadoras. Cada vez más los gráficos creados son en 3D, aunque los gráficos en 2D todavía se siguen usando ampliamente para conexiones lentas y aplicaciones en tiempo real que necesitan renderizar rápido. Algunas veces el objetivo de la animación es la computación en sí misma, otras puede ser otro medio, como una película. Los diseños se elaboran con la ayuda de programas de diseño, modelado y por último renderizado.
4.1 Características de la animación 3D
 Una característica importante de la animación por computadora es que nos permite crear escenas realmente tridimensionales. Esto quiere decir que a diferencia de la animación dibujada a mano, en una escena animada por computadora es posible cambiar el ángulo de la cámara y con esto ver otra parte de la escena.
Hay tres frases que componen una acción: la anticipación de la acción, la acción en si y la reacción, para que una animación se vea realista, es necesario que el tiempo empleado en cada parte de esa acción sea el indicado. También se debe de mantener el flujo y la continuidad entre las acciones y esto se lograra traslapando un poco cada parte de la acción.
4.2 Animaciones en el cine
El cine de imagen real registra imágenes reales en movimiento continuo, descomponiéndolo en un número discreto de imágenes por segundo. En el cine de animación no existe movimiento real que registrar, sino que se producen las imágenes una por una mediante dibujos, modelos, objetos y otras múltiples técnicas, de forma que, al proyectarse consecutivamente, se produzca la ilusión de movimiento. Es decir, que mientras en el cine de imagen real se analiza y descompone un movimiento real, en el cine de animación se construye un movimiento inexistente en la realidad.
4.3 Tecnicas de animación
4.3.1 Animacion basada en cuadros
Es la más utilizada. Para hacer una secuencia las imágenes se van filmando 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.
4.3.2 Animacion basada en sprites
Se refiere a animación basada en objetos de fondo estático, es decir, lo que cambia son los personajes. Esta técnica es aplicada en video juegos.
 4.3.3 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. Es necesario hacer un key frame para cada control en cada nivel de la jerarquía del modelo.
4.3.4 Rotoscopiado
Se obtiene la posición y el ángulo de los puntos clave de la imagen real y se trata de hacer converger los modelos en computadora con ellos.  
4.3.5 Motion Control
La técnica de Motion control es muy utilizada actualmente, sobre todo en sets virtuales y en el cine. consiste en obtener posiciones clave de manera automática a partir de un actor por medio de dispositivos que se conectan en su cuerpo.
4.3.6 Wavelets
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.
4.3.7 Técnicas de Pixar
Esta etapa consiste en desarrollar (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).
5 Visión por computadora
Hay varias razones por las que debemos estar interesados en la visión computacional o visión artificial, pero los dos siguientes aspectos nos permitirán observar las distintas direcciones en las cuales se puede ver el tema:
<!--[if !supportLists]-->a) <!--[endif]-->Todas las formas de vida inteligente poseen la capacidad de obrar recíprocamente y de manipular su ambiente de una manera coherente y estable. Esta interacción es facilitada por la continua intervención inteligente entre la percepción y el control del movimiento (es decir acción); la percepción visual es de fundamental importancia para la vida inteligente.
<!--[if !supportLists]-->b) <!--[endif]-->Más fabricantes están preocupados por la integridad cosmética de sus productos; los clientes comparan absolutamente a menudo la calidad del aspecto con calidad funcional. Así pues, para asegurar la acertada comercialización a largo plazo de un artículo, es altamente deseable comparar su aspecto visual antes de ser empaquetado y enviado. Asimismo, es deseable que el proceso de la inspección esté automatizado y efectuado sin la intervención humana.
Estas dos motivaciones para el estudio de la percepción caracterizan dos posibles razones del interés para el procesamiento, análisis, e interpretación de imágenes visuales: desde la filosófica y quizás esotérica inmediata y pragmática. Y todo el argumento entre estas dos razones presentes, una de estas con una amplia variedad de espectros en el interés comercial, dificultad y, por supuesto, del éxito.
La experiencia en el mundo en que vivimos esta cubierta por una variedad sin fin de objetos, animados e inanimados. Así pues, si la visión es un medio para un fin – conocer el mundo observándolo – la visión artificial es exactamente lo mismo salvo que el medio por el cual se adquiere el conocimiento ahora es un instrumento de cómputo más bien que el cerebro de alguna ser vivo. Sin duda, esto es una definición muy amplia. Pero el tema de la 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”.
La visión artificial incluye muchas técnicas que son útiles para si misma, Ej., el procesamiento de imágenes (que se refiere a la transformación, codificación, y transmisión de las imágenes) y los patrones, de las cuales los patrones visuales son pero solo una instancia). Más significativamente, sin embargo, la visión artificial incluye técnicas para la descripción útil de la forma y del volumen, para modelos geométricos, y para el llamado proceso cognoscitivo. Así, aunque la visión artificial se refiere ciertamente 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, quizás, para verter una luz sobre la manera por la cual él logra su interacción adaptativa y robusta con su ambiente.

jueves, 17 de noviembre de 2011

Tecnicas de sombreado clasicas y avanzadas

Clasicas: Iluminacion local       
Calculos de iluminación por vértices
Para poder aplicar iluminación necesitamos asociar a cada vértice de nuestro objeto un vector normal asociado. Cuando tenemos la normal calculada tenemos que normalizarla, o sea, dividir ese vector por su propio modulo para que sea unitario, pero también podemos hacer que se encargue la OpengGl activando la normalización,
glEnable GL_NORMALIZE
o desactivarla con,
glDisable GL_NORMALIZE
el usar GL_NORMALIZE dependerá de nuestra aplicación ya que forzando a que sea OpenGl que las utilice se ralentiza ya que le estamos hacer mas cálculos de los que debe.
Para definir las normales en opengl utilizaremos la función glNormal3f(X,Y,Z) por ejemplo para definir una cara con 4 vértices la definiremos de la siguiente manera
GlBegin GL_QUADS
glNormal3f nX,nY,nZ
glvertex3f x,y,z
glvertex3f x,y,z
glvertex3f x,y,z
glvertex3f x,y,z
glEnd
Es decir, cada vez que queremos definir una normal a un vértice usamos glNormal y el vértice/s que siguen se asocian a esta normal.
La luz de tipo SMOOTH el polígono que definamos tendrá un color definido par cada vértice, asociando las normales a los vértices OpenGL puede hacer los cálculos de los colores a cada uno del vértice y después hace una interpolación de colores con este tipo de luz se acerca bastante al realismo pero a un la podemos mejorar.

Posterior relleno de triangulos
Rellenado de los triángulos (rastering). Para ello se realizan varias fases de procesamiento por Pixel. Comprobar si cada nuevo pixel es visible o no (comprobación de profundidad). 
Interpolación lineal del color para el nuevo pixel (método de Gouraud). 
Si existe una textura definida o transparencia, efectuar la modificación de color correspondiente. 
Se trata de la última fase, en ocasiones la más costosa, del proceso, por lo que es la primera que se suele integrar en el hardware gráfico. En esta etapa se trata de asignar colores a los pixels correspondientes al interior de cada triángulo proyectado que cae dentro del área de visualización. Los colores asignados deben calcularse por el método de Gouraud, interpolando linealmente entre los colores de los tres vértices.
Renderizado en tiempo real
La idea fundamental del procesado en tiempo real es que todos los objetos deben ser descompuestos en polígonos. Estos polígonos serán descompuestos a su vez en triangulos. Cada triangulo será proyectado sobre laventana bidimensional y rellenado con los colores adecuados para reflejar los efectos de la iluminación, texturas, etc. Ua vez se han generado los triangulos, en la pipeline existen dos partes claramente diferenciadas: uina primera etapa operaciones realizadas sobre cada uno de los vértices, y después de que estos se proyecten sobre la ventana, entonces comienza una segunda fase de cálculos realizados para cada pixel cubierto por los triangulos.

Alto Acabado

Sombreado Constante o plano. Un cálculo para todo el polígono. Obtenemos una intensidad  que aplicamos a un conjunto de puntos de un objeto (p.ej. todo un triángulo). Aceleramos el proceso de síntesis.  Correcto si se verifica: Fuente de luz en el infinito. Observador en el infinito. El polígono representa una superficie plana real del objeto que se modela y no es una aproximación de un objeto curvo.
Realistas: iluminación global
Trazado de rayos
El trazado de rayos computa la interaccion de la luz desde un punto de vista determinado y es particularmente adecuado para superficies reflectantes. Puede utilizarse como propiedad especifica de un determinado material.
Radiosidad
Esta basado en principios generales que se pueden encontrar en un manual general sobre rendering. En el estado inicial la escena consta de dos tipos de objetos: objetos que emiten luz y objetos que reciben luz. A partir de aquí, en una primera vuelta, se computa la luz que recibe cada objeto en una aproximación mas exacta, cada parte de un objeto, según una subdivisión cuya densidad puede percisarse en sucesivas aproximaciones. Cada una de estas partes, según su grado de reflexividad, su orientación y su distancia con respecto a las fuentes de luz original, se convertirá en una segunda vuelta, en un nuevo emisor de energía lumínica, una fuente de luz secundaria que iluminara a su vez a los objetos que le rodean.
Calculos de iluminación por pixel
La iluminación por píxel en tiempo real es una tecnología revolucionaria ofrecida como primicia por NVIDIA Shading Rasterizer. La iluminación dinámica a nivel de píxel libera a los desarrolladores de las restricciones de otros sistemas de iluminación y pone a su alcance toda una gama de sofisticados efectos. La potencia de NSR eleva la calidad de la experiencia multimedia que ofrecen las GPU NVIDIA. NSR mantiene la alta resolución en entornos dinámicos y proporciona la experiencia de juego más impactante.
La técnica Pixel Shader
La técnica Pixel Shader es una tecnología que pueden incorporar el hardware que se encarga de convertir las instrucciones generadas por un ordenador o una videoconsola en gráficos visualizables en la pantalla de TV o monitor, dicha técnica se encarga de virtualizar el mundo físico mediante gráficos generados digitalmente, en concreto el pixel shader se encarga de la gestión de iluminado de la escena, produciendo los efectos lumínicos de luces y sombras.

El hardware que implementa Pixel Shader es comúnmente conocido como "la tarjeta gráfica", o adaptador gráficos, VGAs o tarjetas de vídeo.
Sombreado Constante o plano
Un calculo para todo el polígono
Obtenemos una intensidad  que aplicamos a un conjunto de puntos de un objeto (p.ej. todo un triángulo)
Aceleramos el proceso de síntesis
 Correcto si se verifica
Fuente de luz en el infinito
Observador en el infinito
El polígono representa una superficie plana real del objeto que se modela y no es una aproximación de un objeto curvo.
Calcula normales al polígono
La iluminación cte. no produce buenos resultados en superficies curvas (aprox. por
facetas planas).
Evaluar la ecuación de iluminación en cada punto de una superficie genérica es muy costoso. Posible solución: aproximar mediante facetas planas e interpolar dentro de cada  polígono. Hay que evitar producir una apariencia “faceteada” (bandas de Mach; respuesta del ojo humano).
Sombreado Constante/Plano
(Flat Shading)
Obtenemos una intensidad que aplicamos a un conjunto de puntos de un objeto
–Aceleramos el proceso de síntesis
–Correcto si se verifica:
• Fuente de luz en el infinito
• Observador en el infinito
• El polígono representa una superficie plana real del objeto que se modela y no es una    aproximación de un objeto curvo.

Sombreado por Interpolación
La iluminación cte. no produce buenos resultados en superficies curvas (aprox. Por facetas planas)
– Evaluar la ecuación de iluminación en cada punto de una superficie genérica es muy costoso
– Posible solución: aproximar mediante facetas planas e interpolar dentro de cada polígono
– Hay que evitar producir una apariencia “facetada” (bandas de Mach; respuesta del ojo humano).

Sombreado de Gouraud
Se basa en la interpolación de intensidad o color
• Considera que facetas planas vecinas proceden de aproximar una superficie curva (salvo que se declare una arista real entre ambas)
• Elimina en gran medida las discontinuidades de iluminación
• Es sencilla, pero produce peores resultados en objetos con brillos especulares que el método de  Phong.
• Implementado en OpenGL.
Necesita la dirección de la normal en cada vértice (si se desconoce, se calcula a partir de las normales de las facetas que contienen el vértice)
• Si dos facetas están separadas por una arista real, se utilizan dos normales diferentes para
trabajar en cada faceta (se promedian las normales situadas solo a un lado de la arista)
• A partir de la normal en cada vértice, se evalúa la ecuación de iluminación (solo para cada vértice) y se obtiene un valor de intensidad para cada uno de ellos
• Se realiza una interpolación bilineal para obtener la intensidad en cada punto dentro de la
faceta (de forma incremental).

Sombreado de Phong
• Se basa en la interpolación de la dirección de la normal, calculada de la misma forma que antes.
• Igual que en Gouraud, se interpola a lo largo de cada línea de barrido, entre los puntos inicial y final, interpolados a su vez de los valores de los vértices de la arista.
• Captura mejor los brillos especulares en el medio de facetas planas (Gouraud los puede omitir).
Produce mejores resultados, a un coste computacional mayor (hay que incrementar la dirección de la normal en tres direcciones, normalizarla y calcular la ecuación de sombreado encada punto)
• Si el coeficiente de reflexión especular es pequeño, los resultados no difieren tanto (se pueden combinar objetos sombreados por ambos métodos en una escena).

Intensidad completa
 La intensidad completa exclusivamente por efectos de iluminación es la siguiente:

http://www.fdi.ucm.es/profesor/segundo/PDFs/7SombreadoVisualizacion.pdf

http://cannes.itam.mx/Alfredo/Espaniol/Cursos/Grafica/Sombreado.pdf

perdon este esta mal el otro si esta bien

Clasicas: Iluminacion local
Calculos de iluminación por vértices
Para poder aplicar iluminación necesitamos asociar a cada vértice de nuestro objeto un vector normal asociado. Cuando tenemos la normal calculada tenemos que normalizarla, o sea, dividir ese vector por su propio modulo para que sea unitario, pero también podemos hacer que se encargue la OpengGl activando la normalización,