21
PIXELACIÓN DE IMÁGENES AVANZADA USANDO EL ALGORITMO SLIC Pablo Barrientos Lobato Antonio Borrego Aristu Daniel Cáceres Maña Procesamiento de Imágenes Digitales

PIXELACIÓN DE IMÁGENES AVANZADA USANDO EL ALGORITMO SLIC Pablo Barrientos Lobato Antonio Borrego Aristu Daniel Cáceres Maña Procesamiento de Imágenes Digitales

Embed Size (px)

Citation preview

Page 1: PIXELACIÓN DE IMÁGENES AVANZADA USANDO EL ALGORITMO SLIC Pablo Barrientos Lobato Antonio Borrego Aristu Daniel Cáceres Maña Procesamiento de Imágenes Digitales

PIXELACIÓN DE IMÁGENES AVANZADA USANDO EL ALGORITMO SLIC

Pablo Barrientos Lobato

Antonio Borrego Aristu

Daniel Cáceres Maña

Procesamiento de Imágenes Digitales

Page 2: PIXELACIÓN DE IMÁGENES AVANZADA USANDO EL ALGORITMO SLIC Pablo Barrientos Lobato Antonio Borrego Aristu Daniel Cáceres Maña Procesamiento de Imágenes Digitales

ÍNDICE

1. Introducción

2. Planteamiento teórico

3. Resolución práctica

4. Experimentación

5. Conclusiones

6. Bibliografía

Page 3: PIXELACIÓN DE IMÁGENES AVANZADA USANDO EL ALGORITMO SLIC Pablo Barrientos Lobato Antonio Borrego Aristu Daniel Cáceres Maña Procesamiento de Imágenes Digitales

INTRODUCCIÓN

¿ Qué es el pixel art?

Es una forma de arte contemporánea surgida de la necesidad de

optimizar los recursos de dispositivos electrónicos sin perder

demasiada calidad de imagen.

Page 4: PIXELACIÓN DE IMÁGENES AVANZADA USANDO EL ALGORITMO SLIC Pablo Barrientos Lobato Antonio Borrego Aristu Daniel Cáceres Maña Procesamiento de Imágenes Digitales

INTRODUCCIÓN

¿Qué fácil no?

El mayor problema del pixel art son sus propias limitaciones, ya que con una paleta de colores limitada y una baja resolución es complicado crear una imagen reconocible ¿Pero esto que eeeeeeeeeees?

Page 5: PIXELACIÓN DE IMÁGENES AVANZADA USANDO EL ALGORITMO SLIC Pablo Barrientos Lobato Antonio Borrego Aristu Daniel Cáceres Maña Procesamiento de Imágenes Digitales

PLANTEAMIENTO TEÓRICO

Pixelar una imagen es muy fácil.

Y asignarle a toda la cuadrícula el mismo color que tenga el píxel central

Basta con dividir la imagen en una cuadrícula de tamaño regular.

En muchos casos al pixelar una imagen con este método no se puede reconocer nada de la imagen original.

Hay muchos casos en los que queremos que se pueda reconocer la imagen, con las ventajas de una imagen en baja resolución, haciendo este método inservible y obligándonos a buscar otras alternativas

Page 6: PIXELACIÓN DE IMÁGENES AVANZADA USANDO EL ALGORITMO SLIC Pablo Barrientos Lobato Antonio Borrego Aristu Daniel Cáceres Maña Procesamiento de Imágenes Digitales

PLANTEAMIENTO TEÓRICO

Es aquí donde entra el algoritmo SLIC.

Este algoritmo usa un término llamado superpíxel.

Estos superpíxeles son conjuntos de píxeles que tienen

características parecidas.

El algoritmo lo que hace, de manera simplificada, es reconocer dichos superpíxeles.

Vamos a ver como lo hace

Page 7: PIXELACIÓN DE IMÁGENES AVANZADA USANDO EL ALGORITMO SLIC Pablo Barrientos Lobato Antonio Borrego Aristu Daniel Cáceres Maña Procesamiento de Imágenes Digitales

PLANTEAMIENTO TEÓRICO

