Reconhecimento de Gestos Humanos usando interface natural
Por: Kleber.Oliveira • 1/3/2018 • 2.857 Palavras (12 Páginas) • 373 Visualizações
...
[pic 1]
Figura 1 – Esquema do Microsoft Kinect
Apesar do Kinect para Windows e do Kinect para Xbox serem tão parecidos em vários aspectos, existem diversas diferenças sob o ponto de vista dos programadores. Deve-se ter em mente que a ideia para o console é aperfeiçoar a experiência do jogador, ou seja, desenvolver aplicativos não é a primeira proposta tal qual no Kinect para Windows [2].
Na Tabela 1 se tem uma melhor exemplificação quais são as diferenças de funcionamento dos dois tipos de Kinect existentes:
Tabela 1 – Distância do usuário ao Kinect
Kinect
Distância mínima de operação:
Distância máxima de operação:
para Windows:
0,8m
4,0 m
para Xbox:
0,4m
4,0m
A distância máxima de operação é semelhante, mas ao contrário do funcionamento no console, o funcionamento no Windows permite uma proximidade bem maior entre o usuário e o Kinect. Isso se dá em função da criação de um novo firmware que “ativa” o “Near Mode tracking” [2], ou seja, ativa o reconhecimento de objetos a uma distância próxima ao aparelho sem que haja perdas na precisão. Além dessas diferenças funcionais, o Kinect para Windows requer aparatos adicionais: uma fonte alimentadora externa (12 volts) e um cabo adaptador para a entrada USB comum aos computadores.
2. OBJETIVO.
Objetivou-se neste projeto de Iniciação Científica o desenvolvimento de um software que possibilitasse e facilitasse a interação entre usuário e computador por meio de reconhecimento de gestos fazendo o uso do Kinect, capturando a posição dos braços do usuário para reconhecer gestos pré-definidos e aplicá-los como comandos no computador. Com isto em foco decidiu-se desenvolver uma espécie de programa que facilitasse as apresentações feitas no Microsoft Office PowerPoint para exemplificação. O software desenvolvido possibilitará a apresentação de slides com avanço e retorno de cada página utilizando apenas movimentos pré-definidos pelo programador dos braços direito e esquerdo, livrando assim o apresentador de um slide da tarefa de ficar clicando com o mouse toda vez que quiser avançar ou retroceder seus slides. Alcançados os objetivos de desenvolvimento do projeto, ressalta-se o aprendizado e melhora do aluno na área de visão computacional, seu desenvolvimento como programador na linguagem C# e também seu amadurecimento na área acadêmica, fatos extremamente importantes, já que estes não são aprendizados recorrentes na graduação.
3. MATERIAIS E MÉTODOS.
Dada uma explicação básica do funcionamento do Kinect e explicado o objetivo; cabe, neste item, uma descrição pouco mais detalhada do funcionamento dos softwares e hardwares utilizados para o desenvolvimento até este ponto, bem como as rotinas seguidas para desenvolver o projeto. Para o desenvolvimento deste requereu-se a aquisição do Kinect para Windows, o download de suas ferramentas (Microsoft SDK 1.8 e Develop Toolkit Browser v 1.8) que podem ser encontradas diretamente no site da Microsoft e a aquisição de um software que será utilizado para implementar as rotinas de programação; neste caso utilizou-se o Visual Studio 2012 que foi adquirido junto à Microsoft gratuitamente pelo programa MSDN Academic Alliance por meio do site da Microsoft DreamSpark.
Quando o usuário posta-se frente ao Kinect, seu esqueleto é detectado pelo SDK e dividido numa estrutura que contém diferentes segmentos do corpo; cada um desses segmentos é definido pelas coordenadas dos seus extremos, as chamadas joints (Figura 2). A estrutura possui 20 joints: cabeça, ombro central (pescoço), ombros direito e esquerdo, cotovelos direito e esquerdo, pulsos direito e esquerdo, mãos direita e esquerda, espinha, lados direito, esquerdo e centro do quadril, joelhos direito e esquerdo, calcanhares direito e esquerdo e pés direito e esquerdo. Aqui também se pode apresentar uma diferença entre o Kinect para Windows e para Xbox; no Kinect para Xbox faz-se necessário que o sistema reconheça a presença das 20 joints enquanto que, no Kinect para Windows, é possível que se faça o uso de somente 10 joints e, assim, possibilita-se o reconhecimento de um usuário sentado, por exemplo.
Figura 2 – Joints detectados pelo SDK[pic 2]
Utilizar-se-á os streams de vídeo e de profundidade gerados; com o stream de vídeo, detectam-se as posições do esqueleto, seus segmentos e joints; calcula-se o ângulo formado pelo segmento do antebraço (Figura 3), e com esse valor, executa-se a ação definida ou não pelo gesto pré-definido reconhecido. As ações definidas para testar a técnica serão executar “Page Down” com o gesto do braço esquerdo e “Page Up” com o gesto do braço direito reconhecido. Estas ações deverão ser transmitidas ao aplicativo PowerPoint para o controle da sequência de slides da apresentação.
[pic 3]
Figura 3 – Área de cálculo do ângulo do antebraço
Para implementação deste código fez-se uso da linguagem C# no programa Microsoft Visual Studio utilizando em conjunto a biblioteca Microsoft.Kinect que é instalada junto ao SDK oficial e deve ser referenciada durante a execução e programação. Mesmo não sendo utilizados no desenvolvimento deste projeto em específico, podem ser citados também uma variedade de softwares não oficiais que podem facilitar a execução de vários projetos: o FAAST (Flexible And Articulated Skeleton Toolkit) desenvolvido pela USC (University of Southern California) no Institute for Creative Technologies [3], o OpenNI [4] e o NITE [5]. No próximo item serão citados os resultados alcançados e algumas das rotinas de programação implementadas.
4. RESULTADOS: ANÁLISE E DISCUSSÃO.
Antes da implementação do código e do estudo e entendimento dos procedimentos utilizados, foram necessárias análises de dois fatores: a distância ideal de funcionamento e o ângulo ideal de operação da aplicação.
4.1 – Distância ideal de funcionamento:
Antes
...