INTERFACE VIRTUAL COM SENSOR 3D PARA INTERAÇÃO DE PESSOAS ACAMADAS
José Luís de Oliveira Eusébio
Orientador: Professor Doutor Vítor Carvalho
Dissertação apresentada ao Instituto Politécnico do Cávado e do Ave para obtenção do Grau de Mestre em Engenharia Eletrónica e de Computadores
Novembro 2016
2
INTERFACE VIRTUAL COM SENSOR 3D PARA INTERAÇÃO DE PESSOAS ACAMADAS
José Luís de Oliveira Eusébio
Orientador: Professor Doutor Vítor Carvalho
Dissertação apresentada ao Instituto Politécnico do Cávado e do Ave para obtenção do Grau de Mestre em Engenharia Eletrónica e de Computadores
Novembro 2016
DECLARAÇÃO
Nome: José Luís de Oliveira Eusébio Endereço eletrónico: [email protected]
Título do Trabalho: INTERFACE VIRTUAL COM SENSOR 3D PARA INTERAÇÃO DE PESSOAS ACAMADAS
Orientador: Professor Doutor Vitor Carvalho Ano de conclusão: 2016
Designação do Curso: Mestrado em Engenharia Eletrónica e de Computadores – Automação e Robótica
É AUTORIZADA A REPRODUÇÃO INTEGRAL DO PRESENTE TRABALHO APENAS PARA EFEITOS DE INVESTIGAÇÃO, MEDIANTE DECLARAÇÃO ESCRITA DO INTERESSADO, QUE A TAL SE COMPROMETE.
Instituto Politécnico do Cávado e do Ave, 04 de Novembro de 2016
Assinatura: _____________________________________________________________
Resumo
A interação homem-máquina tem evoluído significativamente nos últimos anos, a ponto de permitir desenvolver soluções adequadas para apoio a pessoas que possuem um certo tipo de limitação física ou cognitiva. O desenvolvimento de técnicas naturais e intuitivas de interação, as chamadas Natural User Interface (NUI), permitem, hoje, que pessoas que estejam acamadas e/ou com incapacidade motora possam executar um conjunto de ações por intermédio de gestos, aumentando assim a sua qualidade de vida.
A solução implementada neste projecto é baseada em processamento de imagem e visão por computador através do sensor 3D Kinect e consiste numa interface natural para o desenvolvimento de uma aplicação que reconheça gestos efetuados por uma mão humana. Os gestos identificados pela aplicação acionam um conjunto de ações adequados a uma pessoa acamada, como, por exemplo, acionar a emergência, ligar ou desligar a TV ou controlar a inclinação da cama.
O processo de desenvolvimento deste projeto implicou várias etapas. Inicialmente houve um trabalho intenso de investigação sobre as técnicas e tecnologias consideradas importantes para a realização do trabalho - a etapa de investigação, a qual acompanhou praticamente todo o processo. A segunda etapa consistiu na configuração do sistema ao nível do hardware e do software. Após a configuração do sistema, obtiveram-se os primeiros dados do sensor 3D Kinect, os quais foram convertidos num formato mais apropriado ao seu posterior tratamento.
A segmentação da mão permitiu posteriormente o reconhecimento de gestos através da técnica de matching para os seis gestos implementados.
Os resultados obtidos são satisfatórios, tendo-se contabilizado cerca de 96% de resultados válidos. A área da saúde e bem-estar tem necessidade de aplicações que melhorem a qualidade de vida de pessoas acamadas, nesse sentido, o protótipo desenvolvido faz todo o sentido na sociedade actual, onde se verifica o envelhecimento da população.
Palavras-chave: Kinect, Reconhecimento de gestos, Template Matching, Interface Natural, Pessoas acamadas.
Abstract
The man-machine interaction has evolved significantly in last year’s allowing developing appropriate solutions to support people who have a certain type of physical or cognitive limitation. The development of natural and intuitive interaction techniques, called Natural User Interfaces (NUI) allow today that people who are bedridden and/or physical disability can perform a set of actions by gestures, thus increasing their quality life.
The implemented solution in this project is based on image processing and computer vision through the Kinect 3D sensor and is a natural interface for development of an application to recognize gestures made by a human hand. Gestures identified by a software application trigger a set of actions that make sense for a bedridden person, for example, trigger the emergency, switch on/off the TV or control the bed slope.
The development of this project involved several steps. Initially there was an intense research on the techniques and technologies considered important to carry out the work - the step of investigation, which followed almost the entire process. The second step was the system configuration in terms of hardware and software. After the system configuration, it was afforded the first Kinect data, which were converted into a most suitable format for further processing. The hand segmentation allowed further gesture recognition by a matching technique to the six gestures implemented.
The results obtained are satisfactory, being about 96% of valid results. The health and welfare area has a major need of systems that improve the quality of life of bedridden people, taking that into account, the prototype developed makes sense in today's society, where there is observed an aging population.
Keywords: Kinect, Gesture Recognition, Man-Machine Interaction, Template Matching, Natural User Interface, people bedridden.
Agradecimentos
Agradeço ao professor Vítor Carvalho, orientador de mestrado, por todo apoio prestado durante a realização da tese.
Agradeço ao professor Nuno Peixoto, que me orientou na fase inicial da dissertação, pelo apoio prestado.
Agradeço ao professor João Vilaça, diretor do mestrado, pelo apoio na resolução das questões inerentes ao próprio curso que foram surgindo ao longo do mestrado.
Agradeço à minha família pela paciência.
José Luís Eusébio
Índice
1. Introdução ... 1
1.1. MOTIVAÇÃO E ENQUADRAMENTO ... 2
1.2. OBJETIVOS ... 2
1.3. ESTRUTURA DO DOCUMENTO ... 2
2. Estado da arte ... 5
2.1. TECNOLOGIAS ASSOCIADAS AOS PACIENTES ACAMADOS ... 5
2.1.1. Quarto inteligente para idosos com dispositivo sensor 3D Kinect ... 5
2.1.2. Desenvolvimento de um sistema de apoio a pacientes acamados utilizando gestos das mãos 6 2.1.3. Sistema de monitorização do peso de pacientes acamados ... 7
2.1.4. Desenvolvimento de um sistema robótico para pacientes acamados ... 7
2.1.5. Análise do corpo de pacientes nos cuidados intensivos através da imagem de profundidade ... 8
2.1.6. Deteção de status de cama de paciente acamado em 3D usando o sensor 3D Kinect ... 8
2.1.7. Sistema de monitorização de pacientes acamados ... 9
2.1.8. Colchão inteligente para doentes acamados ... 9
2.1.9. Desenvolvimento de um sistema mecatrónico para apoio à qualidade de vida de pacientes acamados ... 10
2.1.10. Monitorização de pacientes em camas de hospital com sensores de profundidade não obstrutivos ... 11
2.2. BENEFÍCIOS DA SOLUÇÃO APRESENTADA NESTE PROJETO ... 12
3. Conceitos Teóricos ... 15
3.1. TÉCNICAS DE CAPTURA DE IMAGENS 3D ... 15
3.1.1. Estereoscopia ... 15
3.1.2. Triangulação Laser ... 17
3.1.3. Luz estruturada (Estereoscopia ativa) ... 17
3.1.4. Tempo de propagação do sinal (Time of Flight) ... 19
3.2. SENSOR 3DKINECT ... 20
3.2.1. Estrutura interna do sensor 3D Kinect ... 20
3.2.2. Funcionamento do sensor 3D Kinect... 20
3.2.3. Motion tracking do corpo humano ... 21
3.2.4. Ferramentas para desenvolvimento ... 22
3.2.4.1. OpenKinect ... 22
3.2.4.2. Microsoft Kinect for Windows... 22
3.2.4.3. OpenNI ... 23
3.3. TÉCNICAS DE DETEÇÃO DE MOVIMENTO ... 25
3.3.1. Background subtraction ... 26
3.3.2. Frame difference ... 26
3.3.3. Optical flow ... 26
3.4. A EVOLUÇÃO DA INTERAÇÃO HOMEM-MÁQUINA ... 28
3.4.1. Tecnologias de superfície multiponto ... 30
3.4.2. Natural User Interface (NUI) ... 30
3.5. VISÃO POR COMPUTADOR E PROCESSAMENTO DE IMAGEM DIGITAL ... 32
3.6. RECONHECIMENTO DE GESTOS ... 33
3.6.1. Métodos de reconhecimento de gestos estáticos ... 34
3.6.2. Métodos de reconhecimento de gestos dinâmicos ... 35
4. Arquitetura do sistema... 37
xiv
4.1. DESCRIÇÃO DO DIAGRAMA DA ARQUITETURA DO SISTEMA ... 38
4.2. HARDWARE... 38
4.2.1. Montagem da estrutura de suporte do sensor ... 38
4.2.2. Sensor 3D Kinect ... 39
4.2.3. Dispositivo de simulador ... 40
4.3. SOFTWARE... 41
4.3.1. OpenCV ... 41
4.3.2. OpenNI ... 41
4.3.3. Arduíno ... 42
4.3.4. Configuração do software ... 42
4.3.4.1. Configuração do OpenCV ... 43
4.3.4.2. Configuração do OpenNI ... 44
4.4. INTERFACE DE UTILIZAÇÃO ... 45
4.5. PROTÓTIPO PARA UTILIZAÇÃO DE PACIENTES ACAMADOS ... 46
4.6. ILUMINAÇÃO ... 47
5. Desenvolvimento do sistema... 49
5.1. O PROCESSO DE DESENVOLVIMENTO... 50
5.2. CONVERSÃO DE INFORMAÇÃO... 50
5.2.1. Acesso aos dados fornecidos pelo dispositivo sensorial ... 50
5.2.2. Normalização do histograma ... 51
5.2.3. Conversão para uma escala de cinzentos ... 51
5.3. OBTENÇÃO DO BACKGROUND ... 52
5.3.1. Média das primeiras vinte e cinco frames... 52
5.3.2. Área de interação para reconhecimento de gestos ... 53
5.4. EXTRAÇÃO DA MÃO ... 54
5.4.1. Obtenção do blob da mão ... 56
5.4.2. Eliminação do antebraço ... 57
5.5. PROCEDIMENTOS ADICIONAIS À IMAGEM OBTIDA ... 60
5.6. RECONHECIMENTO DOS GESTOS ... 60
5.6.1. Abordagens iniciais ... 60
5.6.1.1. Momentos de Hu... 61
5.6.1.2. Método SURF ... 62
5.6.1.3. Outras abordagens testadas ... 62
5.6.2. Abordagem final - Shape matching ... 64
5.6.3. Gestos a ser identificados ... 66
5.7. A SIMULAÇÃO COM O ARDUÍNO ... 68
5.8. CRIAÇÃO DA BASE DE DADOS ... 69
6. Resultados Experimentais ... 71
6.1. TESTE Nº 1 EFETUADO PELO SUJEITO A ... 72
6.2. TESTE Nº 2 EFETUADO PELO SUJEITO B ... 73
6.3. TESTE Nº 3 EFETUADO PELO SUJEITO C ... 74
6.4. TESTE Nº 4 EFETUADO PELO SUJEITO D ... 75
6.5. TOTAIS DE OBSERVAÇÕES DE CADA GESTO ... 76
6.6. MATRIZ DE CONFUSÃO ... 77
7. Conclusões e trabalho futuro ... 79
7.1. CONCLUSÕES ... 79
7.2. TRABALHO FUTURO ... 79
Referências bibliográficas ... 81
A – Datasheet do sensor 3D Kinect ... 89
A.1–DATASHEET COM VALORES BASEADOS EM MEDIDAS ... 89
A.2–ESPECIFICAÇÕES DO SENSOR 3DKINECT ... 90
A.3–MEDIÇÃO E CÁLCULO PARA A RESOLUÇÃO ESPACIAL X/Y ... 90
A.4–CÁLCULO DOS VALORES DE RESOLUÇÃO DE PROFUNDIDADE PARA AS DISTÂNCIAS INDICADAS ... 91
xv
B – Datasheet do Arduíno ... 93
C – Listagem de código ... 95
C.1–CLASSE DO MAIN() PROGRAM ... 95
C.2–CLASSE DE INTERFACE COM O KINECT ... 97
C.3–CLASSE DE CONVERSÃO DOS DADOS DO KINECT ... 98
C.4–CLASSE DE EXTRAÇÃO DA MÃO ... 101
C.4–CLASSE DE RECONHECIMENTO DE GESTOS ... 106
Índice de figuras
Figura 1 - A fronteira imaginária da cama [5]. ... 6
Figura 2 - Visão geral do sistema [6] ... 6
Figura 3 - Representação esquemática da arquitetura do sistema. (1) Fitas de pressão acopladas aos sensores, (2) cama hospitalar, (3) Interface de Comunicação com o sistema, (4) e (5) servidor local e servidor central, (6) dispositivo de consulta de informação [7]. ... 7
Figura 4 - Sensores de pressão distribuídos pelo colchão da cama [8]. ... 7
Figura 5 - À esquerda: o dispositivo de gravação faz a monitorização do paciente. À direita: o mapa de alinhamento da cama é uma representação baseada na altura alinhada com a superfície da cama [9] .... 8
Figura 6 - Imagens de 8 cenários de diferentes posições de cama. Um manequim humano está deitado na cama coberta por um cobertor para simular o ambiente do quarto do paciente[10]. ... 8
Figura 7 – Esquema do Sistema de Monitorização de Pacientes [11]. ... 9
Figura 8 – Interior do colchão inteligente [12] ... 10
Figura 9 - Colocação do sensor de posição no paciente [14] ... 11
Figura 10 – Imagem de profundidade. (a) Deteção de paciente deitado na cama (circulo amarelo), (b) Detetado paciente (circulo amarelo) e funcionário hospitalar (circulo verde) [15]. ... 12
Figura 11 – Resumo da arquitetura do sistema... 13
Figura 12 - Diagrama de visão estereoscópica [23] ... 16
Figura 13 - Geometria do sistema de triangulação laser [24] ... 17
Figura 14 - Projeção da luz estruturada num objeto [29] ... 18
Figura 15 - O princípio da tecnologia Time Of Flight [33] ... 19
Figura 16 - Microsoft 3D Kinect [37] ... 20
Figura 17 - A partir de uma única imagem de profundidade é inferida uma distribuição das partes corpo humano [40]... 21
Figura 18 - Bibliotecas que usam o OpenNI [30] ... 22
Figura 19 – O Microsoft Kinect for Windows reconhece até seis pessoas e consegue seguir duas [44] ... 23
Figura 20 - As três camadas abstratas do OpenNI [30] ... 24
Figura 21 - Algumas funcionalidades do OpenNI: Localização da mão (esq.), esqueleto (meio) e seguimento da mão (dir.) [30]... 24
Figura 22 - Evolução das interfaces gráficas [2]. ... 29
Figura 23- Exemplos de sistemas que fazem uso dos gestos como forma de interação [74] ... 31
Figura 24 – Interação Natural com o Utilizador com recurso ao sensor 3D Kinect [75] ... 31
Figura 25 - Alguns exemplos de utilização do processamento de imagem [79] ... 33
Figura 26 - Exemplo para obtenção dos momentos de Hu [86] ... 34
Figura 27 - Arquitetura do sistema ... 37
Figura 28 – Estrutura de suporte do sensor 3D Kinect ... 38
Figura 29 - Sensor 3D Kinect ligado a um PC ... 39
Figura 30 - Campo de visão do sensor 3D Kinect [87]... 39
Figura 31 - Ângulo de visão do sensor [87] ... 40
xviii
Figura 32 - Bits de um pixel de uma imagem em profundidade [88] ... 40
Figura 33 - Montagem do dispositivo simulador ... 40
Figura 34 - Logotipo da biblioteca OpenCV ... 41
Figura 35 - Arquitetura do SDK ... 42
Figura 36 - Comunicação com o Arduíno ... 42
Figura 37 - Configuração do system path [90]... 43
Figura 38 - Configuração do Visual Studio [90] ... 43
Figura 39 - Inclusão do diretório de bibliotecas [90] ... 44
Figura 40 - Ligação das bibliotecas do OpenCV [90] ... 44
Figura 41 – Propriedades do sistema, onde deverão surgir os drivers do sensor 3D Kinect corretamente instalados ... 45
Figura 42 - Interface de utilização do protótipo desenvolvido ... 46
Figura 43 – Medidas do protótipo para uma utilização real do sistema [91] ... 46
Figura 44 – Design do protótipo com o sensor dentro do candeeiro para que fique oculto para o utilizador [91] ... 47
Figura 45 - Ambiente de desenvolvimento do projeto ... 49
Figura 46 - Etapas de desenvolvimento ... 50
Figura 47 - Conversão do mapa de profundidade do sensor 3D Kinect ... 51
Figura 48- Imagem base de trabalho (com tons de cinza) ... 52
Figura 49 – Soma de pixéis para obtenção do background... 52
Figura 50 - Background processado... 53
Figura 51 - Posicionamento do sensor 3D Kinect ... 53
Figura 52 - Imagem da mesa que servirá como máscara ... 54
Figura 53 - Instruções utilizadas para descartar tudo o que não está em cima da mesa ... 54
Figura 54 – Extração da mão através do reconhecimento do esqueleto [92] ... 55
Figura 55 – Extração da mão considerando que é a parte do corpo mais próxima do sensor [93] ... 55
Figura 56 - Imagem com os contornos da frame ... 56
Figura 57 - Imagem com os contornos da frame preenchidos ... 56
Figura 58 - Imagem final com um único contorno... 57
Figura 59 – Fecho convexo (Convex hull) ... 58
Figura 60 - Defeitos convexos (convex defects) ... 58
Figura 61 - Círculo centrado no centro da palma da mão ... 59
Figura 62 - Contorno da mão após a eliminação do antebraço... 59
Figura 63 - Imagens finais escalonadas para a dimensão 100x100 pixéis ... 60
Figura 64 - Código para o escalonamento da imagem... 60
Figura 65 – Obtenção do valor médio dos momentos de Hu para cada classe de gestos ... 61
Figura 66 – Computação da tolerância considerada para os valores obtidos dos momentos de Hu ... 62
Figura 67 – Verificação se um gesto é válido através da observância dos primeiros três momentos de Hu ... 62
xix
Figura 68 - Template matching ... 63
Figura 69 - Comparação de histogramas ... 63
Figura 70 – Pesos atribuídos às iterações anteriores ... 64
Figura 71 – Pesos atribuído à semelhança ou dissemelhança entre imagens... 64
Figura 72- Exemplo de uma classe de imagens relativas a um determinado gesto ... 65
Figura 73 - Utilização da função matchShapes ... 65
Figura 74 – Código para computação dos intervalos pré-estabelecidos para atribuição de pesos à comparação ... 66
Figura 75 – Cálculo do valor final de comparação com uma classe de gestos ... 66
Figura 76 - Gestos que o sistema reconhece... 67
Figura 77 - Um output do reconhecimento de gestos ... 67
Figura 78 – Interpretação, pelo Arduíno, dos códigos enviados via porta série ... 69
Figura 79 - código utilizado para gravar uma imagem previamente escalonada ... 70
Índice de tabelas
Tabela 1 – Valores dos momentos de Hu de cada uma das letras da imagem [86] ... 34
Tabela 2 – Gestos associados à ativação/desativação dos leds ... 68
Tabela 3 - Distribuição do número de observações por teste/sujeito ... 71
Tabela 4 – Resultados do teste efetuado pelo sujeito A ... 72
Tabela 5 - Resultados do teste efetuado pelo sujeito B... 73
Tabela 6 - Resultados do teste efetuado pelo sujeito C ... 74
Tabela 7 - Resultados do teste efetuado pelo sujeito D ... 75
Tabela 8 - Resultados totais observados para cada gesto ... 76
Tabela 9 - Matriz de confusão dos testes realizados ... 77
Lista de abreviaturas e acrónimos
2D 2 Dimensões
3D 3 Dimensões
API Application Programming Interface
DOF Degree of Freedom
DTM Dynamic Template Matching
DTW Dynamic Time Warping
GUI Graphical User Interface
HMM Hidden Markov Models
HU Ming-Kuei Hu
IDE Integrated Development Environment
IHM Interação Homem-Máquina
IR InfraRed
KDE Kernel Density Estimation
LIDAR Light Detection and Ranging
NiTE Natural Interaction Middleware
NUI Natural User Interface
OpenCV Open Source Computer Vision Library OpenNI Open Natural Interaction
Pixel Picture Element
RADAR Radio Detection and Ranging
RGB Red Green and Blue
RGB-D Red Green Blue and Depth
SDK Software Development Kit
SURF Speed Up Robust Features
STM Static Template Matching
TOF Time of Flight
WIMP Windows, Icons, Menus and Pointer
xxiv
1. Introdução
Segundo o Relatório de Primavera de 2015, do Observatório Português dos Sistemas de Saúde, existem em Portugal cerca de 50 mil pessoas acamadas a viver em casa. Estima-se que este número aumente nos próximos anos, tendo conta que temos uma população cada vez mais envelhecida e com crescentes situações de dependência. O documento estima que haja no país cerca de 110 mil pessoas dependentes a necessitarem de ajuda para realizar atividades básicas, como alimentarem-se, tomar banho, vestirem-se ou levantarem-se da cama. Existe uma insuficiente assistência profissional proporcionada aos doentes que tem implicações no agravamento das suas condições de saúde [1].
O cenário observado em Portugal espelha o que acontece pelo mundo. As populações estão cada vez mais envelhecidas e dependentes e as suas condições de vida necessitam de ter mais qualidade.
Se existe um ramo em que a ciência e as tecnologias podem e devem ter um papel fulcral, esse ramo é precisamente na área da saúde e do bem-estar das pessoas. E, no caso particular da eletrónica e da computação, existe um manancial de sistemas que podem ser desenvolvidos para adicionar qualidade de vida às pessoas.
Foram necessários poucos anos para que as novas tecnologias alterassem radicalmente a forma como as pessoas se relacionam e a própria sociedade. Durante as três últimas décadas, período em que as novas tecnologias dominaram e apresentaram “ao mundo” às suas surpreendentes inovações, também a interação do Homem com estas máquinas sofreu uma alteração radical, nomeadamente, desde a linha de comandos, passando pelo rato e teclado, até às recentes interfaces multiponto.
O desenvolvimento de interfaces é uma tarefa complexa, a qual requer uma parte considerável do tempo de desenvolvimento dos programadores de sistemas [2]. Os utilizadores são mais exigentes em relação ao modo de interação que um determinado sistema disponibiliza e optam por modos de interação que lhes oferecem mais garantias de usabilidade.
Os dispositivos móveis tornaram-se muito populares devido à sua simplicidade, funcionalidade, portabilidade e facilidade de utilização. Estes dispositivos fazem uso da tecnologia de multiponto, que significa a capacidade de reconhecer a presença de dois ou mais pontos de contato com a superfície. Utilizando esta tecnologia, os utilizadores interagem diretamente com os elementos gráficos, realizando ações com a utilização dos dedos, através de gestos intuitivos.
As interfaces naturais permitem um maior grau de liberdade em comparação com o rato e o teclado [3], sendo que estes estão obsoletos para certos ambientes, como, por exemplo, nos quiosques multimédia públicos, em variadas cirurgias, na reabilitação física ou na área do bem- estar.
A análise do movimento humano no campo da interação homem-máquina tem ganho uma importância crescente. Por um lado, os dispositivos existentes tornaram-se mais sofisticados e, quando combinados com o aumento do desempenho computacional, permitem a resolução de problemas complicados. Por outro lado, surgiram dispositivos mais acessíveis que podem ser utilizados como parte de sistemas de custo relativamente baixo. As principais áreas de análise de movimento humano são a vigilância, a medicina, os jogos e a animação, as quais implicam investigação no reconhecimento de gestos humanos, e de motion tracking [4].
2
O trabalho apresentado neste projeto considera o reconhecimento de gestos da mão para a interação com o utilizador (acamado) que por sua vez irão permitir controlar algumas atividades básicas.
1.1. Motivação e Enquadramento
A motivação para elaborar este projeto surge do interesse do autor por esta área de investigação. O facto de ser uma área em expansão também pesou na decisão em optar por esta tese de mestrado.
As tecnologias atuais permitem uma grande liberdade de interação do homem com as máquinas, contudo existem diversas lacunas que urge preencher. A possibilidade de as pessoas acamadas poderem interagir com dispositivos elétricos de forma natural ainda está longe da maturidade. Este projeto visa preencher esta lacuna e possibilitar a estas pessoas executar, por intermédio da tecnologia, ações de forma autónoma.
A interface virtual deste projeto irá utilizar visão por computador com recurso a um sensor 3D e pretende contribuir para melhorar a qualidade de vida de pessoas acamadas. Deve ser uma aplicação intuitiva e minimalista na ótica do utilizador, cuja interação é efetuada através do reconhecimento dos gestos da mão.
1.2. Objetivos
O objetivo deste projeto é permitir que o utilizador (pessoa acamada com fraca mobilidade e dependente de outrem) possa interagir, de forma muito intuitiva, com um sistema computorizado equipado com o sensor 3D Kinect, usando os gestos das mãos, para efetuar um conjunto de ações básicas, como por exemplo, ligar/desligar a TV, chamar a enfermeira ou ligar/desligar a luz.
A solução deve permitir que o utilizador coloque as suas mãos numa área com coberta pelo sensor 3D Kinect, fazendo gestos com a mão, que quando identificados, desencadearão uma determinada ação pré-definida (as quais poderão ser adaptadas às necessidades do utilizador).
1.3. Estrutura do documento
Este trabalho encontra-se organizado em 6 capítulos. O segundo capítulo, “Estado da Arte”, versa sobre o estado da arte. Abordam-se os estudos e soluções de tecnologias existentes de apoio a pacientes acamados e descrevem-se as mais-valias da solução apresentada para melhorar a qualidade de vida dos pacientes acamados. No terceiro capítulo, “Conceitos Teóricos”, analisam-se as técnicas de captura de imagens 3D, os sensores 3D, com destaque para o sensor 3D Kinect. Também será feita uma incursão pelas técnicas de deteção de movimento. Apresenta-se a evolução da interação Homem-máquina, com destaque para as tecnologias de superfície multiponto e para as interfaces de utilização naturais. Aborda-se o tema da visão por computador e processamento de imagem digital, bem como do reconhecimento de gestos. No quarto capítulo, “Arquitetura do Sistema”, apresenta-se e descreve-se o diagrama da arquitetura do sistema, bem como dos dispositivos de hardware e software utilizados. Também se menciona a configuração inicial dos diversos módulos de software necessários à solução proposta e se apresenta a interface de utilização. No final,
3
sugere-se um protótipo a ser utilizado por pacientes acamados. O capítulo cinco,
“Desenvolvimento do Sistema”, descreve-se a obtenção da informação do dispositivo sensorial e respetiva conversão dessa informação, seguindo-se a descrição da forma como se obteve a imagem que servirá como background. A extração da mão é um outro processo do desenvolvimento que é descrito neste capítulo. Após a extração da mão descrevem-se os procedimentos finais à imagem, necessários para a fase seguinte, que é a realização do reconhecimento dos gestos da mão. Durante a descrição do reconhecimento dos gestos são abordados todos os métodos testados. Este capítulo termina com a explicação da simulação efetuada ao sistema. No capítulo número seis, “Resultados Experimentais”, são discutidos e comentados os resultados obtidos. Finalmente, no capítulo sete, “Conclusões e Trabalho Futuro”, apresentam-se as principais conclusões do projeto realizado, bem como propostas de desenvolvimento de novas etapas.
A Reter deste Capítulo
Neste capítulo efetuou-se a introdução à área de desenvolvimento do projeto, nomeadamente os objetivos, motivação, enquadramento e estrutura do documento.
2. Estado da arte
Nesta secção apresentam-se os estudos e soluções de tecnologias existentes de apoio a pacientes acamados e descrevem-se as mais-valias da solução apresentada para melhorar a qualidade de vida dos pacientes acamados.
2.1. Tecnologias associadas aos pacientes acamados
A possibilidade de viver de forma autónoma é uma mais-valia para a qualidade de vida das pessoas que estão acamadas, nesse sentido, têm surgido diversos sistemas de apoio às atividades diárias de pacientes acamados.
O aumento da esperança média de vida também implica, por um lado, uma maior pressão, por parte desta franja da população, para que sejam desenvolvidas tecnologias que possibilitem às pessoas manter um estilo de vida normalizado. Por outro lado, o próprio mercado comercial vê nesta área uma oportunidade de negócio que pretende impulsionar.
De facto, são muitos os projetos desenvolvidos para esta área, que vão desde dispositivos para automatização das casas e controlo remoto ou automático de estores, iluminação, TV, telefone, etc., até sistemas hospitalares que funcionam como suplementos da incapacidade motora destas pessoas.
Apresentam-se a seguir alguns estudos e soluções de tecnologias direcionadas para apoio a pacientes acamados.
2.1.1. Quarto inteligente para idosos com dispositivo sensor 3D Kinect
Este projeto [5] propõe um sistema facilitador das atividades diárias de pessoas idosas e com fraca locomoção dentro do quarto. Permite, por exemplo, ajudar um idoso a ligar ou desligar dispositivos elétricos, sem que tenha necessidade de tocar nesses dispositivos ou nos seus controlos remotos. O sistema deteta e alerta o idoso quando existe o risco deste cair da cama, quando este apresenta alguns sintomas anormais ou ainda quando este necessita de assistência. O sistema proposto é composto por um sensor 3D Kinect para monitorizar anormalidades, detetar gestos e quaisquer outros sinais de necessidade de ajuda.
Por exemplo, a forma de verificar se o individuo está em risco de cair da cama, é implementada com recurso a uma fronteira imaginária (Figura 1) dos limites da cama e pela deteção do esqueleto do individuo pelo dispositivo sensorial. Sempre que uma parte do corpo do individuo, medida em percentagem, ultrapassa os limites da cama é ativado um alarme para que o individuo se possa reposicionar.
6
Figura 1 - A fronteira imaginária da cama [5].
2.1.2. Desenvolvimento de um sistema de apoio a pacientes acamados utilizando gestos das mãos
Esta solução, Figura 2, foi projetada com o objetivo de ajudar pessoas acamadas e fisicamente debilitadas a viver de forma independente. A solução consiste num sistema para controlar dispositivos elétricos. O sistema utiliza sensor 3D Kinect e pode ser controlado a partir de uma cama, através dos gestos das mãos, além disso, comandos de voz também são aceites.
Contudo, a voz não será uma boa forma de interação numa cama de um hospital devido ao ruido envolvente, além disso, existe uma grande quantidade de pacientes que não conseguem pronunciar comandos de voz [6].
Figura 2 - Visão geral do sistema [6]
7
2.1.3. Sistema de monitorização do peso de pacientes acamados
O sistema da Figura 3 foi desenvolvido por investigadores da Universidade de Coimbra para monitorização, em tempo real, de pacientes acamados em ambiente hospitalar. O sistema avalia, de forma modular integrada, o peso do doente, e assegura a sua vigilância, permitindo o registo e o acesso através da Internet, bem como a consulta posterior dessa informação armazenada. Este tipo de sistema é de elevada importância para doentes em unidades de cuidados intensivos, uma vez o conhecimento do peso permite a administração rigorosa dos fármacos. Por outro lado é possível detetar variações anormais do peso dos doentes auxiliando, assim, a intervenção terapêutica [7].
Figura 3 - Representação esquemática da arquitetura do sistema. (1) Fitas de pressão acopladas aos sensores, (2) cama hospitalar, (3) Interface de Comunicação com o sistema, (4) e (5) servidor local e servidor central, (6)
dispositivo de consulta de informação [7].
2.1.4. Desenvolvimento de um sistema robótico para pacientes acamados
Uma equipa de investigadores da República da Coreia desenvolveu uma cama inteligente que constitui num sistema robótico, para ajudar pacientes a ter uma vida independente na cama, Figura 4. A cama é equipada com dois braços robóticos e um conjunto de sensores de pressão ligados ao colchão. A distribuição da pressão sobre o colchão é usada para estimar a postura do paciente e um apoio adequado é fornecido pelos braços robóticos [8].
Figura 4 - Sensores de pressão distribuídos pelo colchão da cama [8].
8
2.1.5. Análise do corpo de pacientes nos cuidados intensivos através da imagem de profundidade
Um outro projeto desenvolvido, Figura 5, utiliza uma camara de profundidade para monitorizar pacientes acamados e para prevenir acidentes nas camas hospitalares. Utilizam um mapa de alinhamento da cama para analisar o corpo do paciente. A camara de profundidade serve para localizar a cama e estimar a sua superfície. O sistema permite desenvolver métricas para estimar de ocupação da cama, agitação do corpo e a posição em que o individuo dorme [9].
Figura 5 - À esquerda: o dispositivo de gravação faz a monitorização do paciente. À direita: o mapa de alinhamento da cama é uma representação baseada na altura alinhada com a superfície da cama [9]
2.1.6. Deteção de status de cama de paciente acamado em 3D usando o sensor 3D Kinect
Um outro projeto, Figura 6, partindo da premissa de que os pacientes gastam a maior parte do seu tempo hospitalar em camas não monitorizadas, podendo assim ocorrer situações de risco para a segurança, saúde e qualidade de vida do paciente, propõe um sistema de monitorização para pessoas acamadas. O sistema baseia-se na informação de profundidade do sensor 3D Kinect, para estimar em 3D as bordas da cama, altura e outros parâmetros da cama, para dessa forma prevenir, por exemplo, quedas da cama, entrada e saída da cama. Esta prevenção é feita na forma de alarme que é ativado sempre que ocorram situações anómalas [10].
Figura 6 - Imagens de 8 cenários de diferentes posições de cama. Um manequim humano está deitado na cama coberta por um cobertor para simular o ambiente do quarto do paciente[10].
9
2.1.7. Sistema de monitorização de pacientes acamados
Os sistemas de monitorização de pacientes acamados são dos mais utilizados em hospitais.
Estes sistemas auxiliam médicos, enfermeiros e auxiliares médicos na assistência, fornecendo um meio de observação regular de pacientes nas diversas unidades a partir de um local remoto.
Uma equipa de Investigadores de Singapura desenvolveu um sistema que fornece um conjunto de valores a serem analisados sobre sinais vitais, evolução do paciente, entre outros, que permitem aferir o estado do paciente, Figura 7. Além disso, algumas atividades do paciente, como levantar-se ou deitar-se na cama ou uma queda da cama, podem ter graves consequências para o paciente. Para evitar tais situações, foi desenvolvida uma solução composta por várias camaras para monitorizar as atividades do paciente. A solução devolve uma série de alertas ao pessoal médico, sempre que o paciente está em apuros [11].
Figura 7 – Esquema do Sistema de Monitorização de Pacientes [11].
2.1.8. Colchão inteligente para doentes acamados
Um dos maiores riscos para a saúde de pessoas acamadas é o surgimento de úlceras de pressão provocadas pelo peso em determinadas partes do corpo quando não mudam de posição.
A Universidade da Beira Interior desenvolveu um colchão inteligente para pacientes acamados.
Este protótipo de um colchão inteligente, permite avisar de forma automática um enfermeiro quando está na hora de mudar a posição do paciente acamado, Figura 8.
10
Figura 8 – Interior do colchão inteligente [12]
Como as úlceras podem infetar e são com alguma frequência a causa de morte precoce de pacientes acamados, a solução proposta foi preparada para enviar avisos através de um emissor sem fios para um computador, que pode fazer piscar um ecrã, lançar sinais sonoros ou fazer tocar um telemóvel. O colchão distingue-se dos demais devido a um tecido electro têxtil feito de lã, entrançada com fios de aço e sensores que detetam movimento [13].
2.1.9. Desenvolvimento de um sistema mecatrónico para apoio à qualidade de vida de pacientes acamados
Este é mais um protótipo desenvolvido com o objetivo de apoiar pacientes acamados com cuidados médicos contínuos. O sistema permite uma maior autonomia, segurança, conforto e higiene de pacientes acamados, no âmbito do cuidado domiciliar. Utiliza seis sensores biomédicos e quatro sensores ambientais para recolha de dados biomédicos e dados do estado do meio envolvente em que se encontra o paciente.
A solução permite acesso remoto aos dados do paciente, Figura 9, possibilitando um acompanhamento do estado de saúde dos pacientes. É um sistema que pretende dar resposta às necessidades de pacientes acamados, nomeadamente, melhorar a sua qualidade de vida, segurança e conforto, possibilitando a monitorização do estado do paciente em tempo real [14].
11
Figura 9 - Colocação do sensor de posição no paciente [14]
2.1.10. Monitorização de pacientes em camas de hospital com sensores de profundidade não obstrutivos
Vários estudos demonstram que qualquer solução isolada, limitada a uma abstração da realidade, não é suficiente para evitar as quedas de pacientes acamados. As causas para as quedas são tão variadas, que existe a necessidade de uma solução mais abrangente para as evitar.
Os progressos recentes dos sensores de profundidade fazem destes, uma tecnologia eficiente e não obstrutiva para monitorizar a atividade de pacientes acamados. Isto é particularmente interessante para a monitorização remota dos diversos riscos que os pacientes internados em camas hospitalares correm diariamente.
Os hospitais têm diversos quartos com pacientes acamados e, muitas vezes não dispõem de pessoal suficiente para controlar todas as divisões hospitalares. Assim, é um imperativo a utilização de sistemas de monitorização para detetar a atividade dos pacientes que não sejam intrusivos.
Esta solução para o reconhecimento da atividade do doente em quartos de hospitais, Figura 10, utiliza os dados de profundidade obtidos a partir de um sensor 3D Kinect e um algoritmo de deteção de quedas para gerar alertas de quedas. É igualmente implementado um algoritmo para reduzir falsos alertas, como, por exemplo, a queda de almofadas. O algoritmo está otimizado para verificar a presença ou não do paciente na cama como uma forma de evitar falsos alarmes [15].
12
Figura 10 – Imagem de profundidade. (a) Deteção de paciente deitado na cama (circulo amarelo), (b) Detetado paciente (circulo amarelo) e funcionário hospitalar (circulo verde) [15].
2.2. Benefícios da solução apresentada neste projeto
As pessoas acamadas estão numa situação muito frágil. Sentem-se desconfortáveis com o seu estado e muitas vezes vergonha. Faz todo o sentido minimizar o desconforto que estas pessoas sentem, oferecendo-lhes ferramentas que lhes devolva alguma autonomia.
Se considerarmos que as pessoas mais idosas são aquelas que passam mais tempo acamadas e em situação de dependência e, somando a esta realidade, o facto de que vivemos num mundo com populações cada vez mais envelhecidas e com uma percentagem cada vez maior de pessoas a atingir idades muito avançadas, a solução proposta nesta dissertação apresenta-se como uma mais-valia para os pacientes acamados.
É uma solução que apresenta diversos benefícios relacionados essencialmente com melhoria da qualidade de vida dos pacientes acamados, mas também poderá ser uma mais-valia para evitar fatalidades que possam ocorrer com estes pacientes. Se assim se considerar pertinente, o sistema poderá ser configurado para que o paciente ative alertas com os gestos da mão.
É uma solução (Figura 11) baseada em processamento de imagem e visão por computador e consiste numa interface natural sem toque não intrusiva para reconhecimento de gestos de uma mão humana. Os gestos identificados pela aplicação acionam um conjunto de ações que façam sentido para uma pessoa acamada, como, por exemplo, acionar a emergência, ligar ou desligar a TV ou controlar a inclinação da cama, entre outros passíveis de ser programados.
13
Figura 11 – Resumo da arquitetura do sistema
A Reter deste Capítulo
Neste capítulo apresentou-se o estado da arte das soluções existentes de apoio a pacientes acamados. Fez-se também uma descrição dos benefícios da solução apresentada, para melhorar a qualidade de vida dos pacientes acamados.
3. Conceitos Teóricos
Nesta secção apresentam-se os conceitos teóricos associados às áreas de estudo para a realização deste projeto. Serão analisadas as técnicas de captura de imagens 3D, seguindo-se a análise dos sensores 3D, com destaque para o sensor 3D Kinect. Faz-se o levantamento dos algoritmos e técnicas de deteção de movimento. Apresenta-se a evolução das diversas interfaces de comunicação com a máquina.
3.1. Técnicas de captura de imagens 3D
A captura de imagens 3D, além de garantir a visualização em altura e largura (2D), permite obter a informação de profundidade, garantindo desta forma, uma simulação mais próxima da realidade [16]. A tecnologia 3D procura recriar a forma como o ser humano vê. O olho direito vê uma imagem ligeiramente diferente da imagem visualizada pelo olho esquerdo. A este deslocamento entre o olho esquerdo e direito dá-se o nome de paralaxe [17]. É devido à interpretação do cérebro das duas imagens bidimensionais de cada olho, que é possível ter a visão tridimensional do mundo.
Existe uma variedade de técnicas para obtenção de informação tridimensional, assim como, uma variedade de dispositivos dotados de capacidade de aquisição dessa mesma informação.
Os dispositivos de aquisição de imagens 3D podem fornecer dados explícitos de alcance utilizando iluminação ativa, outros dispositivos medem, de forma passiva, reflexões da cena ambiente e derivam a distância. Se, por um lado, são necessários poucos cálculos para se estimar a distância usando sensores ativos, por outro lado, os sensores passivos requerem complexos algoritmos para o cálculo de distância [18].
As técnicas podem ser divididas em duas categorias:
Passivas: absorvem ou usam a radiação ambiente e derivam a distância [18]. A sua aplicação é vasta, mas a extração de informação 3D é geralmente mais difícil [19].
Ativas: geralmente controlam a sua própria iluminação. Irradiam energia sobre as superfícies a medir e calculam a distância pela energia refletida, obtendo assim a informação tridimensional. Tal medida pode ser feita por tempo de voo do iluminador ou por triangulação de um padrão projetado. Vários fenómenos físicos podem ser utilizados como fonte radiante [18].
As várias técnicas 3D apresentam vantagens e inconvenientes, devendo ser escolhidas as mais adequadas para o fim a que se destinam. Em seguida são apresentadas algumas das técnicas de 3D mais relevantes.
3.1.1. Estereoscopia
A visão binocular ou estereoscopia é o nome atribuído ao conjunto de técnicas desenvolvidas para simular o mecanismo biológico humano de visão, capazes de criar a ilusão de uma imagem tridimensional [20]. Em fotografias ou filmes, a ilusão de profundidade é causada pela apresentação de imagens diferentes para cada olho [21]. Os olhos humanos estão afastados o suficiente para permitir a visualização de cada objeto com um ângulo de visão ligeiramente diferente para cada olho. Se duas imagens criadas artificialmente têm a mesma diferença
16
angular, chamada de desvio, e, cada olho vê apenas a imagem correspondente, é criado um efeito espacial [21] [22].
Normalmente uma câmara estéreo é utilizada para gravar as duas imagens. Esta câmara tem duas lentes separadas por aproximadamente 60-70 milímetros. Se a cena a gravar é perfeitamente imóvel, então uma única câmara pode ser usada para tirar as duas fotografias, contudo, o resultado é menos satisfatório [21].
São vários os processos que permitem obter imagens estereoscópicas. O método anaglífico é o mais simples. O processo consiste em colorir cada uma das imagens com uma cor básica, sobrepô-las e visualizá-las empregando óculos constituídos por filtros das mesmas cores (a utilização de artefactos possibilita a cada olho visualizar apenas a sua respetiva imagem primária, para imitar a observação direta do objeto com os dois olhos). Assim, cada olho é capaz de visualizar apenas a imagem tingida com a cor do respetivo filtro. Geralmente, os filtros usados são os de cor azul e vermelho. Em qualquer dos casos, a observação de imagens estereoscópicas deve ser feita em ambientes bem iluminados.
Olhando para o mesmo objeto mas de diferentes pontos de vista, separados por um vetor de base b, como representado na Figura 12, resulta em diferentes ângulos de visão. De uma forma ou de outra, esta diferença nos ângulos de visão resulta numa mudança no plano de imagem, chamado de disparidade, a partir da qual a profundidade ao objeto pode ser conhecida [23].
Figura 12 - Diagrama de visão estereoscópica [23]
A disparidade pode ser calculada, fazendo a correlação da área local entre regiões nas imagens da esquerda e direita ou combinação de parâmetros distintos nas imagens. O método de correlação de área produz um denso mapa de disparidade, mas é menos preciso que a combinação de parâmetros. Por outro lado, a combinação de parâmetros nas imagens da esquerda e direita resulta num mapa de profundidade esparso, que deve ser interpolado para se obter a informação completa. Os problemas com o sensor passivo de distância estéreo são:
Estabelecer a correspondência entre as características das imagens da esquerda e direita é um processo complexo devido às características de oclusão quando vistos de diferentes posições;
A profundidade só pode ser computada em pontos discretos onde a correspondência tenha sido estabelecida, e, para produzir um mapa de profundidade denso, os valores de profundidade (ou disparidade) encontrados devem ser interpolados. Dessa forma, a
17
precisão da distância depende tanto da correspondência de características quanto da interpolação [18].
3.1.2. Triangulação Laser
Os sistemas baseados em triangulação têm alcance e variação de profundidade muito limitados, mas possuem grande precisão [24]. O método de triangulação laser consiste na projeção de uma linha ou ponto laser sobre o objeto ou cenário. A luz é refletida segundo uma determinada direção e captada por uma câmara ou detetor ótico e a distância até o objeto é calculada trigonometricamente, dado um conhecimento à priori das posições do laser e da câmara. Quando o objeto se move o ângulo de reflexão é alterado, e de acordo com essa alteração também a posição do ponto refletido na imagem da câmara é alterada. O ângulo entre o sensor e a câmara é ajustado de forma apropriada de modo a que o ponto iluminado pelo laser permita obter valores precisos de medida da distância entre o sensor e o objeto a ser medido [19] [26]. Um exemplo de um sistema de triangulação é apresentado na Figura 13.
Figura 13 - Geometria do sistema de triangulação laser [24]
O centro das lentes está localizado na origem, com distância focal ƒ até o plano da imagem e a distância entre o projetor e a câmara é a linha de base b. A projeção do laser forma o ângulo θ em relação à linha base e o ponto 3D (x,y,z) no espaço real é projetado no pixel da imagem (x', y'). O valor de θ é conhecido pelo sistema de varredura e a distância focal ƒ é determinada pela calibração da câmara. A linha de base b é calculada posicionando-se o laser de maneira que a sua projeção incida no centro da imagem, apontando para um objeto a uma distância conhecida z [19] [25].
3.1.3. Luz estruturada (Estereoscopia ativa)
A luz estruturada significa luz com uma estrutura bem definida, permitindo, por exemplo, o cálculo da profundidade baseado na forma como a luz é refletida. As técnicas de luz estruturada baseiam-se na projeção controlada de luz (um feixe, um plano ou outro padrão de luz) sobre a cena e na captação da luz refletida pela cena por um sensor (câmara ou sensor linear), afastado do projetor [26].
A luz solar condiciona a utilização desta técnica devido à sensibilidade e à iluminação exterior, sendo apropriada para locais interiores em que a iluminação pode ser controlada. As técnicas
18
de luz estruturada são muito usadas para criar modelos 3D precisos e detalhados. Estas técnicas são preferíveis relativamente às técnicas passivas, dado que a luz projetada dá origem a pontos luminosos que podem ser detetados na imagem com maior facilidade [28] [29]. No entanto, a dificuldade da obtenção desses pontos característicos varia consoante o tipo de padrão projetado [26].
Os sistemas de luz estruturada estão equipados com uma câmara e um projetor de luz, e são referidos na literatura como sistemas de estereoscopia ativa. O seu princípio de medição é semelhante ao utilizado em sistemas de visão estereoscópica, no entanto, em vez de utilizar duas câmaras (estéreo passivo), uma das câmaras é substituída por um projetor de luz ativa [28].
O princípio da luz estruturada é utilizado pelo sensor 3D Kinect para obter a imagem em profundidade. O emissor preenche o ambiente com radiação infravermelha e o sensor capta o sinal refletido pelos objetos da cena possibilitando o cálculo de distância de cada ponto e gerando assim um mapa de profundidade. Nesta abordagem um padrão conhecido é projetado no ambiente. Depois, uma imagem é capturada com este padrão projetado sobre a cena, permitindo assim estimar a profundidade dos elementos deste ambiente, Figura 14 [29], [30].
Figura 14 - Projeção da luz estruturada num objeto [29]
As técnicas de luz estruturada podem ser classificadas, de acordo com a estratégia de codificação do padrão projetado, em três categorias: multiplexação temporal, codificação direta e vizinhança espacial. Os métodos baseados na estratégia de multiplexação temporal são fáceis de implementar e permitem obter uma boa precisão, assim como uma boa resolução. A principal desvantagem destes métodos consiste em lidar com cenas dinâmicas, pois, neste caso, vários padrões devem ser projetados sucessivamente. Os métodos que adotam a codificação direta proporcionam uma boa resolução espacial mas a sua aplicabilidade é limitada, devido à sensibilidade ao ruído e às variações de luz. Os métodos baseados na vizinhança espacial adotam a projeção de um padrão único que inclui todo o código. O código de cada componente do padrão depende do seu valor e do valor dos seus vizinhos. Geralmente, lida bem com cenas dinâmicas, mas tem uma resolução mais baixa do que as estratégias anteriores e alguns erros podem ocorrer durante a fase de descodificação. A fim de minimizar esses erros, os algoritmos de codificação e descodificação devem ser mais robustos [31].
19
3.1.4. Tempo de propagação do sinal ( Time of Flight)
Os sistemas Time of Flight (TOF) enviam um impulso de luz e estimam a distância baseada no tempo que a reflexão demora, Figura 15. Esta abordagem requer alta precisão de medições temporais [16]. As câmaras TOF alcançaram a maturidade tecnológica e estão a ser largamente adotadas para aplicações de robótica, por exemplo [32]. São sistemas considerados muito eficientes, contudo, a sua precisão ainda não é excelente, mas, em contrapartida, possuem um elevado alcance e variação de profundidade [24].
Figura 15 - O princípio da tecnologia Time Of Flight [33]
A ecolocalização ou biosonar consiste em detetar a posição e/ou distância de objetos (obstáculos no meio ambiente) ou animais através de emissão de ondas ultrassónicas, no ar ou na água, e análise ou cronometragem do tempo gasto para essas ondas serem emitidas, refletirem no alvo e voltarem à fonte sobre a forma de eco (ondas refletidas). Para diversos mamíferos, como morcegos, golfinhos e baleias, essa capacidade é de importância crucial em condições onde a visão é insuficiente, de noite, no caso dos morcegos, ou em águas escuras ou turvas, para os golfinhos [35] [36]. Estes animais inspiraram os sistemas de radar e sonar.
Ao disparar uma fotografia com recurso ao flash, a luz sai da câmara, viajando à velocidade da luz, sendo posteriormente refletida pelos objetos com que colide. A matriz de sensores existentes na câmara digital deteta a luz refletida. Assim, cada pixel na imagem obtida, é proveniente de um único sensor dessa matriz e indica a intensidade luminosa refletida.
Considerando que cada um dos sensores possui um “cronómetro”, que mede o tempo que levou desde o disparo até a luz refletida colidir e, utilizando o princípio do funcionamento do radar, consegue-se descobrir a distância associada a cada pixel na imagem [35].
Após o aparecimento do laser começou-se a tentar aliar este ao conhecimento da tecnologia de radar de forma a possibilitar medições com laser. Esta tecnologia foi apelidada de LIDAR (Light Detection and Ranging) à semelhança de RADAR (Radio Detection And Ranging), pois ambas se apoiam na mesma forma de medir a distância, usando apenas ondas diferentes para o efeito, ou seja, o LIDAR, por laser e o RADAR por ondas rádio. Com a tecnologia LIDAR e com a evolução dos processadores foi possível, a partir do início do século XXI, o aparecimento das câmaras TOF [36].
20
3.2. Sensor 3D Kinect
O sensor 3D Kinect é um dispositivo desenvolvido em colaboração pelas empresas Microsoft e PrimeSense [30]. Desde 2010, ano em que o sensor 3D Kinect foi lançado no mercado, estudantes e investigadores procuram compreender o funcionamento interno deste sensor.
Inicialmente, a Microsoft adotou uma postura de ocultação dos detalhes internos do produto, a ponto de ameaçar processar quem o tentasse decifrar. Com o passar do tempo, a postura da Microsoft alterou-se radicalmente. Ao perceber que o sensor 3D Kinect estava a ser utilizado em projetos de áreas de estudo como a medicina ou a automação, passou a incentivar estes projetos e em 2011, elementos da equipa de desenvolvimento do sensor 3D Kinect, publicaram um artigo, onde são descritos detalhes dos algoritmos utilizados. Ainda em 2011 a Microsoft lançou um SDK (Software Development kit) para a programação do sensor 3D Kinect no sistema operativo Windows [37] [39] [40].
3.2.1. Estrutura interna do sensor 3D Kinect
O sensor 3D Kinect, Figura 16, possui uma câmara RGB, utilizada para obter imagens a cores, com uma velocidade máxima de 30 frames por segundo. A câmara RGB está ladeada por um sensor de profundidade e um projetor laser de infravermelhos. O sensor de profundidade calcula a distância de um ponto em particular, baseado no reflexo da luz infravermelha produzida pelo projetor [37]. O sensor 3D Kinect vem equipado com microfones, que além de captarem as vozes mais próximas, conseguem distinguir os ruídos externos. Os microfones conseguem ainda distinguir pessoas diferentes numa sala. O sensor 3D Kinect tem processador, software próprio e deteta quarenta e oito pontos de articulação do corpo humano.
Figura 16 - Microsoft 3D Kinect [37]
3.2.2. Funcionamento do sensor 3D Kinect
Para medição da profundidade o sensor 3D Kinect utiliza o método de luz estruturada, chamado de light coding e o reconhecimento do esqueleto. O processo de captura consiste na
21
obtenção de uma imagem a cores (RGB) onde é efectuada uma medição de profundidade (D), com recurso à técnica de luz estruturada. Esta informação é representada por uma estrutura chamada de imagem RGBD [30].
A imagem de profundidade resulta de um padrão conhecido de pontos de luz infravermelha projetado na cena. A câmara de infravermelhos captura os pontos de luz infravermelha, invisíveis a olho nu. Como o padrão é conhecido, um algoritmo reconhece a distorção do mesmo na imagem e confere um valor de profundidade para cada ponto da imagem [37]. Para cada ponto da imagem, é atribuído um valor de distância da câmara, ou seja, profundidade. Na posse dos dados de profundidade de uma cena, é possível implementar algoritmos que reconheçam objetos e utilizadores, num espaço 3D.
3.2.3. Motion tracking do corpo humano
O sensor 3D Kinect possui processamento próprio e uma tecnologia inovadora de reconhecimento e seguimento do movimento humano (motion tracking) em tempo real, adaptado a diferentes pessoas, de diferentes tamanhos e formas, sem necessidade de calibração [40].
Para o reconhecimento de esqueletos utiliza um método para prever com rapidez e precisão as posições, no espaço tridimensional, das articulações do corpo humano, a partir de uma única imagem de profundidade, sem recurso a qualquer informação temporal. Foi treinado um classificador de árvores de decisão (decision tree), que consiste numa coleção de decisões em árvore. Cada árvore foi treinada para um conjunto de características com imagens em profundidade com o nome das partes do corpo humano. Estas árvores de decisão foram sendo modificadas até conseguirem a classificação correta para uma parte particular do corpo humano. Por exemplo, o treino de três árvores, utilizando um milhão de testes de imagens, necessitou de cerca de um dia, usando um cluster com mil processadores [40].
Utiliza uma abordagem de reconhecimento de objetos, que trata a segmentação das partes do corpo humano como uma tarefa de classificação baseada no pixel. A avaliação em separado de cada pixel evita a necessidade de uma pesquisa combinatória sobre todas as articulações do corpo [40]. Através deste método, Figura 17, o sistema consegue identificar as diferentes articulações do corpo do indivíduo, criando um esqueleto com as propostas das suas posições no espaço tridimensional [42] [43].
Figura 17 - A partir de uma única imagem de profundidade é inferida uma distribuição das partes corpo humano [40]
22
3.2.4. Ferramentas para desenvolvimento
As principais funcionalidades utilizadas em aplicações e bibliotecas de desenvolvimento para o sensor 3D Kinect são disponibilizadas através dos projetos OpenNI, OpenKinect e Microsoft Kinect for Windows. Algumas bibliotecas que utilizam estes projetos nas suas implementações são as que podem ser observadas na Figura 18.
Figura 18 - Bibliotecas que usam o OpenNI [30]
3.2.4.1. OpenKinect
Em 2010, Hector Martin colocou o seu projeto OpenKinect no Github. Este é um projeto open source desenvolvido à volta do driver libfreenet, que pode ser usado em Linux, Windows e MAC. O libfreenet contém a biblioteca nuclear de acesso ao sensor 3D Kinect, permitindo o controlo do motor, das câmaras, do áudio, dos LEDs e acelerómetros da plataforma [30].
Também contém uma biblioteca que analisa as saídas do sistema, de modo a oferecer uma camada de abstração para, por exemplo, o seguimento das mãos ou do esqueleto. Permite o desenvolvimento em Java, C++, C#, Actionscript, Python, entre outras [43].
3.2.4.2. Microsoft Kinect for Windows
Em 2011, aquando do lançamento da segunda versão do sensor 3D Kinect, a Microsoft lançou um SDK não comercial para Windows. Permite aceder à informação dos sensores e o facto de ser desenvolvido pela Microsoft assegura a qualidade da API, bem como uma boa documentação com informação relativa às bibliotecas existentes. Consegue detetar até 20 articulações e consegue seguir até 6 utilizadores em simultâneo, Figura 19 [31][44].
Este SDK consegue realizar uma deteção preditiva de articulações, mantendo assim um nível de precisão relativamente elevado, quando comparado com outros. Além disso, pode utilizar a resolução máxima da câmara RGB (1024x768), realizar gravações áudio e recorrer a comandos por voz para controlo do sistema [43]. Permite ainda o desenvolvimento em C++, C# ou Visual Basic [31] [44].