Image Shaders

Anuncio
Image Shaders
Carlos Marín Lora
PATG
Ingeniería Multimedia
ETSE - UV
Índice
- Estado del Arte
- Carga de Imágenes
- Shaders
Estado del Arte
Estado del Arte
Aplicaciones similares
- Blender Shading Cam
- WebCam Toy
- Photoshop
- OpenGL Camera App
Carga de Imágenes
Carga de Imágenes
SOIL
- SImple OpenGL Image Loader.
- Permite cargar imágenes en formatos como bmp, jpg y png
directamente en texturas.
- Código abierto.
Shaders
Shaders
Original Vertex Shader
- No se produce ninguna modificación.
- Común para todos los elementos posteriores.
- Se recibe una posición y unas coordenadas de textura.
- Y se pasan tal cual al fragment shader.
Shaders
Original Fragment Shader
- No se produce ninguna modificación.
- Los datos salen tal y como entran a la tubería.
Shaders
RGB Filters Fragment Shader
- En cada uno de los tres shaders se eliminan todas las componentes de
color distintas al seleccionado.
- Y únicamente se muestran las componentes del color seleccionado para
cada pixel.
Shaders
GrayScale Fragment Shader
- Con los valores establecidos de la luminancia relativa en el espacio de
color RGB.
- Obtenemos la luminancia para cada pixel.
- Aplicamos el valor de luminancia a las componentes de color
resultantes.
Shaders
Brightness Fragment Shader
- Hacemos una interpolación lineal entre el negro (valor bajo) y el color
del pixel.
- En función de un valor que determina la intensidad del brillo.
Shaders
Contrast Fragment Shader
- Hacemos una interpolación lineal entre el gris (valor medio) y el color
del pixel.
- En función de un valor que determina la intensidad del contraste.
Shaders
Saturation Fragment Shader
- Con los valores establecidos de la luminancia relativa en el espacio de
color RGB. Obtenemos la luminancia para cada pixel.
- Determinamos el valor de luminancia como target.
- Hacemos una interpolación lineal entre el target (escala de grises) y el
color del pixel.
- En función de un valor que determina la intensidad de la saturación.
Shaders
Negative Fragment Shader
- Invertimos los valores de color para cada pixel.
- Restamos al blanco el color de cada pixel.
Shaders
Pixelize Fragment Shader
- Calculamos el radio de acción del pixel base a partir de la función mod.
- Todo pixel dentro de ese radio de acción mostrará los mismos valores
de color que el pixel base.
- En función de un vector dimensión podemos alterar el radio de acción
del pixel base.
Shaders
Edge Fragment Shader
- En función del tamaño en pixels de la imagen.
- Obtenemos los valores de los contornos mediante el operador Sobel
Edge Detector.
- Un gradiente 2D que destaca las regiones de altas frecuencias.
- Lo usamos sobre la representación en escala de grises del pixel para
obtener el valor del gradiente.
Shaders
Edge Fragment Shader
- El operador consiste en dos kernels de convolución:
- Diseñados para recorrer los pixel horizontal y verticalmente.
Shaders
Edge Fragment Shader
- Los resultados para cada componente de textura vendrán dadas por:
- Para obtener el valor de color interpolamos linealmente el color del
pixel con la magnitud del valor obtenido.
Shaders
Blur Fragment Shader
- Desenfoque Gaussiano 3x3.
- Basándonos en cálculos similares al Edge Fragment Shader.
- La intensidad del desenfoque depende del radio de acción que le
proporcionamos.
Shaders
Toons Fragment Shader
- Basándonos en mismos cálculos que el Edge Fragment Shader.
- En función de un valor umbral de magnitud.
- Damos como salida de color el negro o el valor resultante de la
cuantización del color original en función de un valor predeterminado.
Shaders
Hand Fragment Shader
- Basándonos en mismos cálculos que el Edge Fragment Shader.
- Generamos líneas en función del valor del pixel en escala de grises.
- Dependiendo de un umbral pintaremos en un valor de gris determinado
o en otro.
Shaders
Wrap Fragment Shader
- Shaders de deformación de las imágenes.
- En este caso vamos a empujar el centro de la imagen hacia dentro.
- En función de unos parámetros de escalado conseguimos dar la
apariencia de agujero de gusano.
Shaders
Twirl Fragment Shader
- La transformación twirl rota la imagen alrededor de un punto en
función de un paso de ángulo.
- El paso de ángulo decrece en función que nos acercamos a los límites
del radio de rotación preestablecido.
- Se produce una traslación de los valores de color en los texels a los
resultantes en los pixels.
¿Preguntas?
GRACIAS
Shaders
Referencias
- MathWorks. Image Processing on a GPU - mathworks.es
- Algorithms for Image Processing and Computer Vision - J.R.Parker
- Image Processing with Kernels - antongerdelan.net
- Sobel Edge Detector - homepages.inf.ed.ac.uk/rbf/HIPR2/sobel.htm
- Processing.org - Shaders in Processing.
- osgEarth Reference Guides - osgearth.readthedocs.org
- oZone3D - ozone3d.net
- El Código Gráfico - elcodigográfico.wordpress.com
- SOIL -lonesock.net/soil.html
Image Shaders
Carlos Marín Lora
PATG
Ingeniería Multimedia
ETSE - UV
Descargar