• Nenhum resultado encontrado

Exercise Recorder

No documento ATA DA BANCA EXAMINADORA (páginas 62-69)

7.1 MÓDULOS DO SISTEMA

7.1.1 Exercise Recorder

7 RESULTADOS

Após a conclusão da proposta metodológica, os cinco módulos descritos na Seção 6.2 foram implementados. Com o sistema implementado e os módulos integrados, foram realizados procedimentos experimentais visando validar sua aplicação no contexto proposto, os quais foram detalhados na Seção 6.3.

Esse capítulo apresenta os resultados obtidos em cada uma dessas etapas e está organizado da seguinte forma: a Seção 7.1 detalha as versões finais dos módulos implementados e descreve os pontos mais relevantes de seus fluxos de processamento, e a Seção 7.2 apresenta os resultados obtidos nos experimentos conduzidos para analisar a aplicabilidade do sistema.

Pose Dataset para obter as coordenadas do pixelcentral da mão presente em cada imagem, informação que também é retornada pelo nyu_loader.py para utilização pelo modelo. Essa análise possibilitou a elaboração dos passos para desenvolvimento do módulo atual e a adaptação do algoritmo de predição, detalhada na Seção 7.1.2.

Tendo em vista que a bibliotecalibrealsensetambém pode ser utilizada com a linguagem Python, a mesma foi adotada para o desenvolvimento desse código. O diagrama apresentado na figura 29 ilustra, resumidamente, a sequência de operações lógicas realizadas pelo módulo aqui detalhado. O algoritmo para captação das imagens utiliza dois recursos destreamingda librealsense; o primeiro para captação dosframesRGB para facilitar a visualização da imagem e o segundo para obter dados do sensor de profundidade. O programa utiliza outro recurso da biblioteca para realizar o alinhamento dosframes, o que permite operar com o mesmo sistema de coordenadas para os dois tipos deframes.

Figura 29: Diagrama de atividades com o fluxo lógico do móduloexercise-recorder.

Fonte: Autor

Para que seja possível calcular o centro da mão na imagem apresentada, a mão deve ser posicionada como o objeto mais próximo à câmera. Foi considerado uma distância de 40cm

como limiar para realizar a filtragem dospixelscorrespondentes à mão, isto é, quaisquer objetos posicionados além desse limiar são removidos doframe para cálculo do centro da mão, mas são mantidos para armazenamento da imagem final. Então são realizadas as médias entre as coordenadas horizontais e verticais dospixelspresentes na imagem filtrada, o que resulta nas coordenadas X e Y do centro da mão, respectivamente.

Foi implementada uma ferramenta para pré-visualização das operações realizadas com utilização da bibliotecaOpenCV. Na ferramenta, são exibidos os dados capturados pela câmera em tempo real, após a realização das operações descritas anteriormente. Como resultado, são apresentadas duas imagens; a primeira exibe o resultado de uma combinação de operações que consiste na projeção dospixelscapturados de cadaframeRGB sobre as coordenadas cuja profundidade é inferior ao limiar, e a segunda imagem apresenta osframescapturados pelo sensor de profundidade após a aplicação de um mapa de cores que associa cores mais escuras a objetos mais próximos e mais claras para objetos mais distantes, facilitando a interpretação dos dados capturados. A figura 30 exibe um exemplo da ferramenta de pré-visualização em execução.

Figura 30: Exemplo da ferramenta da pré-visualização em execução. Na imagem à esquerda são apresentados os dados RGB dospixelsdentro do limiar de filtragem e na imagem da direita são apresentados os dados capturados pelo sensor de profundidade após a aplicação de um mapa de cores.

Fonte: Autor.

Pode-se observar, na segunda imagem, que os pontos ao redor dos objetos mais próximos da câmera estão exibidos em tons mais escuros, devido à câmera não conseguir captar a nuvem de pontos do sensor de profundidade nessespixels. Essa limitação dá origem a uma espécie de

sombra na imagem, que na realidade, resulta em intervalos sem informação de profundidade no frame; isto é, pontos onde a biblioteca retornará uma profundidade com valor zero. Para suavizar a ocorrência desse tipo de falha na captura de imagens de profundidade e melhorar a precisão na detecção de bordas foram aplicados filtros de pré-processamento nos dados de entrada. Após a análise dos filtros disponíveis nalibrealsense, optou-se por aplicar dois filtros, sendo estes: 1) filtro espacial - para suavizar as discrepâncias entre valores presentes nas imagens, ainda garantindo a preservação das bordas e com um auxílio para preenchimento de pontos sem informação (holes) noframe; 2) filtro de preenchimento de falhas - utilizado justamente para suavizar o problema de dados faltantes, descrito anteriormente, preenchendo os pontos sem informação da imagem com base nos valores de seus pixelsvizinhos. A figura 31 exibe um exemplo de imagem capturada e processada com uso desses filtros.

