Je ne connais pas Mathematica. . . dommage. Mais j'aime la réponse ci-dessus, pour la plupart.
Il y a toujours un gros défaut à se fier uniquement aux rayures pour glaner la réponse (personnellement, je n'ai pas de problème avec un réglage manuel). Il y a un exemple (répertorié par Brett Champion, ici ) présenté qui montre qu'ils cassent parfois le motif de la chemise. Alors cela devient un modèle plus complexe.
J'essaierais une approche de la forme et des couleurs, ainsi que des relations spatiales. Tout comme la reconnaissance faciale, vous pouvez rechercher des motifs géométriques à certains rapports les uns des autres. La mise en garde est que généralement une ou plusieurs de ces formes sont occluses.
Obtenez une balance des blancs sur l'image et une balance des rouges sur le rouge de l'image. Je crois que Waldo a toujours la même valeur / teinte, mais l'image peut provenir d'une numérisation ou d'une mauvaise copie. Référez-vous ensuite toujours à un tableau des couleurs que Waldo est réellement: rouge, blanc, brun foncé, bleu, pêche, {couleur de la chaussure}.
Il y a un motif de chemise, ainsi que le pantalon, les lunettes, les cheveux, le visage, les chaussures et le chapeau qui définissent Waldo. De plus, par rapport aux autres personnes sur l'image, Waldo est plutôt maigre.
Alors, trouvez des personnes aléatoires pour obtenir la taille des personnes sur cette photo. Mesurez la hauteur moyenne d'un tas de choses à des points aléatoires de l'image (un simple contour produira pas mal de personnes individuelles). Si chaque chose ne se trouve pas dans un écart type les unes par rapport aux autres, elles sont ignorées pour l'instant. Comparez la moyenne des hauteurs à la hauteur de l'image. Si le rapport est trop élevé (par exemple, 1: 2, 1: 4 ou similaire), essayez à nouveau. Exécutez-le 10 (?) Fois pour vous assurer que les échantillons sont tous assez rapprochés, à l'exclusion de toute moyenne qui est en dehors de tout écart-type. Possible en Mathematica?
C'est votre taille Waldo. Walso est maigre, donc vous cherchez quelque chose de 5: 1 ou 6: 1 (ou autre) ht: wd. Mais cela ne suffit pas. Si Waldo est partiellement caché, la hauteur pourrait changer. Donc, vous cherchez un bloc de rouge-blanc ~ 2: 1. Mais il doit y avoir plus d'indicateurs.
- Waldo a des lunettes. Recherchez deux cercles 0,5: 1 au-dessus du rouge-blanc.
- Pantalon bleu. Toute quantité de bleu à la même largeur sur une distance quelconque entre la fin du rouge-blanc et la distance à ses pieds. Notez qu'il porte sa chemise courte, donc les pieds ne sont pas trop proches.
- Le chapeau. Rouge-blanc n'importe quelle distance jusqu'à deux fois le haut de sa tête. Notez qu'il doit avoir les cheveux foncés en dessous, et probablement des lunettes.
- Manches longues. rouge-blanc à un certain angle par rapport au rouge-blanc principal.
- Cheveux foncés.
- Couleur de la chaussure. Je ne connais pas la couleur.
N'importe lequel d'entre eux pourrait s'appliquer. Ce sont également des contrôles négatifs contre des personnes similaires sur la photo - par exemple, le n ° 2 nie le port d'un tablier rouge-blanc (trop près des chaussures), le n ° 5 élimine les cheveux de couleur claire. De plus, la forme n'est qu'un indicateur pour chacun de ces tests. . . la couleur seule dans la distance spécifiée peut donner de bons résultats.
Cela réduira les domaines à traiter.
Le stockage de ces résultats produira un ensemble de zones qui devraient contenir Waldo. Excluez toutes les autres zones (par exemple, pour chaque zone, sélectionnez un cercle deux fois plus grand que la taille moyenne d'une personne), puis exécutez le processus défini par @Heike en supprimant tout sauf le rouge, etc.
Des réflexions sur la façon de coder cela?
Éditer:
Réflexions sur la façon de coder cela. . . exclure toutes les zones, sauf Waldo rouge, squelette les zones rouges et élague-les en un seul point. Faites de même pour les cheveux Waldo marron, le pantalon Waldo bleu, la couleur de chaussure Waldo. Pour la couleur de peau Waldo, excluez, puis trouvez le contour.
Ensuite, excluez les zones non rouges, dilatez (beaucoup) toutes les zones rouges, puis squelettez et élaguez. Cette partie donnera une liste des points centraux Waldo possibles. Ce sera le marqueur pour comparer toutes les autres sections de couleurs Waldo.
À partir d'ici, en utilisant les zones rouges squelettées (pas les zones dilatées), comptez les lignes dans chaque zone. S'il y a le bon nombre (quatre, non?), C'est certainement un domaine possible. Sinon, je suppose que l'exclure (comme étant un centre Waldo ... cela peut toujours être son chapeau).
Vérifiez ensuite s'il y a une forme de visage au-dessus, une pointe de cheveux au-dessus, une pointe de pantalon en dessous, des pointes de chaussures en dessous, etc.
Pas encore de code - toujours en train de lire les documents.