No se Mathematica. . . demasiado. Pero me gusta la respuesta anterior, en su mayor parte.
Todavía hay un defecto importante en confiar en las rayas solamente de recoger la respuesta (yo personalmente no tengo un problema con un ajuste manual). Hay un ejemplo (listado por Brett Champion, aquí ) presentado que muestra que, a veces, rompen el patrón de la camisa. Entonces se convierte en un patrón más complejo.
Intentaría un enfoque de identificación de forma y colores, junto con las relaciones espaciales. Al igual que el reconocimiento facial, podría buscar patrones geométricos en ciertas proporciones entre sí. La advertencia es que generalmente una o más de esas formas están ocluidas.
Obtenga un balance de blancos en la imagen y rojo un balance de rojos en la imagen. Creo que Waldo siempre tiene el mismo valor / tono, pero la imagen puede ser de un escaneo o una copia incorrecta. Entonces siempre refiérase a una variedad de colores que Waldo realmente es: rojo, blanco, marrón oscuro, azul, melocotón, {color del zapato}.
Hay un patrón de camisa, y también los pantalones, gafas, cabello, cara, zapatos y sombrero que definen a Waldo. Además, en relación con otras personas en la imagen, Waldo es delgado.
Por lo tanto, encuentre personas aleatorias para obtener la altura de las personas en esta foto. Mida la altura promedio de un montón de cosas en puntos aleatorios de la imagen (un esquema simple producirá bastantes personas individuales). Si cada cosa no está dentro de alguna desviación estándar entre sí, se ignoran por ahora. Compare el promedio de las alturas con la altura de la imagen. Si la relación es demasiado alta (por ejemplo, 1: 2, 1: 4 o similar), intente nuevamente. Ejecútelo 10 (?) De veces para asegurarse de que las muestras estén bastante juntas, excluyendo cualquier promedio que esté fuera de alguna desviación estándar. ¿Posible en Mathematica?
Este es tu tamaño de Waldo. Walso es flaco, por lo que está buscando algo 5: 1 o 6: 1 (o lo que sea) ht: wd. Sin embargo, esto no es suficiente. Si Waldo está parcialmente oculto, la altura podría cambiar. Entonces, estás buscando un bloque de rojo-blanco que ~ 2: 1. Pero tiene que haber más indicadores.
- Waldo tiene anteojos. Busque dos círculos 0.5: 1 sobre el rojo-blanco.
- Pantalones azules. Cualquier cantidad de azul en el mismo ancho dentro de cualquier distancia entre el final del rojo-blanco y la distancia a sus pies. Tenga en cuenta que él usa su camisa corta, por lo que los pies no están demasiado cerca.
- El sombrero. Rojo-blanco a cualquier distancia hasta el doble de la parte superior de su cabeza. Tenga en cuenta que debe tener cabello oscuro debajo y probablemente gafas.
- Manga larga rojo-blanco en algún ángulo del rojo-blanco principal.
- Pelo oscuro.
- Color del zapato No se el color.
Cualquiera de esos podría aplicar. Estos también son controles negativos contra personas similares en la foto, por ejemplo, # 2 niega usar un delantal rojo-blanco (demasiado cerca de los zapatos), # 5 elimina el cabello de color claro. Además, la forma es solo un indicador para cada una de estas pruebas. . . El color solo dentro de la distancia especificada puede dar buenos resultados.
Esto reducirá las áreas a procesar.
Almacenar estos resultados producirá un conjunto de áreas que deberían tener Waldo. Excluya todas las demás áreas (p. Ej., Para cada área, seleccione un círculo dos veces más grande que el tamaño promedio de persona), y luego ejecute el proceso que @Heike estableció al eliminar todo menos el rojo, y así sucesivamente.
¿Alguna idea sobre cómo codificar esto?
Editar:
Reflexiones sobre cómo codificar esto. . . excluya todas las áreas excepto Waldo rojo, esqueletice las áreas rojas y podelas en un solo punto. Haga lo mismo para el cabello Waldo marrón, los pantalones Waldo azules, el color del zapato Waldo. Para el color de la piel Waldo, excluya, luego busque el contorno.
Luego, excluya no rojo, dilate (mucho) todas las áreas rojas, luego esqueletice y pode. Esta parte le dará una lista de posibles puntos centrales de Waldo. Este será el marcador para comparar todas las demás secciones de color de Waldo.
Desde aquí, usando las áreas rojas esqueletizadas (no las dilatadas), cuente las líneas en cada área. Si hay el número correcto (cuatro, ¿verdad?), Esta es ciertamente un área posible. Si no es así, supongo que simplemente lo excluya (como siendo un centro de Waldo ... aún puede ser su sombrero).
Luego verifique si hay una forma de cara arriba, una punta de cabello arriba, un pantalón abajo, un zapato abajo, y así sucesivamente.
Todavía no hay código, todavía estoy leyendo los documentos.