Al igual que el algoritmo básico, el algoritmo SLIC segmenta inicialmentela imagen en un mallado en forma de cuadrícula con un tamaño fijo. Para simplificar la explicación cogeremos una cuadrícula de tamaño 3x3

De cada cuadrícula que haya en la imagen, el algoritmo escoge el centro de cada una

Después, se calculan los gradientes de todos los vecinos del centro en dicha cuadrícula

-2 3 6

9 0 6

1 5 -9

Se mueve el centro hacia el vecino con el gradiente más bajo

-2 3 6

9 0 6

1 5

Page 8: PIXELACIÓN DE IMÁGENES AVANZADA USANDO EL ALGORITMO SLIC Pablo Barrientos Lobato Antonio Borrego Aristu Daniel Cáceres Maña Procesamiento de Imágenes Digitales

PLANTEAMIENTO TEÓRICO

Una vez realizado el paso anterior, el algoritmo coge, para cada centro, una malla 2N x 2N. En nuestro ejemplo, 6x6.

Para cada píxel dentro de esa malla, el algoritmo calcula su distancia a cada uno de los 4 centros de malla.

Compara esas distancias y el píxel queda asignado al centro al que más próximo esté

Una vez finalizado el proceso, ya disponemos de los superpíxeles para ejecutar el tratamiento que queramos darle a la imagen

En nuestro caso, lo que hemos hecho ha sido asignar a todos los píxeles que forman parte de un superpíxel elcolor del centro del superpíxel

Page 9: PIXELACIÓN DE IMÁGENES AVANZADA USANDO EL ALGORITMO SLIC Pablo Barrientos Lobato Antonio Borrego Aristu Daniel Cáceres Maña Procesamiento de Imágenes Digitales

PLANTEAMIENTO TEÓRICO

Una de las mayores ventajas de este algoritmo, es que se ajusta con bastante precisión a la forma de los objetos que queremos reconocer, siendo de mucha utilidad para pixelar objetos o personas sin que deje de reconocerse la imagen original

Para la imagen que usamos anteriormente pero usando el algoritmo SLIC para hacer la pixelación

Page 10: PIXELACIÓN DE IMÁGENES AVANZADA USANDO EL ALGORITMO SLIC Pablo Barrientos Lobato Antonio Borrego Aristu Daniel Cáceres Maña Procesamiento de Imágenes Digitales

RESOLUCIÓN PRÁCTICA

Para la implementación de la aplicación se ha usado:- Visual Studio 2013- C# con Microsoft .Net Framework 4.0- Windows Prsentation Foundation (WPF)

Se ha implementado una arquitectura basada en Model View View Model (MVVM), que permite mantener organizado el código, y poder ampliar fácilmente con más implementaciones de algoritmos.

Page 11: PIXELACIÓN DE IMÁGENES AVANZADA USANDO EL ALGORITMO SLIC Pablo Barrientos Lobato Antonio Borrego Aristu Daniel Cáceres Maña Procesamiento de Imágenes Digitales

RESOLUCIÓN PRÁCTICA

Se ha creado una interfaz sencilla, que permite aplicar los diferentes algoritmos implementados, y comparar los resultados de forma simple.

Permite que cada algoritmo tenga como entrada los parámetros que necesite.

Permite guardar el resultado obtenido en un fichero.

Page 12: PIXELACIÓN DE IMÁGENES AVANZADA USANDO EL ALGORITMO SLIC Pablo Barrientos Lobato Antonio Borrego Aristu Daniel Cáceres Maña Procesamiento de Imágenes Digitales

RESOLUCIÓN PRÁCTICA

Los pasos más importantes del algoritmo son:

1. Se inicializa un array con los centros de cada superpíxel que a priori serán parte de una rejilla compacta y uniforme del tamaño deseado. La complejidad de este paso es O(k), siendo k el número de cuadrículas generadas en la imagen.

2. Calculamos los gradientes de todos los píxeles de la imagen, los cuales guardamos en un array.

3. Modificamos los centros que calculamos antes, escogiendo como nuevo centro, de entre los vecinos del centro anterior, el de menor gradiente.

