Showing posts with label procesamiento digital de imágenes. Show all posts
Showing posts with label procesamiento digital de imágenes. Show all posts

Saturday, August 22, 2026

Fotos con "caritas felices"




El arte digital tiene exponentes notables. Uno de ellos es Paul Van Scott, quien -de acuerdo a la IA- es un artista pop y digital estadounidense famoso por sus intrincados retratos de fotomontaje, sus ilusiones ópticas y sus singulares obras de mosaico creadas a partir de materiales poco convencionales, como caramelos M&M, fichas de póquer, chapas de botella y pelotas de golf. Cuando descubrí a este artista fue porque encontré una imagen de Bobby Fischer que es asombrosa y qué no sé aún, cómo hacer algo parecido. Puede verse esta imagen del ajedrecista norteamericano aquí. 

En alguna ocasión vi una de estas obras, también de Van Scott, hechas con caritas felices:


Claramente la obra es un "collage" digital en donde las caritas felices toman diferentes colores Cabe decir que Van Scott se toma la molestia de pintar cada carita feliz con un color promedio de la región en donde va a poner dicha carita y que ésta, además, es una imagen elaborada en 3D. Vamos, no es una carita feliz simplona (ver la imagn que sigue).

Hacer este tipo de obras requiere de varios pasos. En esta primera aproximación, se me ha ocurrido imitar esta idea de Van Scott pero con una carita feliz sencilla, es decir, plana, sin ser 3D.

La idea en el fondo es sencilla. Hacemos una rutina que ponga círculos que se sobreponen en cierto porecentaje unos con otros en un canvas, es decir, en el lienzo digital. Después, tomamos cada círculo creado y colocamos ahí una carita feliz con el color promedio de la región en donde se e ncuentra el círculo. Hacemos esto con todos los círculos. Las caritas felices se vana superponer unas con otras, pero eso es precisamente lo que queremos.




(Esta es una imagen PNG, con transparencia. Para efectos de las primeras pruebas, 
usamos esta imagen en formato JPEG, que no tiene transparencia asociada)

En este caso, la carita feliz original es una imagen JPEG, la cual no tiene transparencia y por ende, cuando insertamos una carita feliz en la imagen resultante, el fondo de esa imagen no es transparente y en ocasiones uno se da cuenta de un borde alrededor de la carita feliz. Pero en realidad, como las caritas felices son muy pequeñas, no se nota francamente este problema en general. Sin embargo, el plan es usar imágenes PNG, las cuales tienen transparencia, para que así sea más fácil el poner las imágenes superpuestas.

Un detalle final fue el que las caritas felices rotaran sobre su centro, para evitar ser tan monótonos. He aquí el software:



La imagen resultante (como la imagen original), pueden estar ligeramente distorsionadas para que se vean completas en los lienzos de la imagen original y la de resultados. He aquí las imágenes original y final:





He aquí una región ampliada:


Desde luego se puede elaborar mucho más... Ahora que tenga una versión funcional con imágenes PNG, pondré el software a disposición de mis 4 lectores. Seguiremos informando...


Monday, July 01, 2019

Cómo construir un fotomosaico de forma eficiente



Un fotomosaico es una imagen creada con miles de pequeñas fotografías. La idea se popularizó después de que a Robert Silvers le publicaran en la revista Newsweek, el 22 de diciembre de 1997, una fotografía de Lady Di hecha con una enorme cantidad de fotos de flores.



