Convolution Matrix Image and Video
Shaders and webgl
En esta publicación se desea mostrar los resultados obtenidos al realizar el procesamiento de imágenes y videos con shaders utilizando un leguaje de alto nivel, como lo es GLSL, para empezar a aprovechar
las características de nuestro hardware y tener resultados muy favorables a nivel de máquina. El cambio y rendimiento, comparado con la velocidad de respuesta es notable en comparación con el procesamiento de imágenes y videos por medio de hardware.
A continuación, se observará cómo aplicarle mascaras de convoluciones a una imagen y video como se hizo en ejercicios anteriores. Para ello esta basada en la pagina de wikipedia Kernel (image processing) , el tutorial de shaders del profesor Andres Colubri en el sitio web processing.org y el tutorial de la página itp-xstory.github.io
donde se explican conceptos básicos de shaders con p5.js. En gran medida la construcción de este programa está basado en el anteriror ejemplo Image Convolution Matrix del procesamiento de imágenes con software, ya que se manejan funciones y procedimientos muy similares,
sin embargo, para el procesamiento por hardware,lo que se hacia para uno solo pixel en software, ahora se hace en paralelo para todos los pixeles.
Comandos por Teclado
Tecla | Operacion | Kernel(Nucleo) |
---|---|---|
![]() |
Identidad | ![]() |
![]() |
Acentuar Bordes | ![]() |
![]() |
Repujado | ![]() |
![]() |
Deteccion de Bordes 1 | ![]() |
![]() |
Deteccion de Bordes 2 | ![]() |
![]() |
Deteccion de Bordes 3 | ![]() |
![]() |
Enfocar | ![]() |
![]() |
Desenfoque de cuadro | ![]() |
![]() |
Desenfoque Gaussiano |
Para esta implementacion se hizo el uso de Shaders, el cual se configura mediante un
archivo .frag , el cual se encarga de hacer las operaciones para realizar el calculo de las mascaras de convolucion en pixeles de la imagen de manera paralela, a este archivo
solo se le envia la imagen o video y y el calor que indica la mascara de convolucion a aplicar. Adicionalmente a esto la imagen se agrego com una textura al circulo mostrado en el ejemplo anterior.
En comparacion con ejemplos anteriores para este podemos observar que se tiene una mejor eficiencia al poder operar los pixeles de forma paralela
mediante el uso de la tarjeta grafica, ya que como se habia observado anteriormente en el ejemplo Video Convolution Matrix, notamos que la eficiencia del
video era de aproximadamente 1.8 F/S en promedio, al aplicar las diferentes mascaras de convolucion, lo que afectaba de manera muy significativa la fluidez en el video
, en cambio para este ejemplo el conserva los fotogramas del video en aproximadamente 60 F/S, conservando la fluidez del video aplicando las diversas mascaras de convolucion
,lo cual comparandolo mediante la implementacion por Software muestra una mejoria en la fluidez, ya que es capaz de procesar el video con una buena tasa de Fotogramas, adicionalmente con el uso de shaders
se observa una mejoria en la utilizacion de recursos y una mayor rapidez en el procesamiento.