4. Recorremos la imagen en una ventana de dos cuadrículas por dos cuadrículas respecto a cada centro. En esa ventana evaluamos la distancia entre cada píxel y cada uno de los cuatro centros. Comparamos las distancias obtenidas y añadimos el píxel a la región cuyo a centro esté más cercano. Almacenamos las distintas regiones obtenidas en un array. 5. Se unen los píxeles no conectados a ningún superpíxel al más cercano.

6. Por último, se realiza una limpieza de regiones pequeñas usando el parámetro de entrada como umbral, uniendo dichas regiones a las regiones vecinas más coincidentes.

Page 13: PIXELACIÓN DE IMÁGENES AVANZADA USANDO EL ALGORITMO SLIC Pablo Barrientos Lobato Antonio Borrego Aristu Daniel Cáceres Maña Procesamiento de Imágenes Digitales

EXPERIMENTACIÓN

A continuación vamos a mostrar algunos ejemplos, comparando los dos métodos implementados.

Page 14: PIXELACIÓN DE IMÁGENES AVANZADA USANDO EL ALGORITMO SLIC Pablo Barrientos Lobato Antonio Borrego Aristu Daniel Cáceres Maña Procesamiento de Imágenes Digitales

EXPERIMENTACIÓN

Page 15: PIXELACIÓN DE IMÁGENES AVANZADA USANDO EL ALGORITMO SLIC Pablo Barrientos Lobato Antonio Borrego Aristu Daniel Cáceres Maña Procesamiento de Imágenes Digitales

EXPERIMENTACIÓN

Page 16: PIXELACIÓN DE IMÁGENES AVANZADA USANDO EL ALGORITMO SLIC Pablo Barrientos Lobato Antonio Borrego Aristu Daniel Cáceres Maña Procesamiento de Imágenes Digitales

EXPERIMENTACIÓN

Page 17: PIXELACIÓN DE IMÁGENES AVANZADA USANDO EL ALGORITMO SLIC Pablo Barrientos Lobato Antonio Borrego Aristu Daniel Cáceres Maña Procesamiento de Imágenes Digitales

EXPERIMENTACIÓN

Page 18: PIXELACIÓN DE IMÁGENES AVANZADA USANDO EL ALGORITMO SLIC Pablo Barrientos Lobato Antonio Borrego Aristu Daniel Cáceres Maña Procesamiento de Imágenes Digitales

EXPERIMENTACIÓN

Page 19: PIXELACIÓN DE IMÁGENES AVANZADA USANDO EL ALGORITMO SLIC Pablo Barrientos Lobato Antonio Borrego Aristu Daniel Cáceres Maña Procesamiento de Imágenes Digitales

COSAS A MEJORAR

• Dar la opción de elegir el número de colores disponibles

• Que el usuario pueda elegir el tamaño de la imagen de salida

• Refinar el algoritmo para que sea más eficiente y preciso

Page 20: PIXELACIÓN DE IMÁGENES AVANZADA USANDO EL ALGORITMO SLIC Pablo Barrientos Lobato Antonio Borrego Aristu Daniel Cáceres Maña Procesamiento de Imágenes Digitales

CONCLUSIONES

• Aplicar el algoritmo SLIC a la pixelación de

imágenes mejora notablemente el resultado.

• El algoritmo SLIC se podría aplicar a otros

ámbitos como podría ser el reconocimiento de

objetos en una imagen, o el reconocimiento

facial

Page 21: PIXELACIÓN DE IMÁGENES AVANZADA USANDO EL ALGORITMO SLIC Pablo Barrientos Lobato Antonio Borrego Aristu Daniel Cáceres Maña Procesamiento de Imágenes Digitales

BIBLIOGRAFÍA

• Pixelated image abstraction with integrated user constraints• http://www.sciencedirect.com/science/article/pii/S0097849313000046

• Algoritmo SLIC• http://ivrg.epfl.ch/research/superpixels

• Algoritmo de pixelación básico• http://notes.ericwillis.com/2009/11/pixelate-an-image-with-csharp/