En la actualidad existe software de todo tipo, propietario, open source, freeware, shareware, etc., todos ellos con diversos fines y a veces específicos para tareas muy particulares.
Mathematica creado por Stephen Wolfram es un programa utilizado en áreas científicas, de ingeniería, matemáticas y áreas computacionales al que hoy se le puede añadir otro uso: Encontrar a Wally (también conocido como Waldo en norteamérica).
Todo surge de un algoritmo creado por Arnoud Buzing mismo que lo publicó en el popular sitio de preguntas y respuestas Stack Overflow. Ahora para no aburrirnos con tanta teoría, primero probemos suerte tratando de encontrar al famoso personaje, después de la imagen encontraremos el procedimiento paso a paso.
¿Lo lograste? Si has llegado hasta aquí sin intentarlo te animo una vez más a hacerlo, vale la pena y es un buen ejercicio para activar algunas neuronas. Ahora veamos como encontrarlo a través del método cíentifico.
1. Filtrar todos los colores que no sean rojos.
waldo = Import["http://www.findwaldo.com/fankit/graphics/IntlManOfLiterature/
Scenes/DepartmentStore.jpg"];
red = Fold[ImageSubtract, #[[1]], Rest[#]] &@ColorSeparate[waldo];
2. Calcular la correlación de la imagen y un patrón simple en blanco y negro, esto con el fin de encontrar las transiciones rojo y blanco en la camiseta.
corr = ImageCorrelate[red,
Image@Join[ConstantArray[1, {2, 4}], ConstantArray[0, {2, 4}]],
NormalizedSquaredEuclideanDistance];
3. Usar Binarize
para seleccionar los pixeles en la imagen con una correlación suficientemente alta y dibujar un círculo blanco alrededor para recalcarlos usando Dilation
.
pos = Dilation[ColorNegate[Binarize[corr, .12]], DiskMatrix[30]];
Se debe tener cuidado con el valor de Binarize
pues si es demasiado alto puede arrojar muchos falsos positivos.
4. Finalmente, combinar el resultado con la imagen original.
found = ImageMultiply[waldo, ImageAdd[ColorConvert[pos, "GrayLevel"], .5]]
Claro que no se trata de un algoritmo perfecto, de hecho depende de ciertos factores como el contraste dentro de la imagen, pero para efectos de esta demostración funciona excelente.
Por supuesto, si el tema te ha interesado y te gustaría profundizar puedes hacerlo desde el blog de Keshav Saharia que ha dividido el post en dos partes a las que puedes acceder siguiendo los enlaces: Enlace a parte 1 y Enlace a parte 2.
Ahora sólo queda elegir que método usar para seguir jugando, en lo personal me decanto por la opción clásica de buscar a Wally que por cierto ayuda a trabajar la paciencia.
[adsense2]
Vía | Design Taxi