Silvers, que estudio en el MIT, creó un sistema para hacer fotomosaicos y de hecho, ha publicado algunos libros sobre el tema. El "ciber-artista" no explica cómo lo hace (aunque tiene una patente que con el tiempo fue puesta en tela de juicio y hasta donde entendemos, la misma ha sido invalidada.

Robert Silvers le ha hecho a personajes célebres imágenes de fotomosaicos. Por ejemplo, amigos de Bill Gates le solicitaron un mosaico del exCEO de Microsoft, para regalárselo cuando éste cumpliera 40 años de edad. El costo de dicho fotomosaico fue de unos 40 mil dólares. Este mosaico está hecho con billetes de diversas denominaciones y de diferentes países e incluso, muchas veces son fragmentos de los billetes.


Un fotomosaico es básicamente un mosaico de fotografías en lugar de usar colores sólidos, dada una imagen a la que se le cuadricula para sustituir cada región de color por una foto determinada. Uno de los problemas básicos es encontrar la imagen más adecuada para una particular región de la imagen que estamos procesando. Lo que básicamente se hace es sacar el color promedio de una región y después comparar ese rojo, verde y azul promedio con el rojo, verde y azul promedio de todas las imágenes que se pueden tener en una biblioteca de donde elegiremos la mejor imagen. Esto equivale a usar la ecuación de la distancia en tres dimensiones, de la geometría analítica y hallar la distancia mínima entre el color que nos interesa y una imagen.

Poder localizar la imagen  adecuada requiere de revisar todas las imágenes y hacer el cálculo de esa ecuación de la distancia. Típicamente, cuando se tienen unas 5 mil imágenes, hay que hacer este cálculo unas 12.5 millones de veces, lo cual es bastante ineficiente, computacionalmente hablando.

Pero si retomamos este tema es porque me acaba de llegar un fotomosaico hecho por Edgar Mendoza, estudiante de la Facultad de Ciencias, quien acaba de terminar el curso de Proceso Digital de Imágenes, que imparto en la carrera de ciencias de la computación.

Pero hay ideas, interesantes, como la de usar árboles KD, que es lo que ha hecho Edgar. Básicamente un árbol KD (llamado también árbol K-dimensinal) es equivalente a una búsqueda binaria, la cual es la más eficiente que existe. Edgar me ha dicho que de esta manera se evita la búsqueda exhaustiva (a fuerza bruta). La complejidad es nlog(n), lo que mejora enormemente el tiempo de procesamiento.

Edgar usó un banco de imágenes que contiene 77,185 fotogramas correspondientes a las escenas de los videos del canal "manuel morsa" (en donde hablamos de ajedrez. Tomó 1 por cada dos segundos de video). Y dice Edgar: "Al momento de realizar la búsqueda de la imagen más cercana, se tomaron (para este caso) las 100 imágenes más cercanas, de las cuales se toma entonces una al azar. Además existen varias imágenes en el banco con el mismo promedio de color, para esta situación también se elige una al azar, de forma que se consideran todas las imágenes. Para mejorar un poco el resultado uso, como usted nos recomendó en clase, una máscara de color al 30%, además de difuminar el error de la diferencia entre la imagen seleccionada y la región original con dithering".



La imagen está comprimida, por lo aue el efecto no puede verse. La foto original ocupa unos 14 megas y puede descargarse de este sitioAsí, el resultado es el que se presenta a continuación. Notable trabajo por dos razones: primero, por el haber usado la structura de árboles KD y por otra parte, por tomar los videos y armar una extensa colección de fotogramas de los mismos. Y después hay quien duda que hay talento en nuestro país.

Tuesday, October 13, 2015

Compresión de imágenes: Codificación/decodificación RLE (Parte II)


En el artículo pasado hablamos de una manera sencilla de comprimir imágenes en tonos de gris. Desde luego que esta idea es limitada y finalmente no funciona de forma muy adecuada para las imágenes en color. Pero antes de discutir el caso de las imágenes en color, debemos considerar otras alternativas que pueden usarse para comprimir imágenes en tonos de gris. Uno de los algoritmos más usados es el llamado RLE (Rule Length Encoding). La idea funciona así: sabemos que una imagen en tonos de gris contiene una serie de números que se repiten, en particular tripletas de pixeles (en sus componentes R, G y B), los cuales son el mismo color. Si tenemos regiones en donde se repiten estos valores R, G y B, bien podríamos pensar en sustituirlos por el byte que hemos leído y un contador que nos indique cuantas veces se repite el mismo. Esto es básicamente el RLE.
Supongamos que tenemos una imagen de puntos al azar, de todos los posibles tonos de gris. Si son al azar, probablemente no tengamos secuencias largas de un solo tono de gris, por lo que por ejemplo, si la imagen original contiene los siguientes bytes (en hexadecimal):

de de de de de de de de 98 98 98 98 98 98 ff ff 01

podríamos crear un nuevo archivo que tuviese los siguiente valores:

de 08 98 06 ff 02 01 01

Lo cual nos diría que tendríamos 08 bytes con el valor de, 06 bytes con el valor 98, 2 bytes con el valor ff y finalmente un byte con el valor 01.

Cabe señalar que el esquema RLE bien podría usarse para comprimir no solamente imágenes, sino cualquier archivo, aunque muchos no son muy susceptibles de sacar ventaja de la repetición de símbolos. Por ejemplo, sería mala idea usar RLE para comprimir textos, pues estos no tienen repeticiones de letras contíguas. Por ende, no es el mejor de los esquemas para archivos de esa naturaleza.

Los algoritmos básicos de codificación y decodificación son los siguientes

CODIFICACIÓN RLE:



DECODIFICACIÓN:



Nótese que este par de rutinas funcionan con todo el archivo que se desea procesar, lo cual no necesariamente es la mejor idea. Lo más sensato es usar el "canvas" (en donde reside la imagen en un eventual software de procesamiento de imágenes) y aplicar RLE a los pixeles. De hecho, si se procesa, como en este caso, un archivo completo, estamos intentando también comprimir el encabezado que muchos formatos gráficos tienen, incluso los archivos BMP. De nuevo, se advierte que esto es simplemente una idea y el artículo muestra una primera implementación general para ilustrar lo que hay que hacer.

En pruebas hechas con estos algoritmos se halló que una imagen en tonos de grises (que contenía simplemente un bloque en un solo tono de gris), que ocupaba originalmente 212 Kbytes, se redujo a 3Kbytes. Para saber el factor de compresión, dividimos (3K / 212K) * 100, lo cual entrega 1.415, es decir, el archivo comprimido ocupa menos del 2% del archivo original. Desde luego, las imágenes cotidianas no son tan buenas para la compresión. Sin embargo, en casos como en el del ejemplo, es espectacular la compresión de las imágenes.

Si por ejemplo, usásemos este algoritmo para procesar una imagen en tonos de gris que están al azar en una imagen, pudiese no tener ni remotamente los resultados mencionados. Utilizando la siguiente imagen



hallamos que la compresión llego a 141 KBytes, cuando la imagen original fue de 212 KB. Es decir, 66.50 % de compresión sobre la imagen original.

Wednesday, May 07, 2014

Lenna: la musa del procesamiento de imágenes

La imagen de Lenna (o Lena) es una de las más usadas en las pruebas estándar para los algoritmos de procesamiento y compresión de imágenes. Corresponde a la chica de Playboy, la playmate Lena Söderberg, quien actualmente vive en su nativa Suecia felizmente casada y con tres hijos.En 1988 fue entrevistada por una publicación sueca relacionada con el cómputo y le cayó muy en gracia lo que había pasado con su fotografía. Esa fue la primera vez que supo que habían usado su foto en la rama de procesamiento digital de imágenes.

La historia de la imagen fue narrada en la lista de distribución del IEEE Professional Communication Society en mayo de 2001, en un artículo de Jamie Hutchinson:

    Alexander Sawchuk cree que fue en junio o julio de 1973, mientras era profesor ayudante de ingeniería eléctrica en el Instituto de Tratamiento de Señal e Imágenes de la Universidad del Sur de California, cuando, junto con un estudiante y el jefe del laboratorio, estaban buscando apresuradamente una buena imagen para escanear para un artículo de conferencia de un colega. Estaban cansados de sus imágenes de prueba habituales, cosas aburridas que databan de los años 1960 y basadas en estándares audiovisuales. Querían algo sorprendente para asegurar un buen contraste y que hubiese un rostro humano. En ese momento, alguien llegó con el último Playboy. Los ingenieros arrancaron el tercio superior del póster central para poder envolverlo alrededor del tambor de su escáner Muirhead, que habían equipado con convertidores analógico a digital (uno para cada canal de color: rojo, verde y azul) y un minicomputador Hewlett Packard 2100. El Muirhead tenía una resolución fija de 100 líneas por pulgada y los ingenieros deseaban una imagen de 512×512, así que limitaron la imagen a 5’12 pulgadas de altura, cortando para ello la fotografía a la altura de los hombros de la modelo.

Lenna no fue la primera imagen de una revista Playboy en ser usada para ilustrar algoritmos de procesamiento de imágenes. Lawrence G. Roberts usó una imagen del Playboy de 1960, con permiso y atribución, en su tesis del MIT en 1961 sobre tramado de imágenes.

La imagen original todavía está disponible como parte de la base de datos de la USC SIPI Image database, en su sección de 'miscellaneous'.

Por años ha habido una controversia interesante por el uso de esta imagen. Más de uno ha propuesto vetarla por venir de Playboy. La empresa del conejito, a todo esto, amenazó con perseguir legalmente a quienes usaran esa imagen sin permiso, pero parece ser que después de un tiempo dejaron de lado las amenazas.

Cabe decir que el número de noviembre de 1972, donde Lenna aparece en el póster central, fue el número más vendido de todos los tiempos, con 7,161,561 copias.

El cumpleaños de Lenna es el 31 de marzo, por si alguien quiere mandarle una felicitación. Hay quien le ha compuesto sonetos y para muchos sigue siendo una musa. Curiosamente, muchos no han visto la foto completa original, que puede verse aquí (contiene desnudo).

En mayo de 1997, Lenna fue invitada al 50º aniversario de la Society for Imaging Science and Technology, realizada en Boston, Massachusetts, en Estados Unidos.

Fuente: Lenna.org