Al momento de estudiar el proceso de creación y manipulación de una imagen digital a una aplicación visual moderna, podemos encontrar muchas tecnica y efectos muy interesantes. Sin embargo, entender la teoria detras de las imagenes y videos es de suprema importancia.
Algoritmos como el z-buffer, o tambien llamado algoritmo de profundidad, creado por Edwin Catmull (expresidente de Pixar y Walt Disney Animation Studios, ganador del premio Turing) es de especial importancia cuando se trabaja sobre imagenes o video directamente por Hardware, y aunque está ampliamente extendido nos encontramos con algunas limitantes que es dificil ver cuando se realizan practicas a baja escala, con pocos datos, o con imagenes standar, como lo son por ejemplo:
La ventaja de este tipo de algoritmo es su eficiencia en procesar grandes cantidades de datos en periodos cortos de tiempo.
Por ejemplo, el tiempo de carga en el taller 1 de la imagen del Ascii, superaba los 5 segundos de procesamiento computacional hasta que finalmente se podían ver representasiones visuales en pantalla, con lo que la implementación por Hardware es practicamente instantaneo, lo que es cerca del 80% de incremento en velocidad de procesamiento y de rendering.
El algoritmo de coordenadas baricentricas por otro lado, es bastante eficiente computacionalmente, de orden lineal a la cantidad de vertices, ya que al ingresar un poligoco, como lo es un triangulo, tendrá que procesar los 3 lados para hallar sus coordenadas, si el poligono tiene 5 lados, evaluará 5 veces la distancia y encontrará dichas coordenadas, y si el polígono tiene n lados, la complejdiad computacionar será lineal a n.
Un sombreador de vértices es una función de procesamiento de gráficos que se utiliza para agregar efectos especiales a los objetos en un entorno 3D mediante la realización de operaciones matemáticas en los datos de los vértices de los objetos. Cada vértice puede definirse mediante muchas variables diferentes. Por ejemplo, un vértice siempre se define por su ubicación en un entorno 3D utilizando las coordenadas x, y y z. Los vértices también se pueden definir por colores, coordenadas. Los vértices también se pueden definir por colores, texturas y características de iluminación. Los Vertex Shaders en realidad no cambian el tipo de datos; simplemente cambian los valores de los datos, de modo que un vértice emerge con un color diferente, texturas diferentes o una posición diferente en el espacio.
Un Fragment Shader es la etapa de Shader que procesará un Fragmento generado por la Rasterización en un conjunto de colores y un único valor de profundidad , herramienta principal para el desarrollo del taller, en donde se pasan las imagenes y los shaders son capaces a una gran velocidad mapear los vertices y los canales de color para ser manipulados.
En esta seccion realizamos diferentes metodologias implementadas por Hardware, y tecnicas para obtener varios resultados muy interesantes, y gracias a esta experiencia pudimos encontrar ciertas conclusiones:
Las aplicaciones que se pueden obtener en los avances e investigaciones que se realizan hoy en dia usando las tecnicas usadas en esta seccion pueden ser variadas, pero aca mencionamos algunas:
Las mascaras de convolucion permiten filtrar imágenes para tomar información relevante, la cual es aplicable a otras diciplinas como reconocimiento de caracteristicas.
El ascii art es una técnica de compresión de imágenes y videos muy interesante que puede dar mucho usos en diferentes campos, por ejemplo para equipos en donde no se necesite necesariamente pixeles y que posean poca capacidad computacional.
Al momento de seleccionar la foto indicada en un fotomosaico o el caracter indicado en ascii art, podria ser muy util conocimientos en avances recientes de la inteligencia artificial, machine learning y computacion paralela.
Hoy en día hay bastantes software que incorporan las tecnicas usadas en esta seccion que permiten visualizar las imagenes con diferentes aspectos.