Mosaicos fotográficos con vecinos más cercanos Aprendizaje automático para el arte digital

Mosaicos fotográficos con vecinos más cercanos Aprendizaje automático para el arte digital

¡Aquí tienes un ejemplo!

Zoom in animation, se recomienda ver en pantalla completa. (Video del autor)

La innovación tecnológica está aumentando a un ritmo acelerado y ha hecho que el almacenamiento digital sea extremadamente barato y accesible. Además, la mayoría de las personas ahora tienen teléfonos con cámaras que pueden capturar imágenes de alta calidad. La mayoría de las imágenes tomadas se ven algunas veces y luego se envían para almacenarse en una unidad de disco duro o en algún servicio de almacenamiento en la nube. Esto resulta en que las personas acumulan grandes bibliotecas de imágenes. Yo no soy diferente, y como tenía tiempo extra durante los confinamientos por COVID-19, creé un software para darle una segunda vida a las fotos en las bibliotecas de las personas. Este software crea mosaicos de fotos.

Un mosaico de fotos es una imagen o foto que se crea uniendo muchas imágenes más pequeñas. En el gif y el video de arriba, es fácil ver cuántos cuadrados de imágenes pequeñas se utilizan para crear una imagen más grande. Hay varios métodos para crear estos mosaicos, por ejemplo, los cuadrados de imágenes más pequeñas o baldosas se pueden elegir y colocar en la imagen más grande según el color o la estructura de la imagen. En esta publicación, nos enfocamos en una estrategia de coincidencia de colores y es de particular interés para una audiencia de ciencia de datos o aprendizaje automático porque utiliza un enfoque de modelado de vecinos más cercanos (KNN).

Planteamiento del problema

Como siempre, es una buena práctica descomponer el problema y construir funciones alrededor de los diversos componentes que se necesitan para lograr el objetivo. Primero necesitamos dividir la imagen más grande o de portada en subsecciones más pequeñas (ver Figura 1. a continuación). Una vez que tenemos las subsecciones más pequeñas, podemos encontrar la imagen de baldosa que coincida mejor con cada subsección. Estamos utilizando un método de coincidencia de colores para construir el mosaico y, por lo tanto, podemos formalizar el problema de la siguiente manera: para cada subsección de la imagen de portada, encontrar una imagen de baldosa que se ajuste lo más posible al color.

Figura 1: Aquí dividimos nuestra imagen de portada en subsecciones cuadradas indicadas por la línea blanca. (Imagen del autor)

Estructura de las imágenes de color

Las imágenes de color digital están compuestas por diferentes canales de color de píxeles que, cuando se combinan, crean una imagen en color. Un formato común es el formato de imágenes rojo verde azul o RGB, en el cual una imagen en color está compuesta por canales rojo, verde y azul. Las imágenes se almacenan comúnmente en 8 bits, lo que significa que los valores de píxeles para cada uno de los canales de color van desde 0 hasta 255 (2⁸-1).

Figura 2: Aquí capturamos los valores promedio de RGB tanto para la subsección (arriba) como para la baldosa (abajo). No hay una coincidencia exacta para esta subsección en la biblioteca pero es cercana. (Imagen del autor)

Si tomamos el valor promedio de píxeles rojo, verde y azul para cada imagen, podemos usar tres números para describir el color general de cada imagen. Por lo tanto, para encontrar la baldosa que encaja en cada subsección, debemos encontrar la baldosa con los mismos valores promedio de píxeles RGB. Primero podemos crear una lista de valores promedio de píxeles RGB para cada subsección en la imagen de portada. Luego podemos hacer una lista de valores promedio de píxeles RGB de nuestra biblioteca de fotos de baldosas. Una vez que se crean las dos listas, podemos recorrer la lista de subsecciones y buscar en la lista de baldosas de la biblioteca para encontrar valores promedio de píxeles RGB coincidentes.

