Reconhecimento de braços e mãos

Atualmente estou envolvido com a versão brasileira do concurso da Intel chamado Intel Perceptual Challenge. A ideia deste concurso é muito bacana: solicitar projetos interessantes para serem desenvolvidos com um protótipo, escolher os melhores e premiá-los.

FiguraIntelPerceptualChallenge

Logo que vi esta oportunidade conversei com alguns colegas meus sobre possíveis projetos, uma vez que eu já havia trabalhado antes com o Kinect e esta câmera da Intel me pareceu interessante. Um dos pontos que me chamou à atenção neste protótipo foi a redução considerável da distância entre o usuário e a câmera além dos recursos para reconhecimento de face, baços, mãos e dedos. Quem acompanha o meu trabalho sabe que já falei sobre o como é trabalhar com protótipos antes em um artigo para a Revista número 6 do iMasters que pode ser acessada digitalmente (o meu artigo está nas páginas 42 e 43).

FiguraCameraIntel

Enviei a minha proposta para o pessoal do Intel e ela foi aceita. Após algum tempo recebi a câmera e comecei o desenvolvimento. Por alguns motivos pessoais acabei não tendo muito tempo para me dedicar a este projeto. De qualquer maneira, vou comentar aqui algumas impressões que tive em relação a este dispositivo e também ao SDK necessário para se trabalhar com ele.

Em primeiro lugar, o SDK somente funciona na plataforma Windows a partir da versão 7. Isso já limita um pouco alguns projetos. Em segundo lugar, o SDK é muito orientado para o desenvolvimento na linguagem C/C++, o que pode afugentar alguns profissionais voltados para a artística, interação e design, pois eles tipicamente gostam de trabalhar com outras linguagens e plataformas de desenvolvimento.

FiguraIntelSDK

Em geral a câmera é muito interessante, pois há recursos muito bons para se trabalhar com o áudio (ela possui dois microfones) e também com imagens e vídeo. Contudo, tenho alguns críticas e argumentos que podem agregar à evolução deste dispositivo e do seu SDK.

Para obter um bom reconhecimento de mãos e dedos é preciso que eles sejam balançados em frente à câmera em uma área delimitada e em um conjunto de ângulo específicos. Isso geralmente acarreta no reconhecimento dos braços e das mãos apenas quando o usuário faz um esforço grande para que a câmera os detecte. Na área de HCI (Human Computer Interaction) este esforço do usuário balançar os braços e as mãos em frente a um dispositivo causa fadiga no uso contínuo e é conhecido como síndrome de braço do gorila (Gorila Arms Syndrome) definido nos anos 1980 pela comunidade acadêmica que trabalha com HCI.

FiguraGorillaArm

O que proponho neste caso é que o reconhecimento seja feito com os braços apoiados sobre uma mesa (próximos ao teclado) ou sobre os braços de uma cadeira. Isso reduziria a fadiga em vários grupos de músculos.

Outros aspectos que gostaria de encontrar no SDK da câmera é a inclusão de alguns tipos de filtros. O primeiro grupo de filtros poderia ser utilizado para ajustar a imagens de acordo com condições de iluminação não ideais, tais como luz irregular, fonte de luz incandescente e outros.

Outro grupo de filtros que também seria interessante inclui algoritmos para tornar mais ‘suave’ (data smoothness) os dados de reconhecimento automáticos das features (que são 7: quatro para os olhos, duas para a boca e um para o nariz). Talvez a possibilidade de aplicar algum filtro de ruído como o filtro de Kalman facilitaria o controle de gestos para certas aplicações.

FiguraDataSmothness

Falando sobre as funcionalidades de reconhecimento, gostaria que houvesse algum exemplo no SDK que mostrasse as articulações (joints) dos braços, mãos, dedos, posição da cabeça e também do tronco. Além disso, a câmera simplesmente não retorna nada quando não consegue realizar o reconhecimento. Gostaria que ela tivesse um modo de fazer uma inferência de articulações quando ela não consegue fazer um bom reconhecimento, como no Kinect. Isso facilitaria certas aplicações onde pode-se colocar algum tipo de animação guiada pelos parâmetros inferidos pela câmera quando não há um bom reconhecimento do dispositivo.

FRphoto

Outro ponto que acredito que possa ser melhorado é a gravação do vídeo que contém os dados. Na aplicação de exemplo do SDK o arquivo de vídeo que é gravado com os dados RGB da câmera também contém informações de profundidade dos pontos detectados e fica absurdamente grande (algo na casa de 10GB por minuto), tornando impraticável o armazenamento de vídeos longos. Talvez o SDK devesse ser complementado com algum tipo de codec ou possibilidade de compactação deste vídeo para facilitar análises posteriores e reduzir o tempo de testes e desenvolvimento.

FiguraVideoCodec

Em geral, posso dizer que a proposta da Intel é muito interessante e que eu realmente gostaria que outras empresas seguissem esta linha e disponibilizassem seus protótipos para o público. Desta maneira novos projetos vão surgir e, mesmo que eles não se tornem produtos ou algo comercialmente viável, ao menos eles vão ajudar a despertar a curiosidade e motivar novos desenvolvedores a ingressar na área de interação.



Esta entrada foi publicada em Programação e marcada com a tag , , , , , , , , , , , . Adicione o link permanente aos seus favoritos.

3 respostas a Reconhecimento de braços e mãos

  1. Olá Mauro,

    Tbm participei do Intel Perceptual Challenge.
    Gostaria de convidá-lo para a comunidade NUIBrazil, voltada ao compartilhamento de conteúdo e notícias sobre NUI em lingua portuguesa.

    https://www.facebook.com/groups/nuibrazil/
    http://nuibrazil.com

    Att,

    Gabriel Moreira

  2. Pingback: Projeto DoubleHands | Blog do Mauro Pichiliani

  3. Pingback: Analisando a frequência cardíaca (BPM) | Blog do Mauro Pichiliani

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *