hojas00

Rodrigo Reyes es un alumno de la Facultad de Ciencias de la UNAM, en la carrera de Ciencias de la Computación. Está en mi clase de proceso digital de imágenes y hace un par de días me mostró un interesante filtro que simula una imagen detrás de un vidrio semitransparente, como los que por ejemplo, pueden hallarse en algunos baños, donde se ven las siluetas pero no se puede ver con precisión lo que hay detrás de éste.

En clase vimos el efecto mosaico, que es uno de los más usados. En términos generales, este filtro es muy fácil de hacer: tomamos una imagen y la dividimos en regiones cuadradas o rectangulares más chicas. Leemos el color de los pixeles que hay en cada región, sacamos un promedio de los mismos, y colocamos ese color promedio en toda la región analizada.

El filtro que sugiere Rodrigo se basa en precisamente el filtro mosaico, en donde en lugar de usar rectángulos o cuadrados, se utilizan polígonos irregulares de forma tal que en lugar de parecer pixeles, se vean como manchas o fragmentos.

Desde tiempos de Descartes, nos dice Rodrigo, los matemáticos han estudiado regiones poligonales, que cumplen con lo siguiente: Dado un plano con puntos llamados centroides, las regiones que contienen a los puntos más cercanos a el centroide correspondiente, forma un polígono que se le denomina celda de Voronoi. El particionar el plano en celdas de Voronoi se obtiene un diagrama de Voronoi. Por ejemplo, en la siguiente imagen:

voronoi
Diagrama de Voronoi generado a partir de 1000 puntos aleatorios.

Cabe destacar que los diagramas de Voronoi tienen patrones que se observan también en la naturaleza.

narture00

Si vemos este diagrama, bien podemos pensar que en lugar de pintar cuadrados en el filtro mosaico, podemos pintar las regiones de Voronoi. Para ello, Rodrigo usó el siguiente algoritmo:

  • Generamos un conjunto de puntos aleatorios
  • Los puntos aleatorios representan centroides de un diagrama de Voronoi, así que calculamos el diagrama de Voronoi de los puntos mediante el algoritmo de Fortune.(Que tiene complejidad O(n log n))
  • Una vez calculadas las regiones poligonales podemos obtener los valores de los pixeles que corresponden a las coordenadas que se encuentran dentro del polígono y promediar sus valores para pintar una celda de Voronoi en la imagen filtrada.

Veamos los resultados obtenidos:

einstein00

Imagen de Einstein con 2000 centroides

Podemos aumentar o disminuir la cantidad de centroides para apreciar mayor ó menor definición en la imagen

garo01

Imagen original

Al procesar la imagen con 500 centroides:

gato02

 

Al procesar la imagen con 1000 centroides:
gato03

Al procesar la imagen con 5000 centroides:

gato04

Referencias:

Página de Rodrigo Reyes 

Enlaces Patrocinados
Comentarios