Visão para robótica


#1

Alguém tem conhecimento ou material sobre softwares de maquinas fotográficas e celulares que reconhecem “sorriso”… como funcionam? é possível implanta-lo num robô com arduíno e webcam?
seria interessante ter um robô que observasse sorrisos… na verdade tenho vontade montar uma “cabeça robótica” que identifique pessoas que conversem com ou falem próximo a ele, algo como um observador de diálogos…


#2

Oi Jefferson, já trabalhei com processamento de imagens e geralmente este tipo de aplicação precisa de um processamento melhor do que o Arduino pode dar (talvez nesses modelos novos tenha).
Dá uma olhada nas bibliotecas do Matlab, eles geralmente tem coisas bem interessantes.
Abraço!


#3

Como @zotegui informou, esse tipo de aplicação requer um nível de processamento bastante elevado, não posso afirmar com certeza absoluta, mas é muito provável que 16MHz de um AVR (Arduino) não sejam suficientes para fazer isso em tempo hábil.

Pense que são dezenas de frames para serem avaliados por segundo, reconhecimento facial e determinar se, naquela face, há um sorriso.


#4

ola dutra e zotequi, obrigado pela explicação e pela indicação do matlab.
dutra, realmente não havia olhado por esse angulo…frames, realmente sao dados e mais dados.
uma questao aos dois: o processing tem essa capacidade? webcam + pc + arduino + servos??
se não, existe algum programa open para isso?
já dei uma viajada aqui pensando em um app android e um tablet baratinho repassando info para o arduino…


#5

Nunca trabalhei com Processing, mas é uma linguagem de programação como qualquer outra e que inspirou fortemente a DSL do Arduino, mas como eles usavam para ensinar programação com uma ênfase mais visual, acabou que a linguagem enveredou mais por esse lado, na biblioteca padrão de Processing há uma boa parte voltada para desenho de primitivas 3D, pixels, planos, curvas, cores, imagens e etc.

O problema do teu projeto não é software, mas o hardware que você quer usar: Um AVR, com cristal, chega a 16MHz, essa velocidade, provavelmente, não é suficiente para processar frames de um vídeo, que em geral, são 33 frames/segundo, reconhecer face em cada um, marcar a possível posição da boca, tratar a imagem para facilitar o reconhecimento da curva e determinar o sorriso num tempo hábil.

Talvez com Arduino Due (que usa um SAM3X8E a 84MHz) a coisa possa melhorar, mas não tenho certeza, nunca fiz algo parecido e não sei qual a real necessidade para esse tipo de aplicação.

Se você quer fazer todo esse tratamento num aplicativo para tablet/celular melhor então enviar tudo para lá, pegue o código de um aplicativo de câmera e comece a alterar fundindo com algum outro de reconhecimento facial, nesse caso, Arduino só serviria mesmo para dar uma resposta ao dado tratado pelo aplicativo.