Figura 31: Exemplo de imagem capturada pela câmera e pré-processada com uso dos filtros espacial e de preenchimento de falhas dalibrealsense.

Fonte: Autor.

Pode-se observar que, a imagem do mesmo movimento capturada sob condições de posicionamento e iluminação semelhantes, apresenta melhor definição de bordas e menos pontos de sombra, quando comparada com a figura 30, o que pode ser observado tanto na imagem de profundidade, à direita, quanto no resultado da segmentação do fundo exibido com dados RGB, no quadro à esquerda da figura 31.

Além dos recursos de pré-processamento aplicados, vale ressaltar que pontos com dados inválidos, zerados ou com distâncias superiores ao centro da mão, são desconsiderados na etapa

de pré-processamento da imagem no módulo AWR, para que não impactem o resultado da predição. Essa etapa é detalhada na Seção 7.1.2.

Visando facilitar o processamento dosframesdesejados, uma vez que não é objetivo da aplicação processar todos aqueles recebidos da câmera, foi adicionado um evento para captura, associado à tecla Enter do teclado. Quando pressionada, o programa aciona a execução de uma sub-rotina do módulo principal responsável por ler o últimoframeprocessado, junto ao último centro computado, armazenar essas informações em arquivos TXT estruturados e então encaminhar esse evento de captura para o módulomain, o qual então encaminha esses dados para o móduloAWR. O funcionamento dessa comunicação é melhor detalhado na Seção 7.1.5.

A estrutura de pastas e nomenclatura dos arquivos que o módulo cria para armazenamento dos dados capturados varia de acordo com o modo de execução do programa. Caso oexercise- recorderseja iniciado em modo de captura depadrão-ouro, umframecapturado será armazenado utilizando a estrutura exibida na figura 32. Como pode-se observar, o programa adiciona dinamicamente uma pasta com o nome do exercício executado, o que nesse exemploopen-hand é o nome informado para o módulo no momento de inicialização do sistema. Sob essa pasta é adicionado um diretórioinputpara agrupar os arquivosframe.txtecentroid.txt.

Figura 32: Exemplo de estrutura de pastas criada pelo módulo exercise-recorder quando executado no modo de captura de padrão-ouro para um exercício nomeadoopen-hand.

Fonte: Autor.

Caso o programa seja executado em modo de acompanhamento, a estrutura de pastas gerada será ligeiramente diferente, como pode ser observado na figura 33. Nessa estrutura, também é criado um diretório com o nome do exercício realizado na raiz da pasta principal, follow_up, e sob ele são criados dinamicamente diretórios utilizando a data e hora da captura da imagem, sob os quais também é criada uma pasta com nomeinput, que armazena os arquivos

frame.txt ecentroid.txt. Essa estrutura viabiliza a captura de diversas imagens de um mesmo exercício em momentos diferentes.

Figura 33: Exemplo de estrutura de pastas criada pelo módulo exercise-recorder quando executado no modo de captura de acompanhamento para um exercício nomeadoopen-hand.

Fonte: Autor.

O centro da mão calculado é armazenado no arquivo centroid.txt como uma lista de coordenadas (X, Y, Z) separadas por espaços, enquanto os dados de profundidade são salvos no arquivoframe.txtcomo uma matriz de 640 x 480 onde cada valor contém a profundidade dopixel naquela posição, em milímetros. A figura 34 exibe uma porção de um arquivo TXT contendo um framecapturado para o exercícioopen-hande a figura 35 exibe o respectivo centro calculado.

Figura 34: Exemplo de frame capturado pelo módulo exercise-recorder para um exercício nomeadoopen-handno modo de captura de padrão-ouro.

Fonte: Autor.

Figura 35: Exemplo de centroide calculado para o frame exibido na figura 34.

Fonte: Autor.

Foi implementado umscriptem Python para facilitar a validação dos dados capturados.

Nesse programa é realizada a leitura do arquivoframe.txt, o mesmo mapa de cores utilizado na ferramenta de pré-visualização é aplicado e é utilizada a bibliotecaOpenCVpara exibir os dados processados. A figura 36 apresenta um exemplo do resultadoscriptde validação em execução, exibindo o mesmo frame capturado para o exercícioopen-hand, exibido anteriormente na figura 31.

Figura 36: Imagem resultante doscriptde validação lendo oframecapturado para o padrão-ouro do exercícioopen-hand.

Fonte: Autor.

No documento ATA DA BANCA EXAMINADORA (páginas 62-69)

Documentos relacionados