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.
- UltraFastBERT Modelado de lenguaje exponencialmente más rápido
- Revolucionando la atención médica Explorando el impacto y el futuro de los modelos de lenguaje grandes en Medicina
- 5 Super Hojas de Trucos para Dominar la Ciencia de Datos
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!
Was this article helpful?
93 out of 132 found this helpful
Related articles
- Desbloqueando eficiencia en la prueba de software y análisis de datos con ChatGPT
- Esta investigación de IA presenta un nuevo enfoque para el reconocimiento de pose de objetos como predicción del próximo token’.
- Investigadores de Microsoft proponen TaskWeaver un marco de trabajo de aprendizaje automático basado en el código para construir agentes autónomos impulsados por LLM.
- Así es como puedes comenzar a usar Gemini de Google
- Ciencia de datos del entretenimiento Streaming vs. Cine
- ¿Cuál es la probabilidad de que dos personas tengan las mismas iniciales?
- Conoce VideoSwap Un marco de inteligencia artificial que personaliza el intercambio de temas de video con una correspondencia puntual semántica interactiva.