Monday, May 11, 2015

¡Gánate un iPod Touch con la programación lúdica!



Un mosaico es una imagen compuesta tradicionalmente por pequeñas piezas de algunos materiales, como piedra o cristal. Un fotomosaico es una imagen digital como la que se muestra en la siguiente figura (ver ilustración inicial de este artículo), la cual está hecha de pequeñas imágenes digitales pegadas por algún programa. Los fotomosaicos se le acreditan a Robert Silvers, quien desarrolló una técnica cuando estudiaba en el MIT. Silvers más tarde fundó RunAway.

Este reto busca que los programadores interesados escriban un programa que pueda hacer fotomosaicos considerando algunas características interesantes: ¿Qué tan grande puede ser un fotomosaico antes de que se pierdan los detalles de la imagen original? ¿Cuántas fotos deben tenerse para crear el fotomosaico? ¿Cuántas repeticiones se pueden tener antes de que el fotomosaico se vuelva monótono?

El algoritmo fundamental de los fotomosaicos puede entonces verse así:

  1.     Defínase la imagen fuente.
  2.     Cuadricule la imagen.
  3.     Encuentre la imagen más cercana en color a cada región
  4.     Sustituya esa región por la imagen hallada.
  5.     Haga este proceso para toda la imagen
Para poder realizar el reto, se han planteado las siguientes bases:

  •     Hay que usar una biblioteca de imágenes específica (5544 fotos de 32 bits de resolución), las cuales pueden descargarse del siguiente sitio o este otro, si el primero no funciona. La imagen a fotomosaiquear, valga la expresión, es la de Ilse, la cual pueden copiar precisamente de este artículo directamente.
  •     El programa debe poder generar un fotomosaico contemplando parámetros que pueden variar como tamaño del fotomosaico, es decir, de qué tamaño son cada una de las pequeñas fotos que arman el fotomosaico final o el tamaño final del fotomosaico. Por ejemplo, se puede dividir la imagen en regiones de 10×10 pixeles y querer que cada foto sea de 30×30 pixeles, haciendo 9 veces más grande el resultado de salida.
  •     El resultado, el fotomosaico de Ilse, debe ser de 9 veces el tamaño la imagen original y debe ser enviado en formato jpg.
¿El premio? Un iPod Touch, el cual ha sido donado por La Fundación Morsa para apoyar la programación libre y de código abierto en asociación con unocero.com, una taza con el logotipo de la Morsa y Microsoft, a la mejor solución. Si el ganador vive en el DF, se le entregará directamente el premio. Si vive en provincia, se le mandará hasta su domicilio.

Microsoft está apoyando esta iniciativa de la Programación Lúdica y hay un nuevo modelo de tazas creadas para tal efecto.

El reto es solamente para quienes residan en la República Mexicana y se termina, desde el momento de la publicación de este artículo, 30 días naturales después de esta fecha.

Evidentemente, quien gane será anunciado en unocero y hasta tendrá sus quince minutos de fama. Sus programas me los pueden mandar a morsa@la-morsa.com y pueden escribirse en cualquier lenguaje. No tienen que mandar la colección de fotos, pues ya la tengo. Es importante señalar que hay que mandar el código fuente, el ejecutable (si procede) y el archivo de resultados pedido. Debe además indicar las instrucciones para poder ejecutar su código.

Igualmente, se pide una explicación breve de la estrategia usada. Código documentado tiene más posibilidades de ser considerado el ganador. El fotomosaico ganador, desde luego, será el que mejor se vea, el que tenga menos imágenes repetidas, que se vea menos monótono, que haga blending de manera que sea sutil, etcétera. El código que se envíe debe poderse hacer todo directamente desde el propio programa o explicar si se requieren más de un programa para realizar la función que dé el reslultado esperado.

Yo evaluaré los fotomosaicos resultantes y la decisión es inapelable. Véase el video para darse una idea de lo que hay que hacer.


Imagen a procesar



Cabe señalar que este concurso busca simplemente alentar el trabajo de la programación y mostrar que puede ser lúdica. Es un concurso de buena fe. Si hay, por ejemplo, dos o más respuestas satisfactorias, ganará quien la haya mandado primero. El ganador cede su código fuente a la comunidad. Es decir, se promueve el código abierto.



9 comments:

Unknown said...

Mandaré el que hice hace...creo que como 5 años D: jijiji

Fernando Gonzalez said...

Lo que no encontré es de donde descargar las imagenes.

Morsa said...

perdón, no había puestoe l enlace... Es éste: http://www.solidfiles.com/d/581701995e/imagenes.rar

Luis said...

Hola!

Sé que no tiene nada que ver con el tema y de entrada le pido una disculpa por esto, pero creo que Don Morsa me puede ayudar.

Me gustaría aprender a desarrollar apps (juegos) para android y iOS
¿Usted sabe de una buena escuela en el DF donde pueda tomar cursos?

Muchas gracias de antemano por su respuesta.

Saludos!

onebestvideos said...

¿El que tenga interfaz gráfica se tomara en cuenta o no es relevante ?

Morsa said...

Se supone que una interfaz gráfica hace el software más amigable, por lo que pienso sí puede influir en la decisión final

Morsa said...

Se supone que una interfaz gráfica hace el software más amigable, por lo que pienso sí puede influir en la decisión final

Larry said...

Oye Morsa, y si lo hago con Mathematica? son solo tres lineas de código. Se vale?

Morsa said...

no, Larry, no se vale...