Eu não conheço o Mathematica. . . que pena. Mas eu gosto da resposta acima, na maior parte.
Ainda há uma grande falha no contando com as listras sozinho para recolher a resposta (eu pessoalmente não tenho um problema com um ajuste manual). Há um exemplo (listado por Brett Champion, aqui ) apresentado que mostra que, às vezes, eles quebram o padrão da camisa. Então, torna-se um padrão mais complexo.
Eu tentaria uma abordagem de identificação de forma e cores, juntamente com relações espaciais. Assim como o reconhecimento de rosto, você pode procurar padrões geométricos em determinadas proporções um do outro. A ressalva é que geralmente uma ou mais dessas formas são ocluídas.
Obtenha um equilíbrio de branco na imagem e vermelho e vermelho na imagem. Acredito que Waldo sempre tenha o mesmo valor / matiz, mas a imagem pode ser de uma digitalização ou de uma cópia incorreta. Sempre consulte sempre uma variedade de cores que Waldo realmente é: vermelho, branco, marrom escuro, azul, pêssego, {cor do sapato}.
Há um padrão de camisa e também calças, óculos, cabelo, rosto, sapatos e chapéu que definem o Waldo. Além disso, em relação a outras pessoas na imagem, Waldo está do lado magro.
Então, encontre pessoas aleatórias para obter a altura das pessoas nesta foto. Meça a altura média de várias coisas em pontos aleatórios da imagem (um esboço simples produzirá várias pessoas individualmente). Se cada coisa não estiver dentro de um desvio padrão um do outro, elas serão ignoradas por enquanto. Compare a média das alturas com a altura da imagem. Se a proporção for muito alta (por exemplo, 1: 2, 1: 4 ou similarmente próxima), tente novamente. Execute-o 10 (?) Vezes para garantir que as amostras estejam bem próximas, excluindo qualquer média que esteja fora de algum desvio padrão. Possível no Mathematica?
Este é o seu tamanho do Waldo. Walso é magro, então você está procurando algo 5: 1 ou 6: 1 (ou o que for) ht: wd. No entanto, isso não é suficiente. Se o Waldo estiver parcialmente oculto, a altura poderá mudar. Então, você está procurando um bloco de vermelho-branco que ~ 2: 1. Mas tem que haver mais indicadores.
- Waldo tem óculos. Procure dois círculos 0,5: 1 acima do vermelho-branco.
- Calças azuis. Qualquer quantidade de azul na mesma largura a qualquer distância entre o final do vermelho-branco e a distância dos pés. Observe que ele veste a camisa curta, de modo que os pés não estão muito próximos.
- O chapéu. Vermelho-branco a qualquer distância até o dobro do topo da cabeça. Observe que ele deve ter cabelos escuros abaixo e provavelmente óculos.
- Mangas compridas. vermelho-branco em algum ângulo do vermelho-branco principal.
- Cabelo escuro.
- Cor do sapato. Eu não sei a cor.
Qualquer um desses poderia se aplicar. Também são verificações negativas contra pessoas semelhantes na foto - por exemplo, o item 2 nega usar um avental vermelho-branco (muito perto dos sapatos), o item 5 elimina cabelos claros. Além disso, a forma é apenas um indicador para cada um desses testes. . . somente cores dentro da distância especificada pode dar bons resultados.
Isso reduzirá as áreas a serem processadas.
Armazenar esses resultados produzirá um conjunto de áreas que devem conter o Waldo. Exclua todas as outras áreas (por exemplo, para cada área, selecione um círculo duas vezes maior que o tamanho médio da pessoa) e execute o processo que o @Heike estabeleceu removendo tudo, exceto o vermelho, e assim por diante.
Alguma idéia de como codificar isso?
Editar:
Pensamentos sobre como codificar isso. . . exclua todas as áreas, exceto Waldo, esqueletize as áreas vermelhas e corte-as até um único ponto. Faça o mesmo com os cabelos castanhos Waldo, as calças Waldo azuis, a cor dos sapatos Waldo. Para a cor da pele Waldo, exclua e encontre o contorno.
Em seguida, exclua o não vermelho, dilate (muito) todas as áreas vermelhas e, em seguida, esqueletize e corte. Esta parte fornecerá uma lista dos possíveis pontos centrais do Waldo. Este será o marcador para comparar todas as outras seções de cores do Waldo.
A partir daqui, usando as áreas vermelhas esqueletizadas (não as dilatadas), conte as linhas em cada área. Se houver o número correto (quatro, certo?), Essa é certamente uma área possível. Se não, acho que apenas o excluo (como sendo um centro do Waldo ... ainda pode ser o chapéu dele).
Em seguida, verifique se há um formato de rosto acima, uma ponta de cabelo acima, uma calça abaixo, uma sapato abaixo e assim por diante.
Ainda não há código - ainda está lendo os documentos.