
Navidad. Pavo, villancicos, el discurso del Rey, polvorones, la Misa del Gallo, Papá Noel. Papá Noel va de rojo y blanco. Como el Atleti, la Coca Cola o Wally. Curiosamente este post trata sobre encontrar a Waly usando Mathematica. Así de fino hilvanamos en Genbeta Dev. donde no descansamos ni por Navidad, siempre trayéndote artículos interesantes y/o curiosos como es este caso.
En nuestra amada Stack Overflow alguien preguntaba si sería posible encontrar a Wally (Waldo en el idioma de Shakespeare) en una de sus míticas láminas utilizando el potencial de Mathematica, el popular programa de cálculo matemático y, a su vez, poderoso (muy poderoso) lenguaje de programación. La respuesta no tardó en llegar y era de carácter afirmativo:
waldo = Import["http://www.findwaldo.com/fankit/graphics/
IntlManOfLiterature/Scenes/DepartmentStore.jpg"];
red = Fold[ImageSubtract, #[[1]], Rest[#]] &@ColorSeparate[waldo];
corr = ImageCorrelate[red,
Image@Join[ConstantArray[1, {2, 4}], ConstantArray[0, {2, 4}]],
NormalizedSquaredEuclideanDistance];
pos = Dilation[ColorNegate[Binarize[corr, .12]], DiskMatrix[30]];
found = ImageMultiply[waldo, ImageAdd[ColorConvert[pos, "GrayLevel"], .5]]
Particularmente no me gustan nada las matemáticas no me gustan nada y el Mathematica fue una cruz durante mi paso por la carrera por lo que no pienso ni instalarlo de nuevo pero si tú, querido lector, lo tienes instalado, puedes probarlo y que, efectivamente, funciona.
Y ya que estamos, ¿alguien sabe cómo encontrar a Wally con otros lenguajes de programación? Pues ale, venga, que los comentarios están para algo.
Pd: para quien no sepa quién es Wally (cosa que dudamos, de todas formas), su entrada en la Wikipedia.
Vía | Stack Overflow
Imagen | Find Waldo
Comentarios
1 Comentario moderado
8¿Alguien puede explicar qué es lo que el código hace exactamente?
brillante
- Filtra los colores que no son rojos.
- Calcula la correlación de la imagen con un patron blanco y negro simple para encontrar las transiciones rojas y blancas en la remera.
- Usa Binarize para seleccionar los pixels en la imagen con la suficiente correlación y dibuja un círculo al rededor para enfatizar usando Dilation.
- Nivela un poco la imágen si el nivel es muy alto, se dan demasiados positivos falsos.
-- editado por última vez a las 23:49
Funciona, pero recomiendo cambiar el enlace a internet descargando localmente la imagen para aquellos a los que no les funcione directamente el código del post (mi caso).
Escribir un comentario
Para hacer un comentario es necesario que te identifiques: ENTRA o conéctate con FacebookConnect