Reconhecimento de Gestos com Segmentação de Imagens

Propaganda
Reconhecimento de Gestos com Segmentação de Imagens Dinâmicas
Aplicadas a Libras
Adilson Roberto Pavan
Fábio Alexandre Caravieri Modesto
Anhanguera Educacional
[email protected]
[email protected]
Resumo
O objetivo desse projeto é criar uma metodologia
capaz de realizar o reconhecimento de gestos, onde a
ideia é extrair características da mão segmentada, a
partir de imagens dinâmicas capturadas de uma
webcam e identificar padrões de sinais utilizados pelos
usuários de Libras. O aplicativo desenvolvido com a
metodologia descrita anteriormente será capaz de
capturar as imagens e, com a utilização de filtros
específicos de processamento de imagens, identificar
as características de cada gesto realizado. Os dados
identificados serão comparados a padrões préestabelecidos no aplicativo com o objetivo de
identificar os sinais e reproduzir em forma de texto os
sinais identificados. Com a criação desse mecanismo
será possível desenvolver ferramentas para diversas
áreas como educação, entretenimento e facilitar a
comunicação dos usuários de Libras. Alem disso, pode
ser utilizada como uma ferramenta de auxilio na
alfabetização da própria Língua Brasileira de Sinais.
1. Objetivo
O desenvolvimento desse projeto tem como
objetivo criar uma técnica precisa para o rastreamento
dos sinais de Libras, combinando a utilização de
bibliotecas de visão computacional gratuitas com
dispositivos de captura de imagens de fácil acesso
como uma webcam, gerando assim um baixo custo
computacional e tornando a técnica aplicável em
diversas áreas.
A expectativa é que o sistema seja capaz de rastrear
todas as letras (sinais) do alfabeto, mas como o
processo de criação dos classificadores exige muitas
amostras e tempo de processamento a pesquisa se
limitara a principio em letras suficientes para formação
de palavras simples, mas até o momento foi possível
identificar bons resultados, pois o classificador
responsável por rastrear o sinal referente à letra “C” já
está totalmente funcional e preciso.
2. Introdução
Pesquisas relacionadas à visão computacional e
reconhecimentos de gestos vêm ganhando grande
espaço na comunidade cientifica. Com a evolução
tecnológica dos computadores e dispositivos como
câmeras, a capacidade de processamento e captura de
imagens
com
alta
qualidade
facilita
no
desenvolvimento de diversos tipos de pesquisas, além
disso, os preços acessíveis desses dispositivos
possibilitam estudos e projetos em diversas áreas como
robótica, educação, entretenimento, medicina, indústria
e várias outras.
Além da evolução dos dispositivos e da capacidade
de processamento dos computadores, muitas
bibliotecas
de
visão
computacional
foram
desenvolvidas com o objetivo de facilitar e otimizar a
captura, análise e manipulação das imagens, sendo que
uma das mais conhecidas e escolhida para o
desenvolvimento deste projeto é a OpenCV [4],
desenvolvida pela Intel, é uma biblioteca gratuita que
oferece mais de 500 (quinhentas) funções de
manipulação,
segmentação,
rastreamento
e
reconhecimento de padrões [7].
Atualmente existem vários trabalhos relacionados a
reconhecimento de gestos e, com a utilização da
biblioteca
OpenCV,
tornou-se
possível
o
desenvolvimento de técnicas de rastreamento em tempo
real, dentre as quais identificou-se que a abordagem
mais comum é a segmentação da Área de Interesse
(Region Of Interest - ROI) através do algoritmo
CamShift (Continuously Adaptive Mean-SHIFT), que
captura a imagem original e realiza a distribuição de
cores em um modelo de histograma, criando um padrão
de cor a ser rastreado [3]. Após a segmentação pelo
histograma – que para o caso do rastreamento da mão
como área de interesse o mais comum a ser utilizado é
a cor da pele – existem vários algoritmos disponíveis
na biblioteca de detecção de bordas, tendo como um
dos mais utilizados o algoritmo de Sobel [3]. Com a
borda da imagem extraída pelo algoritmo de Sobel a
última etapa é realizar a comparação com um template
pré-definido através de uma técnica conhecida como
Shape Matching [3] que é responsável por encontrar
semelhanças entre as imagens capturadas e o template,
respeitando certa taxa de erro.
Toda a técnica descrita no parágrafo anterior faz
parte de uma pesquisa realizada por [1] que
demonstrou bons resultados na segmentação e no
rastreamento dos gestos, porém existem técnicas
similares que também apresentam resultados
satisfatórios, mas que para a comparação das
características extraídas utilizam métodos de
classificação dos dados através de parâmetros definidos
em um vetor, onde o autor [8] armazenou os mesmos
em uma base de dados e posteriormente os utilizou
para análise dos gestos.
Outra proposta interessante é a utilização de
classificadores [3], proposto inicialmente por [9],
através da qual o sistema é capaz de identificar com
velocidade os objetos, pois não depende de imagens
em seqüência ou de um padrão de cores como em
outras técnicas. O sistema utiliza a informação presente
nas imagens capturadas em tons de cinza para realizar
o rastreamento. Esta técnica exige o treinamento do
classificador com muitas imagens para que se atinja
uma precisão satisfatória, ela cria uma cascata de
características em que a análise é realizada pelas
diferenças de intensidade entre regiões distintas. O
processo de treinamento, como mencionado acima,
exige muitas imagens e capacidade de processamento
para desenvolver um classificador preciso e robusto.
A proposta inicial para esse projeto era utilizar
técnicas como as mencionadas na pesquisa de [1].
Entretanto, durante o desenvolvimento foi possível
identificar uma abordagem mais simplificada
garantindo-se atingir resultados precisos e concretos, a
partir da utilização de classificadores e detectores de
bordas para realizar o rastreamento. O sistema utilizará
um classificador criado por [5] que realiza o
reconhecimento da mão fechada, em que o usuário
poderá definir a área de interesse para executar os
sinais de Libras. Após a definição, será aplicado o
algoritmo de Sobel para extrair as bordas das imagens
por meio da utilização dos classificadores Haar para
identificação dos sinais. O processo de segmentação
utilizará apenas o algoritmo de Sobel, pois a utilização
de classificadores torna desnecessário extrair o fundo
com o algoritmo CamShift, o que reduz
consideravelmente os ruídos, pois realizando-se a
análise diretamente na imagem segmentada a
quantidade de decisões do classificador será menor e
dessa forma o processamento será mais rápido e
preciso. Além disso, a quantidade de imagens
necessárias para realizar o treinamento de cada sinal
será bem menor.
3. Metodologia
O desenvolvimento do algoritmo de reconhecimento
será baseado em contornos e em classificadores,
possibilitando um melhor desempenho para o
rastreamento em tempo real. Sendo assim, será
utilizado a biblioteca OpenCV (Open Computer
Vision), criada pela Intel e disponível para utilização
sem limitações.
A utilização da biblioteca facilitara muito o
desenvolvimento do aplicativo final, pois reúne todos
os recursos necessários para cada etapa do
reconhecimento como, por exemplo, algoritmos para
detecção de bordas, captura de imagens da webcam e
comparação com as características definidas nos
classificadores. As etapas de reconhecimento consistem
basicamente em capturar as imagens dinâmicas pela
webcam, utilizar o classificador criado por [5],
responsável por realizar o reconhecimento da mão
fechada para definir a área de interesse, aplicar o
algoritmo de Sobel, responsável por extrair o contorno
da imagem e realizar a análise com os classificadores
treinados para identificar os sinais de Libras.
A etapa mais importante para atingir a qualidade
desejada é a criação dos classificadores mencionados
anteriormente (ultima etapa), pois os mesmos serão
responsáveis por analisar as imagens após a aplicação
do filtro de Sobel, mas para atingir a precisão desejada
será necessário realizar o treinamento de cada sinal
com um número considerável de imagens. Esse
processo, entretanto, será muito mais simplificado em
comparação aos classificadores disponíveis pela
própria biblioteca, pois as imagens utilizadas no
treinamento já estão segmentadas pelo algoritmo de
Sobel, o que elimina um considerável número de
características.
4. Desenvolvimento
O sistema será totalmente baseado na utilização de
classificadores e na detecção de contornos. Desta
forma, antes de aprofundar em cada etapa do processo,
é necessário entender a metodologia básica envolvendo
a técnica da cascata de classificadores.
A pesquisa foi desenvolvida em etapas com o
objetivo de facilitar e garantir a qualidade desejada,
pois como o processo será realizado de uma forma
mais simplificada em relação a outras técnicas
mencionadas anteriormente, a etapa mais importante e
que definirá a precisão do mecanismo é a criação dos
classificadores que serão utilizados para realizar o
rastreamento dos sinais. Durante essa seção serão
apresentadas as informações básicas de cada etapa e o
andamento das pesquisas que ainda não foram
finalizadas, pois como será demonstrado a seguir o
sistema já é capaz de rastrear um sinal com precisão,
mas ainda é necessário repetir o processo de
treinamento dos classificadores para os demais sinais
de Libras.
4.1. Cascata de Classificadores
A cascata de classificadores [9] é uma
funcionalidade da biblioteca OpenCV que é
responsável por identificar vários tipos de objetos em
uma imagem, mas que ficou conhecida principalmente
pelo reconhecimento da face como mostra o programa
de exemplo FaceDetect disponível na biblioteca e a
Figura 1.
Figura 1 – Imagem extraída do livro “Learning
OpenCV” [3] onde é possível observar o rastreamento
da face utilizando a cascata de classificadores.
A técnica utilizada no classificador consiste em uma
análise de imagens em tons de cinza, em que as
diferenças de intensidade de regiões distintas são
comparadas a características armazenadas em uma
arvore de decisões, que é desenvolvida através de um
algoritmo de treinamento e um conjunto de imagens
das quais são extraídas características especificas do
objeto a ser rastreado.
Para realizar o treinamento do classificador é
necessário reunir um conjunto de imagens contendo o
objeto de interesse, em diversas condições de
iluminação e em posições diferentes. Este conjunto é
chamado de amostras positivas. Após a criação das
amostras positivas, é necessário reunir outro conjunto
de imagens aleatórias onde o objeto de interesse não
esteja incluído. Este outro conjunto é chamado de
amostras negativas. Com a criação das amostras
positivas e negativas é necessário apenas executar o
algoritmo de treinamento que criara uma cascata de
classificadores, onde todas as características do objeto
serão armazenadas para posteriormente serem
utilizadas na análise da imagem.
O termo “cascata” é utilizado porque o algoritmo de
treinamento cria uma série de classificadores que são
analisados em seqüência, até que um padrão seja
identificado. A Figura 2 mostra uma parte da cascata
de classificadores que está disponível na biblioteca e
que é utilizada para realizar o rastreamento da face.
Figura 2 – Exemplo de uma cascata de classificadores
armazenada em um arquivo XML que é utilizada na
detecção de objetos pelas funções “cvLoad” e
“cvDetectHaarCascade”.
4.2. Captura da Imagem
A proposta do projeto é criar uma interação
humano-computador (IHC) utilizando recursos de
visão computacional, excluindo dispositivos como o
teclado ou o mouse, utilizando especificamente
imagens capturadas de uma webcam. Sendo assim, uma
das etapas mais importantes é a captura da imagem,
pois é a forma de entrada dos dados que serão tratados
e analisados para realizar o reconhecimento dos sinais.
A utilização da biblioteca OpenCV facilita esta etapa,
pois possui recursos de captura de imagens de uma
webcam ou de arquivos de vídeos através da utilização
de
comandos
como
cvCaptureFromCAM
e
cvCaptureFromAVI.
4.3. Seleção da Região de Interesse - ROI
As pesquisas relacionadas à visão computacional e a
reconhecimento de gestos utilizam como uma das
principais técnicas a aplicação de filtros e análise das
imagens a partir de uma área segmentada, ou seja,
utiliza determinados critérios para identificar uma
região de interesse na imagem original, o que reduz
consideravelmente a quantidade de processamento para
identificar o objeto desejado.
Considerando várias técnicas abordadas
anteriormente para realizar a segmentação da região de
interesse, esse projeto tem como característica a
utilização de um classificador [5], que realiza o
reconhecimento da mão fechada, selecionando assim a
ROI. Porém, para que uma nova ROI seja determinada,
é necessário limpar a mesma através da ação de um
botão e iniciar novamente o reconhecimento utilizando
o classificador, como mostra a Figura 3.
Figura 3 – Região de interesse selecionada pelo
classificador da mão fechada e ao lado o botão
“Limpar Segmentação” que é responsável por limpar o
ROI.
4.4. Detecção de Bordas
A principal característica da técnica envolvida na
detecção de bordas é a localização de diferenças de
intensidade luminosa entre regiões vizinhas. O
algoritmo escolhido para realizar essa etapa da
pesquisa é o operador de Sobel, que realiza uma análise
na imagem original a fim de localizar diferenças de
intensidades muito grandes entre regiões vizinhas e,
assim, retornar essas regiões destacadas em uma escala
de tons de cinza, o que caracteriza as bordas do objeto.
Com a aplicação desse tipo de filtro, obtêm-se
resultados muito bons, como mostra a Figura 4. Porém,
sem a utilização de algoritmos de segmentação por cor
de pele como o CamShift, o resultado contem muitos
ruídos, que poderiam prejudicar a detecção dos sinais.
Mas como a proposta dessa pesquisa é realizar o
rastreamento através de classificadores treinados a
partir de imagens, em que o algoritmo de Sobel já tenha
sido aplicado, pode-se afirmar que o reconhecimento é
mais rápido, mais preciso e mais robusto quando
comparado aos resultados obtidos a partir da aplicação
de outras técnicas.
Figura 4 – A esquerda uma imagem original extraída de
uma webcam e a direita a mesma imagem após
aplicação do algoritmo de Sobel.
4.5. Treinamento do Classificador
A última etapa e mais importante para que a
aplicação final seja precisa e robusta é iniciar o
treinamento dos classificadores que serão responsáveis
por realizar o reconhecimento dos sinais. Como já
descrito na seção “cascata de classificadores”, será
necessário reunir amostras positivas e negativas para
que o algoritmo de treinamento crie uma cascata de
características e a utilize para realizar o rastreamento
dos sinais. O levantamento bibliográfico teve grande
importância nessa etapa do projeto, pois existe pouca
documentação e exemplos sobre esse assunto,
principalmente
relacionado
ao
classificador
responsável por rastrear a face que está disponível na
biblioteca, pois não foi possível localizar nenhum
detalhe de como o mesmo foi treinado. Estima-se que
cerca de 5.000 amostras positivas e negativas tenham
sido utilizadas. Os classificadores que serão
desenvolvidos nesse projeto utilizarão um número
muito menor de amostras, pois como já mencionado
anteriormente, serão treinados a partir de imagens às
quais o algoritmo de detecção de bordas já tenha sido
aplicado, o que reduzira consideravelmente o número
de características para realizar o rastreamento.
A coleta das amostras será realizada através da
utilização de uma ferramenta chamada Positivies
Builder [2] que auxiliará na separação e seleção dos
objetos de interesse, pois para a criação do
classificador é necessário informar as coordenadas x e
y de inicio do objeto, além de informar o tamanho do
mesmo na imagem. O algoritmo de treinamento utiliza
um arquivo onde são relacionadas todas as imagens
com seus respectivos caminhos, as posições iniciais e o
tamanho dos mesmos, para que a coleta das
características seja iniciada, além de utilizar também
outro arquivo com o caminho das amostras negativas
para que um padrão seja criado entre as imagens que
contem o objeto de interesse e as aleatórias onde os
objetos não estejam incluídos. A Figura 5 mostra a
configuração armazenada em um dos arquivos
utilizados pelo algoritmo de treinamento. Entretanto,
como essa etapa exige muito tempo apenas um
classificador foi criado até o momento, mas através
dele já é possível demonstrar que a técnica é totalmente
viável e precisa. O objetivo nesta etapa do projeto é
criar um classificador para cada letra do alfabeto, mas
como o processo exige um número considerável de
amostras a prioridade será criar letras ou sinais
suficientes para a formação de palavras simples.
Figura 6 – Detecção do sinal referente à letra “C”
através do classificador criado com as amostras após a
aplicação do filtro de Sobel.
5. Representação 3D com OpenGL e
comparação com técnicas de marcadores
A representação do sinal rastreado foi feita
inicialmente em forma de texto, mas para demonstrar a
utilização de outras formas foi construída uma mão 3D
simples utilizando a biblioteca OpenGL. O sistema
captura o centro das coordenadas do sinal realizado e
passa as mesmas através de um arquivo XML, com o
objetivo de sincronizar essas coordenadas com o
aplicativo responsável por construir o objeto 3D. A
Figura 7 mostra essa comunicação entre as
coordenadas rastreadas e a construção do objeto 3D
após o clique no botão “Gerar 3D”.
Figura 5 – Exemplo de arquivo que será utilizado pelo
algoritmo de treinamento para coletar as características
das amostras positivas.
Após muitos testes com as amostras e configurações
dos parâmetros de treinamento, foi possível construir
com sucesso um classificador preciso e robusto para o
reconhecimento do sinal referente à letra “C”. A Figura
6 demonstra a detecção do sinal e sua representação em
forma de texto.
Figura 7 – Representação em 3D do sinal rastreado
A criação dessa técnica de rastreamento demonstra
que é possível utilizar os classificadores da mesma
forma que os marcadores utilizados em outras
bibliotecas como o ARToolkit.
6. Resultados
A pesquisa e desenvolvimento da aplicação final
demonstraram bons resultados, pois o sistema já é
capaz de reconhecer uma área de interesse, realizar a
detecção das bordas e rastrear o sinal de Libras
referente à letra “C”.
O objetivo final da pesquisa é desenvolver mais
classificadores para que palavras completas sejam
formadas, mas com a quantidade de amostras positivas
(992) e negativas (224) utilizadas para a criação do
classificador referente à letra “C”, pode-se perceber
que os demais sinais após serem treinados nos mesmos
parâmetros serão muito precisos e robustos como o
criado até o momento.
7. Considerações Finais
Esta pesquisa demonstrou uma técnica de
reconhecimento de gestos, em que o objetivo é rastrear
sinais de Libras a partir de imagens capturadas de uma
webcam. O aplicativo já é capaz de capturar as
imagens, realizar a segmentação através de detectores
de bordas e analisar as características com os
classificadores responsáveis pelo rastreamento dos
sinais de Libras.
A pesquisa demonstra uma melhoria significativa
em relação a outras técnicas abordadas neste trabalho,
sendo que a principal característica para obter
resultados concretos é a utilização de classificadores
treinados, a partir de imagens segmentadas que
proporcionam
velocidade
e
precisão
no
reconhecimento dos sinais.
8. Referências
[1] BARBOSA, Bernardo; SILVA, Júlio. Interação Humano
- Computador usando Visão Computacional. Revista Teccen:
Edição Especial, Rio de Janeiro, v. 2, n. 1, p.9-16, mar. 2009.
[2] BARNES, David. OpenCV HaarTraining - Object
Detection with a Cascade of Boosted Classifiers Based on
Haar-like
Features.
Disponível
em:
<:
http://www.quotientrobotics.com/2010/04/opencv-
haartraining-object-detection.html>. Acesso em: 15 maio
2010.
[3] BRADSKI, Gary; KAEHLER, Adrian. Learning
OpenCV: Computer Vision with the OpenCV Library. 1. ed.
United States Of America: O’Reilly Media, 2008. 576 p.
[4] INTEL. OpenCV FAQ: Open Source Computer Vision
Library. Disponível em: <http://software.intel.com/enus/articles/intel-integrated-performance-primitives-intel-ippopen-source-computer-vision-library-opencv-faq/>. Acesso
em: 10 mar. 2010.
[5] J. Wachs, H. Stern, Y. Edan, M. Gillam, C. Feied, M.
Smith, J. Handler. A Real-Time Hand Gesture Interface for
Medical Visualization Applications. Applications of Soft
Computing : Recent Trends. Springer Verlag, Germany,
Séries: Advances in Soft Computing ,Tiwari, A.; Knowles,
J.; Avineri, E.; Dahal, K.; Roy, R. (Eds.),2006. vol. 36, pp.
153-163.
[6] LIBRAS. Portal de Libras destinado à comunidade surda,
familiares, profissionais e pessoas interessadas em aprender.
Disponível em: <http://www.libras.org.br/>. Acesso em: fev.
2010.
[7] OPENCV. OpenCV Wiki: Tutoriais e exemplos de
sua
utilização.
Disponível
em:
<http://opencv.willowgarage.com/wiki/>. Acesso em:
17 fev. 2010.
[8] RIBEIRO, Hebert Luchetti. Reconhecimento de
gestos usando segmentação de imagens dinâmicas de
mãos baseadas no modelo de mistura de Gaussianas e
cor de pele. 2006. 144 f. Dissertação (Mestrado) Curso de Engenharia Elétrica, Departamento de Escola
de Engenharia de São Carlos, Universidade de São
Paulo, São Carlos, 2006.
[9] VIOLA, Paul; JONES, Michael. Robust Real-time
Object Detection. In: SECOND INTERNATIONAL
WORKSHOP
ON
STATISTICAL
AND
COMPUTATIONAL THEORIES OF, 2., 2001,
Vancouver. Anais... . Vancouver: Second International
Workshop On Statistical And Computational Theories
Of Vision, 2001. p. 1 - 25.
Download