Buscando a Wally usando Mathematica

wally2

En la fantástica web de CódigoGeek, hemos visto esta entrada donde hablan de cómo encontrar a Wally usando un programa realizado para el conocido Mathematica de Wolfram.

Todo empieza en StackOverflow, y luego en el blog matemáticos Gaussianos aparece el siguiente código como una posible solución (el lenguaje usado por Mathematica es propio, aquí tienes un manual pdf para aprender a programar en Mathematica):

 
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]]

 

Primero carga la imagen de la URL usada en la primera linea “Import”, filtra los colores menos el rojo y luego la compara con un patrón en blanco y negro para encontrar la camiseta de Wally. Puedes probar con otras imágenes cambiando sólo la dirección URL (no funciona en todas, pero es una buena solución).

Más información en el blog CódigoGeek. Como bien dicen allí, lo importante no es el hecho de encontrar a Wally, es mostrar la potencia de este programa con unas pocas líneas de código.

¿Tienes alguna solución mejor?