Con una programación dinámica inteligente y estructuras de datos eficientes, esta búsqueda se puede realizar relativamente rápido. Sin embargo, hay un gran problema con este enfoque que necesita ser abordado. Puede suceder que su biblioteca de imágenes de baldosas esté incompleta y que no se represente cada valor promedio de píxeles RGB. Por lo tanto, una búsqueda de la baldosa con el valor promedio de RGB exacto no dará ningún resultado, ver Figura 2. La solución sería encontrar la siguiente baldosa con el valor promedio de RGB que coincida más cercano. Se ha realizado una extensa investigación para determinar la “cercanía” con respecto a los colores. Por ejemplo, se entiende bien que los colores negro y blanco no son cercanos en absoluto. Sin embargo, nuestra solución es simple y utiliza el aprendizaje automático.

Color más cercano con los vecinos más cercanos

Cada subsección y azulejo se representa mediante tres números para los valores promedio de los colores rojo, verde y azul. Podemos pensar en los tres valores de color como una dimensión separada y, por lo tanto, podemos crear un gráfico en 3D donde cada color es una dimensión o eje. Si trazamos los valores de la subsección, para la cual estamos buscando un azulejo coincidente, con los posibles azulejos en nuestra biblioteca, podemos ver qué azulejos tienen los valores de color más cercanos.

Figura 3: La media de valores RGB para la subsección se traza en rojo. Los azulejos con valores RGB cercanos se trazan en naranja. Usando KNN, podemos encontrar la coincidencia más cercana mostrada con la “X” amarilla. (Imagen del autor)

El algoritmo KNN puede evaluar todos los azulejos de la biblioteca y modelar el valor promedio de píxel. Luego, al buscar azulejos coincidentes para cada subsección, el modelo devolverá el vecino más cercano o el azulejo con los valores de color que se ajusten más estrechamente. Esta búsqueda se ilustra en la Figura 3. Usar KNN es más robusto que hacer una búsqueda de fuerza bruta para el valor exacto, ya que hay casos en los que el valor exacto puede no existir. Bajo el capó, los modelos KNN se pueden construir utilizando una estructura similar a un árbol que hace que la búsqueda o el recorrido sean relativamente eficientes. Como tal, el rendimiento también es comparable a otras soluciones que hemos mencionado. Una vez que se encuentran todos los azulejos para cada color de subsección, se puede usar un simple índice de matriz/matriz para unir todas las imágenes de azulejos y crear el mosaico final de la foto de portada.

Cierre

Si desea su propio mosaico de fotos o necesita ayuda para construir el suyo, no dude en comunicarse. Podemos reutilizar sus viejas imágenes que están acumulando polvo en algún disco duro y darles una segunda oportunidad en algo hermoso. ¡Eh, tal vez incluso puedan convertirse en NFT!

Echemos un vistazo a otro ejemplo de mosaico de fotos con una animación diferente. Todas las animaciones se crean de forma programática y se detallarán en próximas publicaciones.

Animación de dispersión, se recomienda ver en pantalla completa. (Video del autor)

Artículo publicado originalmente aquí. Repostado con permiso.

We will continue to update Zepes; if you have any questions or suggestions, please contact us!

Share:

Was this article helpful?

93 out of 132 found this helpful

Discover more

Inteligencia Artificial

El modelo de IA puede ayudar a determinar dónde se originó el cáncer de un paciente

Las predicciones del modelo OncoNPC podrían permitir a los médicos elegir tratamientos específicos para tumores difíc...

Inteligencia Artificial

Investigadores de Google DeepMind y YouTube anuncian Lyria un modelo avanzado de generación de música AI

En un anuncio reciente, DeepMind de Google, en colaboración con YouTube, presentó Lyria, un modelo de generación de m...

Inteligencia Artificial

Desarrollar un ChatGPT específico de la empresa es un tercio tecnología y dos tercios mejoras en los procesos.

A lo largo de 2023, hemos estado desarrollando un asistente virtual basado en el modelo GPT para los empleados de Ene...

Inteligencia Artificial

A pesar de los temores de trampas, las escuelas revocan las prohibiciones de ChatGPT

Algunos distritos que antes se apresuraban a bloquear los chatbots de inteligencia artificial ahora están tratando de...

Ciencia de Datos

Convirtiendo viejos mapas en modelos digitales en 3D de vecindarios perdidos.

Investigadores han convertido antiguos mapas de seguros contra incendios de Sanborn en modelos digitales tridimension...