APRESENTAÇÃO É com grande prazer que apresentamos o primeiro número de 2009, edição Especial, da Revista Eletrônica do Centro de Ciências Exatas, Tecnológicas e da Natureza, chamada TECCEN. A TECCEN é resultado de um esforço do CECETEN (Centro de Ciências Exatas, Tecnológicas e da Natureza) e dos seus cursos e conta com o trabalho voluntário de pesquisadores da USS e de outras instituições de ensino e pesquisa do Brasil, para a avaliação, edição e revisão dos artigos submetidos. A TECCEN é um espaço voltado para o fortalecimento de publicação de artigos, tutoriais e resultados de pesquisas de alta qualidade voltada para área de Ciências Exatas, Tecnológicas e da Natureza. Nesta edição Especial temos os melhores artigos publicados e escolhidos pela comissão avaliadora do II WorkShop de Informática Aplicada – II WIA – e o I Wokshop de Computação e Saúde da Região Serrana do Estado do Rio de Janeiro – COMSAU – realizado na UNIFESO – em Teresópolis – Rio de Janeiro. A comissão avaliadora levou em consideração os seguintes critérios para seleção dos trabalhos: relevância do tema, qualidade técnica e científica e organização e linguagem. O primeiro artigo é um trabalho de pesquisadores da UNIFESO e PUC-RIO intitulado “Ambiente visual para o desenvolvimento de jogos eletrônicos”. Em seguida temos um trabalho de pesquisadores da USP sobre processamento de imagens cujo título é “Rastreamento de jogadores de futebol em seqüência de imagens”. O terceiro artigo, pesquisadores da UNIFESO e PUC-RIO, trata do tema computador usando visão computacional. O quarto artigo descreve um sistema computacional para representação e reconhecimento de som aplicado à ausculta cardiovascular. Os autores também são da UNIFESO e PUC-RIO. Também de autores da UNIFESO e PUC-RIO o quinto artigo mostra os estudos de uma ferramenta computacional para identificação de faces em imagens bidimensionais. O sexto artigo, de Professores e Pesquisadores do Centro Universitário do Pará, Centro de Informática/UFPE, Laboratório de Geoprocessamento-IEC e Instituto Evandro Chagas/SVS/MS, mostra o desenvolvimento de um Banco de Dados Geográficos para a Análise Espacial da Lashimaniose Visceral em Cametá-PA. O sétimo artigo, de autores da Universidade Severino Sombra, mostra um tutorial para desenvolvimento de jogos 2D usando a linguagem Java. O oitavo artigo, de autores da Universidade Severino Sombra, mostra o desenvolvimento e utilização de Tecnologia da Informação aplicada a gerenciamento de acervo documental histórico. Boa leitura para todos e aproveito para comunicar que novas contribuições para o quarto número da TECCEN, cujo lançamento será para junho de 2009, serão bem-vindas. Editor da Revista TECCEN Carlos Vitor de Alencar Carvalho Revista Eletrônica – TECCEN Vassouras v. 2 n. 1 março 2009 Os artigos publicados na Revista TECCEN são de responsabilidade de seus autores. As informações neles contidas, bem como as opiniões emitidas, não representam pontos de vista da Universidade Severino Sombra. Revista Eletrônica TECCEN - Centro de Ciências Exatas, Tecnológicas e da Natureza Revista Semestral da Universidade Severino Sombra Edição Especial - 2009 Presidente da FUSVE e Reitor da USS Américo da Silva Carvalho Vice-Presidente executivo da FUSVE e Vice-Reitor da USS Antônio Orlando Izolani Pró-Reitora de Ensino de Legislação Profa. Therezinha Coelho de Souza Diretor do Centro de Ciência Exatas, Tecnológicas e da Natureza José Augusto Teixeira de Lima Junior Editor Responsável Carlos Vitor de Alencar Carvalho Conselho Consultivo Ana Maria Severiano de Paiva Matemática USS e FAETEC Anderson Alvarenga de M. Meneses Engenharia e Física USS e Faculdade Prof. Miguel Ângelo da Silva Santos Carlos Eduardo Cardoso Doutor USS Carlos Eduardo Costa Vieira Ciência da Computação UNIFESO e UNIFOA Carlos Vitor de Alencar Carvalho Sistemas de Informação USS e UNIFOA David Villas Boas Engenharia Ambiental USS e IST Elizabeth Oliveira Mendes Matemática USS Érica Nogueira Física Observatório Nacional Felipe da Costa Brasil Geografia USS, IST e UNESA Frank Silva Bezerra Biologia e Radiologia USS Geovani Nunes Dornelas Matemática USS e IST Hélio Paiva Amorim Engenharia Elétrica USS e CEPEL Ilydio Pereira de Sá Matemática USS e UERJ Isabelle de Araujo Telles Engenharia Tecgraf/PUC-Rio Janaina Veiga Carvalho Sistemas de Informação USS José Américo Rodrigues Araújo Filho Ciência da Computação/Matemática USS e UEZO José Leandro Casa Nova Engenharia Elétrica USS Julio Cesar da Silva Ciência da Computação UNIFESO e PUC-Rio Lúcia Aversa Vilela Matemática USS Luzia Teixeira de Azevedo S. Sêmedo Engenharia Ambiental USS e UFRJ Marco Antonio. S. Soares Química USS e UFRRJ Marco Antonio Pereira Araújo Sistemas de Informação USS Marise Maleck Biologia USS e FIOCRUZ Miguel R. F. Neto Química USS Misael Alberto Rabanal Ramirez Sistemas de Informação USS Ricardo Amar Aguiar Engenharia Elétrica USS e CEFET-RJ Salete de Oliveira Buffoni Engenharia UFF Tereza Aparecida Ferreira Biologia USS e IST Vânia Felippi G. Carvalho Pereira Biologia USS William Costa Rodrigues Engenharia Ambiental USS Normas editoriais: As normas editoriais encontram-se dentro do arquivo modelo no formado Word disponível no site da Revista Eletrônica – TECCEN. Contato: Universidade Severino Sombra Centro de Ciências Exatas Tecnológicas e da Natureza Av. Expedicionário Oswaldo de Almeida Ramos, 280, Centro Vassouras – RJ CEP : 27700-000 Professores: José Augusto Teixeira de Lima Junior ([email protected] ) Carlos Vitor de Alencar Carvalho ([email protected]) Revista TECCEN – Edição Especial – volume 2 – número 1 - março de 2009 – ISSN 1984-0993 SUMÁRIO Ambiente Visual para o Desenvolvimento de Jogos Eletrônicos 2 Diego Cordeiro Barboza (UNIFESO) e Júlio César da Silva (UNIFESO e DEC/PUC-Rio) Interação Humano - Computador usando Visão Computacional 9 Bernardo Bucher B. Barbosa (UNIFESO) e Júlio César da Silva (UNIFESO e DEC/PUC-Rio) Desenvolvimento de Software Educacional para Representação Reconhecimento de Som Aplicado à Ausculta Cardiovascular e 17 Bruno Carlos da C. Costa (UNIFESO), Leandro Segheto Moraes (UNIFESO), Júlio César da Silva (UNIFESO e DEC/PUC-Rio), Elisabete do Rêgo Lins (UNIFESO), Marco Antônio Freire Allemão (UNIFESO) e Wolney de Andrade Martins (UNIFESO) Identificação de Faces em Imagens Bidimensionais 27 David de S. A. Pereiral (UNIFESO), José Antônio R. de Rapozo (UNIFESO), Júlio César da Silva (UNIFESO e DEC/PUC-Rio), Eugênio da Silva (UNIFESO e ICA/PUC-Rio) Desenvolvimento de um Banco de Dados Geográficos para a Análise Espacial da Lashimaniose Visceral em Cametá-PA 37 Cláudia Souza (LabGeo/IEC/SVS/MS), Douglas Gasparetto (LabGeo/IEC/SVS/MS), Cleice T. N. Souza (CESUPA e LabGeo/IEC/SVS/MS), Nelson Soffiatti (LabGeo/IEC/SVS/MS), Roberto Brandão (LabGeo/IEC/SVS/MS) e Nelson Veiga (LabGeo/IEC/SVS/MS) Rastreamento de Jogadores de Futebol em Seqüência de Imagens 44 Rodrigo D. Arnaut (EPUSP) e Anna H. R. Costa (EPUSP) Tutorial para o Desenvolvimento de Jogos 2D usando a Linguagem Java 54 Soraia Teixeira Barbosa (USS) e Carlos Vitor de Alencar Carvalho (USS e UNIFOA) Tecnologia da Informação Documental Histórico Aplicada a Gerenciamento de Acervo Kayo Delgado Medeiros de Almeida (USS), Elon Gomes Vieira (USS), Carlos Vitor de Alencar Carvalho (USS e UNIFOA), Magno Fonseca Borges (USS), José Jorge Siqueira (USS), Antônio de Paula Pedrosa (USS), Douglas Moreno Moreira (USS) e Bruno M. Lemos (USS) i 64 Revista TECCEN – Edição Especial – volume 2 – número 1 - março de 2009 – ISSN 1984-0993 Ambiente Visual para o Desenvolvimento de Jogos Eletrônicos Diego Cordeiro Barboza1, Júlio César da Silva2 1 UNIFESO, Centro de Ciências e Tecnologia, Curso de Ciência da Computação, [email protected] 2 UNIFESO, Centro de Ciências e Tecnologia, Curso de Ciência da Computação; PUC-Rio, Departamento de Engenharia Civil, [email protected] Resumo. Este artigo apresenta o desenvolvimento de um software para auxílio ao desenvolvimento de jogos eletrônicos, no qual é possível definir a lógica do jogo utilizando apenas componentes gráficos reutilizáveis, sem necessidade de codificação. O trabalho trata do desenvolvimento de um wrapper para a biblioteca gráfica utilizada, um framework para o desenvolvimento de jogos em geral e a ferramenta gráfica em si em conjunto com um gerador de código responsável por traduzir as ações do usuário em código-fonte em uma linguagem de programação. 1 Introdução Há um crescente interesse pelo desenvolvimento de jogos eletrônicos, tanto no mercado quanto no meio acadêmico. A indústria de jogos eletrônicos tem obtido lucros cada vez maiores nos últimos anos, atingindo cerca de US$ 9,5 bilhões somente nos Estados Unidos no ano de 2007 [WIKIPEDIA 2009]. Estes jogos são desenvolvidos para diversas plataformas, entre elas aparelhos de videogame domésticos, dispositivos móveis, aparelhos celulares e computadores pessoais. Além dos jogos comerciais, vendidos em lojas ou por serviços de venda digital, existem outras modalidades como advergames, voltados à publicidade de marcas e produtos; business games, desenvolvidos para o treinamento e aprendizado; e casual games, jogos menores, mais simples e com uma menor curva de aprendizado. No meio acadêmico, os jogos eletrônicos são utilizados como ferramentas educativas e o processo de desenvolvimento pode ser aplicado em diversas disciplinas de cursos de Ciência da Computação e similares. O desenvolvimento de jogos pode ser utilizado para exemplificar conceitos de engenharia de software, matemática, física, computação gráfica, programação, inteligência artificial, comunicação em redes, entre outros. Nos últimos anos houve um considerável aumento na quantidade de cursos voltados ao desenvolvimento de jogos eletrônicos no Brasil, distribuídos entre cursos de graduação, pós-graduação, cursos livres, de extensão e especialização [ABRAGAMES 2008]. Existem também eventos, como o SBGames [SBGAMES 2008], voltados à promoção da área no meio acadêmico. 2 Revista TECCEN – Edição Especial – volume 2 – número 1 - março de 2009 – ISSN 1984-0993 O desenvolvimento de jogos não é, no entanto, uma tarefa trivial. Há uma alta complexidade relacionada à elaboração de conteúdo e estilo do jogo, criação de enredos, escolha e desenvolvimento de tecnologias, criação de interfaces etc. Na área de programação, um desenvolvedor iniciante pode encontrar dificuldades em escrever códigos para manipulação de recursos, testes de colisão, gerenciamento de memória e diversas outras tarefas comuns ao desenvolvimento de jogos. E mesmo um programador experiente está sujeito a erros de codificação, que podem ser difíceis e custosos de se identificar e corrigir. Este trabalho tem como objetivo apresentar uma ferramenta que possibilite o desenvolvimento de jogos eletrônicos utilizando-se de um ambiente gráfico, onde o usuário possa definir a lógica do jogo através de componentes visuais, sem necessidade de codificação. A ferramenta, chamada Visual Game, propicia um maior nível de abstração no desenvolvimento, ainda que reduza a liberdade do desenvolvedor, que passa a estar limitado pelos recursos oferecidos pelo ambiente. 2 Ambiente Visual O Visual Game é um ambiente que tem por finalidade simplificar o desenvolvimento de jogos, tornando o processo mais acessível através da utilização de componentes visuais e da geração de código-fonte automática. Desta forma, o usuário tem que se preocupar somente com a lógica do jogo, deixando de lado questões relacionadas à sintaxe da linguagem de programação e ao gerenciamento de recursos e memória. Este ambiente tem como público alvo: • Professores - que podem utilizá-lo como ferramenta de auxílio no ensino de desenvolvimento de jogos e lógica de programação; • Estudantes - que podem direcionar o estudo para questões específicas e deixar a codificação de lado momentaneamente; • Desenvolvedores de um modo geral - que podem utilizar o ambiente para desenvolver jogos completos, se beneficiando da maior abstração, ou protótipos que podem ser finalizados posteriormente, graças à possibilidade de exportar o código-fonte gerado automaticamente pela ferramenta. O desenvolvimento do Visual Game foi feito com a linguagem de programação C# e o ambiente Microsoft.Net [WIHLIDAL 2006], em conjunto com as bibliotecas Allegro (para a parte gráfica) e IrrKlang (para os efeitos sonoros). O ambiente visual é a parte central do projeto. Nele são construídos os jogos que posteriormente têm seu código-fonte gerado automaticamente por um componente do ambiente. Este código é gerado de acordo com uma estrutura definida no Visual Game Framework, um framework voltado para o desenvolvimento de jogos em geral, que se utiliza do Allegro e do IrrKlang para desenhar os gráficos do jogo, tocar efeitos sonoros e tratar entradas do usuário, através do mouse e teclado. O código-fonte do jogo é compilado através do MSBuild, um utilitário que facilita a compilação de projetos na plataforma .Net e acompanha o ambiente de execução desta plataforma, de forma que um software adicional para a compilação não é necessário. Uma vez que o código-fonte é gerado no ambiente, ele é repassado ao 3 Revista TECCEN – Edição Especial – volume 2 – número 1 - março de 2009 – ISSN 1984-0993 MSBuild que chama o compilador equivalente (neste caso o C# Compiler) e o arquivo executável é gerado, conforme a Figura 1, que mostra a integração dos componentes do sistema. Figura 1 - Estrutura dos componentes do trabalho. 2.1 Allegro.Net O Allegro.Net é uma versão da biblioteca gráfica Allegro [ALLEGRO 2009] desenvolvida como parte deste trabalho para possibilitar que esta biblioteca possa ser empregada no ambiente .Net. O desenvolvimento foi feito utilizando um serviço do .Net, o Platform Invocation Service, que permite ao código gerenciado escrito em uma linguagem como o C#, por exemplo, acessar o código nativo de uma biblioteca escrita em C, como é o caso do Allegro. 2.2 Visual Game Framework Para a construção de jogos com o ambiente, foi desenvolvido um framework, chamado Visual Game Framework, que pode ser utilizado para a criação de jogos em geral. Este framework provê ao desenvolvedor um conjunto de classes para tratar tarefas comuns no desenvolvimento de jogos, como gerenciamento de recursos e testes de colisão, e um modelo de aplicação, que representa uma estrutura básica de um jogo completo, cabendo ao desenvolvedor preencher suas lacunas para criar seus jogos. 4 Revista TECCEN – Edição Especial – volume 2 – número 1 - março de 2009 – ISSN 1984-0993 O framework é utilizado pelo ambiente no processo de geração do código-fonte dos jogos. O código é gerado utilizando as classes e métodos do Visual Game Framework, tornando o processo mais simples e reduzindo a quantidade de código-fonte que deve ser gerado. Paralelamente, neste código não é necessário definir em quais pontos os métodos serão invocados, isto é feito de maneira automática pelo modelo de aplicação do framework, em tempo de execução. 2.3 Visual Game O Visual Game tem como objetivo possibilitar o desenvolvimento de jogos de maneira visual, através de uma interface gráfica onde todas as configurações do jogo podem ser feitas de forma simples e clara. Com este ambiente, o desenvolvedor pode definir diversas configurações do jogo, como as dimensões da tela, título da janela, modo de execução em tela cheia, entre outros. É possível, ainda, carregar e configurar recursos (imagens, efeitos sonoros e fontes), criar entidades (objetos) e seus eventos (de teclado, mouse e colisão) e ações (animar o objeto, movê-lo, criar ou destruir instâncias, tocar efeitos sonoros etc.), montar palcos (formas de dividir o jogo em fases), gerar o código-fonte criado e utilizar um compilador para criar um arquivo executável. A Figura 2 mostra a tela de carregamento de imagens, onde é possível selecionar uma imagem e configurar a quantidade de quadros em que ela se subdivide. A Figura 3 exemplifica a atribuição de um evento de teclado e uma ação de movimento a uma entidade. Por fim, a Figura 4 exibe a tela de criação de palcos, onde as entidades podem ser adicionadas ao jogo. Figura 2 - Tela de carregamento e configuração de imagens. 5 Revista TECCEN – Edição Especial – volume 2 – número 1 - março de 2009 – ISSN 1984-0993 Figura 3 - Lista de eventos e ações. Figura 4 - Tela de criação de palcos. Todas as definições do usuário são traduzidas em classes no momento da geração do código-fonte. Estas classes herdam das classes definidas no Visual Game Framework e podem ser de um entre três tipos: • Entidade - representa um objeto dentro do jogo (o personagem principal, os inimigos e os itens de bônus, por exemplo); 6 Revista TECCEN – Edição Especial – volume 2 – número 1 - março de 2009 – ISSN 1984-0993 • Palco - define as partes lógicas do jogo e especifica onde as entidades devem ser alocadas; • Jogo - define a lógica central do jogo e é utilizada aqui para iniciar os palcos e definir as configurações. Estas classes são armazenadas em um formato XML e posteriormente são traduzidas em código-fonte na linguagem C# de acordo com um conjunto de regras definido pelo gerador de código. Assim, o gerador parte de um código estruturado (Quadro 1) e gera o trecho equivalente em uma linguagem de programação (Quadro 2). Quadro 1 - Exemplo de evento de teclado. Quadro 2 - Trecho de código-fonte equivalente ao evento do Quadro 1. Depois que o código-fonte é gerado, um arquivo de descrição do projeto (contendo os parâmetros de compilação, os arquivos-fonte e os arquivos de recursos utilizados no projeto) é gerado e passado ao MSBuild, uma ferramenta que acompanha o ambiente de execução da plataforma .Net e possibilita a compilação do jogo e geração do arquivo executável. Alternativamente, este mesmo arquivo pode ser aberto em um ambiente de desenvolvimento (como o Visual Studio) para que o desenvolvedor possa fazer eventuais edições no código do jogo. 3 Conclusão A utilização de ferramentas de desenvolvimento rápido no desenvolvimento de jogos eletrônicos é uma alternativa viável e torna o processo mais acessível para desenvolvedores iniciantes e estudantes, ao mesmo tempo em que facilita o trabalho de profissionais da área, uma vez que a geração automática de código-fonte elimina a possibilidade de erros de codificação. A ferramenta proposta neste trabalho permite a criação de jogos completos, ainda que haja uma perda de liberdade e o desenvolvedor fique limitado às opções oferecidas pelo ambiente para a criação de seus jogos. Desta forma, é importante que o ambiente ofereça uma ampla variedade de ferramentas a serem utilizadas durante o desenvolvimento, de forma a reduzir estas limitações. O ambiente desenvolvido pode ser aprimorado de várias formas em trabalhos futuros. Seguem algumas propostas: término das funções propostas e acréscimo de 7 Revista TECCEN – Edição Especial – volume 2 – número 1 - março de 2009 – ISSN 1984-0993 novas funções dando mais liberdade ao desenvolvedor; possibilidade de exportação e importação de entidades para aumentar a reutilização; possibilidade de criar relações de herança entre as entidades criadas nos jogos; opção de criação de ações por parte dos usuários, a fim de eliminar as restrições do ambiente; e possibilidade de utilização de scripts em uma linguagem de programação. Referências Bibliográficas ABRAGAMES. Cursos de Games no Brasil. [S.L.], 2008. Disponível em: http://www.abragames.org/docs/cursos_jogos.pdf. Acesso em 29 de janeiro de 2009. ALLEGRO. ALLEGRO – A Game Programming Library. [S.L.], 2009. Disponível em: http://alleg.sourceforge.net/. Acesso em 29 de janeiro de 2009. SBGAMES. SBGames. [S.L.], 2008. Disponível em: http://www.sbc.org.br/sbgames. Acesso em 29 de janeiro de 2009. WIHLIDAL, Graham. Game Engine Toolset Development. 1. ed. Boston: Thomson Course Technology, 2006. WIKIPEDIA. Video Game Industry. [S.L.], 2009. Disponível em: http://en.wikipedia.org/wiki/Video_game_industry. Acesso em 29 de janeiro de 2009. 8 Interação Humano - Computador usando Visão Computacional Bernardo Bucher B. Barbosa1, Júlio César Silva2 1 UNIFESO, Centro de Ciências e Tecnologia, Curso de Ciência da Computação, [email protected] 2 UNIFESO, Centro de Ciências e Tecnologia, Curso de Ciência da Computação; PUC-Rio, Departamento de Engenharia Civil, [email protected] Resumo. Este trabalho visa estudar maneiras de se explorar a Interação Humano Computador, usando Visão Computacional. A idéia tem como objetivo um esforço para tornar o computador mais interativo com o usuário, sem a necessidade da compra de um hardware ou acessório específico para tal. O produto final deste trabalho em desenvolvimento é um software que contempla esta funcionalidade, tornando o computador mais interativo. 1 Introdução A proposta deste trabalho é estudar formas de interação do humano com o computador, usando recursos de visão computacional, excluindo dispositivos gráficos como o mouse ou teclado, especificamente o uso de webcam para servir de interface. A idéia inicial é usar as imagens capturadas através de uma webcam para que se possa mover o mouse, usando comandos dados pelas mãos do usuário. Depois de concluído o projeto, este software poderá ser usado em várias áreas da computação e até mesmos para meios de entretenimento, ou ainda, para uso rotineiro. Porém, será necessário que alguns passos básicos sejam feitos antes que se possa encontrar uma aplicação viável para o software. Para poder fazer com que o computador de fato entenda o que as imagens capturadas “significam”, é necessário uso de técnicas de processamento e reconhecimento de imagens. Tendo as imagens tratadas, pode-se então executar os comandos necessários para que se alcance o objetivo. Como foi dito anteriormente, será necessário adotar técnicas de processamento e reconhecimento de imagens. Porém, como reconhecer uma imagem? Esta é a chave da questão. Como se pode reconhecer a mão sem um dispositivo de hardware acoplado? E mais, como fazê-lo em um computador, que trabalha essencialmente com dados que são discretos? Todas as repostas destas perguntas levam a apenas uma única resposta, o reconhecimento de padrões. Neste caso, alguns padrões se mostram melhores para a finalidade, como o formato da mão e suas cores características (os tons avermelhados, devido ao sangue). Estes fatores terão de ser usados para que o reconhecimento possa ser efetuado. Para alcançar-se o objetivo é necessário ter em mente que neste software, o custo computacional das técnicas adotadas tem de ser relativamente baixo, caso contrário sua aplicabilidade será diminuída, para comprovar este fato, basta imaginar que o software será usado como ferramenta para a manipulação do mouse e, também, será necessária a captura de imagens de uma webcam. 9 2 2.1 Processamento de Imagens Formato Para a pesquisa e o desenvolvimento desta aplicação é necessário que se conceitualize o significado de formato. O formato de um objeto pode ser entendido pelo contorno de sua forma em um espaço 2D ou 3D. Assim, o formato de uma régua é retangular, enquanto, o de uma garrafa é cilíndrico ou cônico. A fim de reconhecer o formato de um objeto é necessário definir um formato que funcione de base de comparação, identificar o formato do objeto em teste, e por fim fazer a comparação entre os dois respeitando certas taxas de variação. Para que se possa a fazer a extração de um contorno de uma imagem adquirida de uma webcam, é necessário usar um algoritmo para detecção de bordas de uma imagem, que são os contornos de suas formas. Existem alguns algoritmos para tal, com o de Roberts, o Operador de Sobel, o método de Canny, ou mesmo técnicas de Relief Mapping (Mapeamento de Relevo), porém apenas os dois primeiros se mostraram mais eficientes (Figura 1). Figura 1. Acima, à esquerda: a imagem original, à direita a mesma imagem quando aplicado o operador de Roberts, e a imagem abaixo com o operador de Sobel [PDI 2008]. O que caracteriza um algoritmo eficiente é o seu uso de processamento, considerando o resultado da detecção. Quanto menos ruídos e menor uso do processador, mais precisão o algoritmo tem [von Wangenheim 2008]. Pesquisou-se qual melhor se encaixava no contexto de uso deste software, onde ambos os fatores tem de serem pesados, tendo o fator ruído um maior peso. Dos algoritmos de detecção de bordas, os mais utilizados são o de Sobel, o de Roberts e o Canny. A Tabela 1 apresenta um quadro comparativo entre os algoritmos citados anteriormente. Tabela 1. Comparação ente os tipos mais conhecidos de reconhecimento de bordas de uma imagem, constatados experimentalmente. Algoritmo Ruídos Custo Computacional Avaliação final Roberts Apresenta Baixo Rápido, mas impreciso Canny Apresenta Menos Baixo Rápido, mas impreciso Sobel Quase nenhum Médio Eficaz 10 O método de Sobel foi escolhido como o método para extração de bordas por apresentar uma avaliação final que mais se compara com o tipo de algoritmo esperado. 2.2 Cores Mesmo o algoritmo de Sobel sendo um ótimo extrator de bordas, ainda capta elementos que são desnecessários para a fase de reconhecimento de imagens, que acabam por se traduzir, neste contexto, em ruído. Imaginem, por exemplo, uma imagem que possua objetos que não somente a mão do indivíduo. Todos os objetos - exceto a mão - são ruídos. Assim, mesmo o contorno sendo uma chave para se encontrar a mão em uma imagem, deve-se filtrar parte desta imagem, de modo a excluir os ruídos, que podem ser deixados pelo algoritmo de Sobel. Logo, há necessidade de uma de filtragem da imagem, para se obter um reconhecimento melhor da mão. Toda mão tem certo padrão de tons avermelhados, devido ao sangue da pessoa, por isso se procura por este padrão. Com esta técnica de procura de cor, delimita-se a área de busca na imagem, facilitando e aumentando a precisão do reconhecimento. Porém, nem sempre esses tons serão evidentes numa imagem, por exemplo, dependendo das condições de iluminação do ambiente, os tons podem aparentar ser diferentes. Assim, mesmo fazendo comparações com um padrão de cor, pode-se não estar sendo fiel ao padrão que se quer. Por isso, é preciso considerar que mesmo comparando com o padrão que é exatamente igual ao previamente estabelecido, é necessário considerar certa taxa de erro. Um algoritmo bastante interessante para realizar esta tarefa é o CamShift. CamShift (Continuously Adaptive Mean-SHIFT), em português, Transformação Contínua de Adaptação, é um algoritmo que para cada frame do vídeo capturado, pega a imagem bruta e a converte para uma distribuição probabilística de cores da imagem, usando um modelo de histograma da cor a ser rastreada [OpenCV 2002], ou seja, neste caso, a cor característica da mão. Ele opera basicamente, se valendo de uma busca inicial, para ajustar uma janela para procura. Nesta janela, ele busca pela distribuição provável de cor, que mais se aproxima do padrão, previamente estabelecido. Após ter reconhecido um provável padrão, ele focaliza as buscas apenas no rastreio deste. Por isso, fazendo ajustes de tamanho máximo da janela de pesquisa, e do desvio máximo permitido, ele é capaz de rastrear com perfeição o objetivo. Além disso, internamente o CamShift faz a conversão do sistema de cores captado (RGB) para HSV (Figura 2), pois neste é separado a matiz da saturação, reduzindo problemas de intensidade luminosa. Figura 2. Imagem no formato HSV, em baixa iluminação (lâmpada de 60W). 11 Aumentando o contraste da imagem em HSV e mudando alguns parâmetros da janela de procura, obtêm-se uma detecção probabilística mais pura, ou seja, apenas os pixels relevantes são destacados, possibilitando ajustar uma área de interesse com foco no alvo, que é a mão. Assim fazendo os ajustes necessários ele pode definir esta área com muito mais precisão. Com esta área configurada, o reconhecimento de imagens é facilitado. Seu custo computacional é relativamente baixo e é bastante preciso, sendo por estas razões escolhido como método para o rastreio do padrão de cores. Após esta fase é necessário que se faça uma conversão da imagem para uma escala de cinza, facilitando os processamentos posteriores. O uso de CamShift acentua a capacidade do uso software em ambientes de baixa iluminação. Um método alternativo seria através da binarização da imagem, tendo em vista que usuário estivesse usando uma luva, de cor bem característica, diferente das cores que normalmente são encontradas nos ambientes, como o verde florescente ou o rosa pink. Usando esta alternativa, bastaria aplicar um filtro de cor que apenas deixasse na imagem a cor escolhida, tornando-a binária. Assim, não seria necessário o método de Sobel, pois somente a imagem do objetivo seria resultante, ou seja, onde houvesse algo desenhado, a mão do usuário. Esta alternativa tem baixo custo computacional e também é bastante precisa, porém obrigaria que o usuário usasse algo a mais em sua mão, dificultando o uso do software. 3 Reconhecimento de Padrões Após os processamentos da imagem necessários, vem a fase de reconhecimento de padrões. Nesta etapa, é necessário usar de um padrão previamente estabelecido, neste caso, uma mão que esteja na posição indicada para o comando que o mouse terá de obedecer. Existem várias alternativas para que o reconhecimento de padrões possa ser feito, passando pelo uso de redes neurais, sistemas especialistas, dentre outros. Porém, os que mais se encaixam no contexto do software, são aqueles que oferecem um baixo custo computacional, além de apresentarem uma solução que seja portável, como por exemplo, o uso de template matching, ou uso de shape matching [OpenCV 2002]. As técnicas de matching são ideais para este propósito já que os comandos não vão ser variáveis e por isso se a mão do usuário não estiver na posição do mesmo, ele não será reconhecido (Figura 3). Figura 3. Template de um comando da mão, tendo sua borda extraída pelo algoritmo de Sobel, em ambiente bem iluminado. Ambos oferecem suporte que atendem as necessidades do projeto, porém o Shape Matching além de mais simples, tem baixo custo é ideal para a resolução deste projeto. A Tabela 2 apresenta um quadro comparativo entre as duas técnicas citadas anteriormente. 12 Tabela 2. Comparativo entre Shape matching e Template Matching, constatados experimentalmente, a partir do protótipo produzido. Algoritmo Imagem Teste Template 640 x 480 pixels 196 x 275 pixels Shape Matching Template Matching Tempo de Execução Taxa de Acertos 3,73 ms ± 65% 53,90 ms ± 85% Shape matching é uma técnica que utiliza comparação das formas de dois objetos com o intuito de encontrar alguma semelhança entre ambos [OpenCV 2008b]. Então, para finalmente encontrar o padrão da mão, enquanto fazendo o gesto que simboliza o comando do mouse, deve-se usar o algoritmo CamShift para reconhecer o padrão da mão, ajustando assim a região de interesse da imagem (ROI - Region Of Interest). Tendo o ROI ajustado, é necessário usar o operador de Sobel para extrair as bordas da imagem e, finalmente, usar estas bordas extraídas para fazer o Shape Matching com uma imagem que foi previamente ajustada. 4 Captura de imagens Por fim, para a captura de imagens, existem várias alternativas para a linguagem C/C++, que foi escolhida por sua conhecida alta performance. Dentre as diversas alternativas para a captura, tem-se o DirectShow, que é uma API (Application Programming Interface) de manipulação de webcam, presente na API do DirectX, além da possibilidade de ser usada a própria API do Windows, ou ainda através de bibliotecas de terceiros como a VideoInput [VideoInput 2008]. A alternativa mais interessante entre todas as pesquisadas foi a OpenCV (Open Computer Vision), que é uma biblioteca free, criada pela Intel, que oferece diversas funções para a manipulação de imagens, como por exemplo, algoritmos embutidos para a detecção de bordas de imagens e reconhecimento das mesmas, captura de uma webcam, e até exibição das mesmas, através de simples funções [OpenCV 2008a]. 5 OpenCV e algoritmo final O uso da OpenCV facilitará muito o desenvolvimento do aplicativo final, pois reúne todos os elementos necessários. A seguir apresenta-se de forma resumida a forma de execução do software: 1. Obtêm-se uma imagem que servirá como template, ou referência para os comandos para o mouse. 2. Captura-se a imagem de uma webcam. 3. Aplica-se o CamShift para que se possa determinar qual a região da imagem possuí a mão, definindo assim a ROI e iniciando o rastreio desta área específica. 4. Usa-se o algoritmo de Sobel, para a obtenção das bordas da imagem. 5. Aplica-se o Shape Matching a imagem obtida da webcam, comparando-a com o template. a.Se o Shape Matching retornar alguma semelhança, respeitando certa taxa de erro, então se encontra a imagem 13 i. Aplica-se o movimento no mouse de acordo com a posição do dedo indicador, que servirá como referência para a movimentação do mouse. b.Se o Shape Matching não retornar semelhança alguma, então o processo recomeça. 6 Descrição do Protótipo Com base nos dados adquiridos com os estudos sobre processamento de imagens e reconhecimento de padrões em imagens foi feito um aplicativo para teste destas características. Implementaram-se diversos métodos para a aquisição da imagem, na maneira desejada. O aplicativo desenvolvido converte as imagens para cinza, aplica o operador de Sobel, realiza shape matching, template matching, verifica os tempos de execução para os algoritmos e suas respostas (Figura 4). Depois, captura imagens da webcam e aplica processamentos em tempo real, além de realizar o algoritmo de CamShift. Por fim, aplica o shape matching na imagem resultante do CamShift e retorna uma resposta para o algoritmo. Figura 4. Imagem do protótipo. No protótipo implementaram-se as rotinas citadas anteriormente, através da seguinte seqüência de comandos (Figura 5): Figura 5. Ordem para o reconhecimento do indicador, e obter o movimento do mouse. 14 Como mostrado acima, inicia-se a captura (1); logo após isso, é necessário aplicar o operador de Sobel para a extração de bordas, da imagem (2); no próximo passo, implementa-se o algoritmo CamShift na imagem, para definição da região de interesse (ROI), onde os processamentos posteriores serão realizados (3); e por fim, ao habilitar o Shape Matching, é possível escolher entre três tipos de comparações diferentes (4). Após isso, os resultados colhidos do Shape Matching são apresentados no campo Result (5). Por default, o mouse só se movimenta caso o valor no campo Result seja menor ou igual a 0,026, valor avaliado experimentalmente. Então, é realizada uma comparação entre o tamanho total da imagem, o tamanho da tela e a posição do dedo no template, fazendo-se com que o mouse possa se mover de acordo com a ponta do dedo. 7 Resultados O software, como já foi dito anteriormente implementa diversos métodos de processamento de imagens e alguns de reconhecimento. Para a sua utilização é necessária, no quesito processamentos de imagens, escolher as imagens nos botões “Abrir Imagem...”, convertê-las para cinza, e então os processamentos podem ser efetuados. Os resultados, quando numéricos, são apresentados na área “Andamentos”, bem como os seus tempos de processamento. Para o processamento de vídeos da webcam, basta iniciar a captura e escolher os parâmetros para os testes. Os resultados são mostrados logo abaixo das opções de processamentos. É possível salvar as imagens processadas. A imagens obtidas, sejam de arquivo ou da webcam, são mostradas na janela “Image...” e os seus processamentos são mostrados na janela “Imagem Processada”. A Tabela 3 apresenta os tempos de execução dos algoritmos implementados no software. Tabela 3. Tempos de execução dos algoritmos. Algoritmo Resolução Entrada Resolução Saída Profundidade Tempo Médio Camshift 640 x 480 pixels 418 x 413 24 bits 20,59 ms Sobel 418 x 413 pixels 418 x 413 8 bits 24,64 ms Shape Matching captura e 185 x 259 418 x 413 8 bits 1,11 ms 418 x 413 pixels da pixels do template Total: 46,35 ms O protótipo ainda não funciona perfeitamente, pois o algoritmo CamShift, para poder colher exatamente um área de interesse que seja no mínimo relevante exige uma configuração rica em detalhes. Por isso, o sistema como um todo ainda não funciona tão bem quanto deveria, mas após ajustes constantes ele tende a melhorar e tornar a precisão do reconhecimento melhor. Por causa da conversão para HSV implementada internamente no Camshift, o fator iluminação não é tão crítico nesta parte do algoritmo. Porém, para o Sobel é necessária uma iluminação do ambiente relativamente boa, para que o operador possa ser usado em toda sua plenitude e então capturar imagens mais ricas em bordas, diminuindo os ruídos da região de interesse, o que resulta num aumento da exatidão do movimento do mouse. 15 8 Conclusão Com os testes realizados a partir do protótipo, ficou claro que o método adotado é bastante viável, desde que se faça um apuramento nas configurações do algoritmo Camshift e, se possível, no método de Sobel, já que o primeiro é responsável pela detecção da área de interesse (R.O.I.). Esta área é utilizada pelos processamentos posteriores, implicando em maior precisão na detecção da mão e dos possíveis comandos por ela realizados. O tempo de execução de todo o processo está diretamente ligado ao apuramento das configurações corretas desses algoritmos, além de ser fator crítico, pois não serão admitidos pelo usuário grandes atrasos entre um comando realizado pela mão e sua efetivação no computador. Um aplicativo que implemente está solução para a finalidade aqui discutida será ótimo, numa relação custo benefício final, tendo em vista que não há necessidade de aquisição de equipamentos que não sejam comumente encontrados, além de ser uma solução computacionalmente barata, fatores esses que indicam um alto fator de aceitação entre os mais diversos tipos de usuários. Referências Bibliográficas OpenCV (2002). Documentação Oficial da OpenCV. instalação da mesma, OpenCV Reference Guide. Encontrada no diretório de OpenCV (2008a). OpenCV Official - Página oficial da Intel, informações sobre utilização e licença. Disponível em: http://www.intel.com/technology/computing/ opencv/index.htm. Último acesso em 13 de setembro de 2008. OpenCV (2008b). Wiki da OpenCV. Tutoriais e exemplos de sua utilização. Disponível em: http://opencvlibrary.sourceforge.net/Welcome/#head-59654a1ce94786b994e1e a7b59ac0d98bb7318c7. Último acesso em 13 de setembro de 2008. PDI (2008). Processamento Digital de Imagens Filtragens Espaciais. Disponível em: http://www.dpi.inpe.br/~carlos/Academicos/Cursos/Pdi/pdi_filtros.htm. Último acesso em 06 de setembro de 2008. von Wangenheim, Aldo (2008). Introdução à Visão Computacional - Encontra a Linha Divisória: Detecção de Bordas. Disponível em: http://www.inf.pucrs.br/~eduardob/ disciplinas/laproiv/HomeAssignments/DeteccaoContorno/bordas.pdf. Último acesso em 06 de fevereiro de 2009. VideoInput (2008). Biblioteca VideoInput para captura de imagens. Disponível em: http://muonics.net/school/spring05/videoInput/. Último acesso em 09 de fevereiro de 2008. 16 Desenvolvimento de Software Educacional para Representação e Reconhecimento de Som Aplicado à Ausculta Cardiovascular Bruno Carlos da C. Costa1, Leandro Segheto Moraes2, Júlio César da Silva3, Elisabete do Rêgo Lins4, Marco Antônio Freire Allemão5 e Wolney de Andrade Martins6 1 UNIFESO, CCT, Ciência da Computação, [email protected] 2 UNIFESO, CCT, Ciência da Computação, [email protected] 3 UNIFESO, CCT, Ciência da Computação e PUC-Rio, Departamento de Engenharia Civil, [email protected] 4 UNIFESO, CCT, Ciência da Computação, [email protected] 5 UNIFESO, CCT, Ciência da Computação, [email protected] 6 UNIFESO, CCM, Medicina, [email protected] Resumo. No ensino da medicina, especificamente, em laboratórios de estudos e práticas, existe uma preocupação de resguardar o máximo o paciente, buscando o mínimo de constrangimento, porém sem deixar que o aprendizado seja prejudicado. Com o objetivo de capacitar o discente para a prática em ausculta cardiovascular, sem que o contato com o paciente seja necessário, foi desenvolvido o sistema CARDIOS. Contendo informações de doenças cardiovasculares, o aluno conhece o som e o respectivo registro gráfico. A utilização de aparelhos específicos, como um estetoscópio eletrônico, promove a visualização e amplificação do som em tempo real. O uso de agentes inteligentes possibilita o reconhecimento do som cardíaco, classificando-o em normal ou patológico. 1. Introdução Atualmente, o uso indiscriminado da tecnologia por especialistas pode ser tratado como um problema, pois o avanço das tecnologias na medicina acaba tornando o especialista quase totalmente dependente delas para o diagnóstico. Por isso, todo médico, especificamente o cardiologista, deve ser capaz de levantar um diagnóstico inicial através de um simples exame físico, a ausculta cardíaca, porém, isto não vem acontecendo. Principalmente entre os especialistas recém formados, há uma perda desta sensibilidade, o que é prejudicial para toda a área médica. Como a maioria dos casos resulta em um pedido de um exame mais detalhado, o Eletrocardiograma, por exemplo, se torna mais fácil este pedido logo num primeiro momento a analisar cuidadosamente o som ou ruído gerado pelo batimento cardíaco. A motivação deste trabalho está no fato do software ser utilizado para auxiliar, no ensino para a identificação de doenças e suas respectivas características. Tornando mais precisa a decisão sobre a necessidade de realização de um exame mais detalhado. 17 O registro gráfico apresentado juntamente com o som, é chamado de Fonocardiograma, não sendo mais utilizado expressivamente para o diagnóstico, pois foi substituído por exames mais avançados, como o Ecocardiograma. Porém, isto não justifica o completo desconhecimento, por parte do especialista, do registro sonoro e diagnóstico, ao menos inicial, tendo por base a análise do som ou ruído cardiovascular. O objetivo deste trabalho é a reprodução do som dos batimentos cardíacos, representa gráfica e reconhecimento do mesmo, promovendo a classificação dos sons auscultados como normal ou patológico. 2. Características e representação do som 2.1. Definição de som O som é o resultado de um movimento vibratório da matéria transmitido através de um meio. É energia que se propaga através de ondas, chamadas de ondas mecânicas, pois precisam de um meio material para se propagar. Este meio pode ser sólido, como a terra; líquido, como a água; ou gasoso, como o ar [Hewitt 2002]. 2.2. Captação e conversão do som Para tornar-se digital, é necessário que o som seja captado. A captação do som é feita por equipamentos que contém um conversor Analógico/Digital, ou AD. Tais aparelhos são capazes de converter um som totalmente analógico (voltagem) em números (bits). Por exemplo, o microfone. Conforme citado, quando o som é captado ele é enviado para um conversor AD, através de um microfone. O sinal elétrico será digitalizado, convertido em informações expressas em números, e armazenado em um meio digital. Para a reprodução existe um respectivo conversor DA (Digital/Analógico). O AD precisa transformar voltagens em números. O DA faz o contrário, recriando o som analógico depois de ele ter sido processado pelo computador para que o alto-falante possa reproduzir o resultado (Figura 1). Figura 1. Reconstituição do som analógico pelo conversor AD. 2.3. Processo de digitalização Milhares de vezes por segundo, o conversor AD “anota” o estágio da oscilação e lhe atribui um valor numérico, por exemplo, 44.100 vezes por segundo, resultando em uma taxa de amostragem de 44.1 kHz. A cada amostragem, o conversor mede a amplitude e codifica-o em um valor numérico. Essa forma de medir o sinal é chamada de Amostragem (“sampling”), e a conversão da amplitude em valor numérico é chamada de quantização (“quantize”). As duas compõem o processo de digitalização (Figura 2). 18 Figura 2. Espectro da onda sonora depois de digitalizada. 2.4. Representação do som O som, sendo ondas produzidas por vibrações de objetos materiais. Em cada um desses casos, a vibração original estimula a vibração de algo maior e mais massivo, como uma caixa de ressonância de um instrumento de corda. Este material vibrante, então, envia uma perturbação através do meio circulante, por exemplo, o ar, em forma de ondas longitudinais. Uma onda longitudinal ocorre quando as partes que constituem o meio são movidas para frente e para trás na mesma direção em que se propaga a onda [Hewitt 2002]. O comportamento de uma onda longitudinal pode ser demonstrado com uma mola comprida, presa em uma das extremidades a uma parede. Fazendo o movimento de empurrar e puxar rápido e repetidamente, partes da mola estão comprimidas, e uma onda de compressão percorre a mola. Entre as regiões de compressão, existe uma região onde a mola está distendida, chamada de rarefação. Tanto a compressão como a rarefação se propagam na mesma direção, ao longo da mola. As ondas de som são ondas longitudinais (Figura 3). Figura 3. Demonstração de uma mola longitudinal com uma mola. 2.5. Compressão e rarefação Considere um diapasão próximo a um tubo, conforme a Figura 4. Figura 4. Som se propagando a partir da vibração de um diapasão. Quando o ramo direito do diapasão se move em direção ao tubo, ele empurra as moléculas de ar mais próximas a ele em direção ao tubo num pulso de ar comprimido, este pulso é chamado de compressão. Quando este ramo balança em sentido contrário, afastando-se do tubo, ele empurra algumas moléculas para fora, produzindo uma área de baixa pressão próxima ao ramo, conseqüentemente as moléculas adjacentes são movidas para esta zona, deixando para trás uma zona com ar rarefeito, a esta perturbação dá-se nome de rarefação. 19 Em 1822, um matemático francês Joseph Fourier descobriu que este movimento pode ser decomposto em simples ondas senoidais que se adicionam [Fourier 2008]. Ondas senoidais são aquelas com a forma de uma função seno ou cosseno, é a mais simples de todas as ondas, possuindo uma única freqüência, conforme a Figura 5. Figura 5. Representação de uma onda senoidal. Para a representação do som na senoide, o ponto máximo chamado de crista, corresponde à compressão, sendo o ponto mínimo, chamado de ventre, correspondente a rarefação. No exemplo do diapasão, é produzida uma freqüência natural, ou seja, a vibração resultante de seu próprio conjunto de freqüências particulares, que juntas formam seu som próprio. A Figura 6 demonstra a representação do som em relação ao movimento vibratório do diapasão. Figura 6. Representação da uma onda senoidal de um som produzido pelo diapasão. 3. Noções de Cardiologia Aplicada 3.1. Ausculta Cardíaca Na medicina, a Semiologia está relacionada ao estudo dos sinais e sintomas das doenças humanas [Porto 2005]. O significado da palavra provém do grego σηµειολογία (semeîon, sinal + lógos, tratado, estudo). A Ausculta Cardíaca é uma de suas áreas, onde são estudados os sons e ruídos gerados pelo ciclo cardíaco e seu significado. Habitualmente, o estetoscópio é utilizado para realizar a ausculta, amplificando os sons corporais. Foi desenvolvido por René Leannex em 1816. É composto por Olivas Auriculares, peças em formato anatômico, que se encaixam no ouvido do examinador; tubo de condução, tubos que permitem a transmissão do som; campânula, peça de contato com o corpo do paciente ou examinado, mais apropriado para percepção de sons graves; e diafragma, peça de contato com o corpo do examinado, mais apropriado para percepção de sons agudos. 3.2. Sons Cardíacos Os sons cardíacos normais (Primeira Bulha e Segunda Bulha) são produzidos pelo movimento das válvulas cardíacas, que se fecham de forma abrupta para impedir a regurgitação do sangue (Figura 7). 20 Na Figura 8 podem-se observar as quatro áreas auscultatórias existentes: (1) Aórtico, (2) Pulmonar, (3) Tricúspide e (4) Mitral. O especialista ao realizar a ausculta cardíaca, ouve e examina cuidadosamente cada um desses pontos. Figura 7. Sons do ciclo cardíaco. Figura 8. Áreas auscultatórias. O primeiro som cardíaco localiza-se no início da fase de contração (sístole). É de alta freqüência e audível em todos os focos auscultatórios. Ocorre quando o sangue presente nos átrios passa para os ventrículos, neste instante as válvulas, mitral e tricúspide, se fecham evitando a regurgitação do sangue para os átrios. O segundo som cardíaco é localizado no fim da fase de contração (sístole). É um som também de alta freqüência. Ocorre quando o sangue presente nos ventrículos é expulso através das artérias aórtica e pulmonar, neste instante as válvulas, aórtica e pulmonar, se fecham evitando que o sangue volte para os ventrículos (Figura 9). Figura 9. Primeira e Segunda Bulha (B1 e B2). 4. Projeto CARDIOS CARDIOS é um software educativo desenvolvido para auxiliar as aulas práticas de ausculta cardiovascular. Consiste em uma interface gráfica amigável que possibilita ao professor e aos alunos ouvirem o som do batimento cardíaco e simultaneamente ver os gráficos gerados por este som. Através deste gráfico é possível identificar diversas doenças cardíacas, sendo assim de grande utilidade para se formar um diagnóstico inicial e decidir qual o melhor exame ou tratamento a ser seguido pelo paciente. O software apresenta detalhes sobre os aspectos fisiológicos do coração, disponibilizando ao usuário uma parte bastante didática, contendo sons, gráficos e textos explicativos sobre os sons cardíacos. O mesmo ocorre para os aspectos patológicos, onde traz um breve resumo das estenoses e insuficiências cardíacas com seus respectivos sons (Figura 10). 21 Figura 10. Interface do CARDIOS (Opção “Primeira Bulha” selecionada). O CARDIOS é capaz de ler qualquer arquivo de som no formato wave e plotar o gráfico gerado pela amplitude deste som no domínio do tempo. O usuário também tem a opção de ouvir este som a qualquer momento. Utilizando um aparelho de captação de pulso cardíaco digital específico, por exemplo, um estetoscópio digital, é possível visualizar o batimento cardíaco em tempo real no domínio da freqüência (Figura 11). Figura 11. Selecionada a opção “Gravar som”. Além das funcionalidades descritas, o CARDIOS é capaz de reconhecer se um batimento cardíaco é normal ou não, apresentando a resposta possível ao professor especialista e alunos (Figura 12). Para isso utiliza-se uma técnica da análise de máximos a mínimos. Foram reunidas 15 amostras de batimentos normais e anormais, apresentando ao software três vezes cada um, onde se constatou que o número de máximos e mínimos de uma amostra de batimento cardíaco na mesma amplitude e tempo de gravação, possui aproximadamente 100 números a menos que qualquer batimento cardíaco que apresenta alguma anormalidade. Com isso, apresentando-se uma amostra de som no formado wave realiza-se a classificação do som, conforme as especificações citadas. Após a abertura do arquivo, clique no botão “Classificar”, o software irá mostrar o número de máximos e mínimos, juntamente com a classificação. 22 Figura 12. Som cardíaco normal identificado. 4.1. Redes Neurais Artificiais Redes Neurais Artificiais (RNA) são técnicas computacionais que buscam, através de modelos matemáticos, uma representação do cérebro humano para a resolução de problemas. Após o treinamento, espera-se da rede, com pesos ajustados, o reconhecimento de padrões, classificação, entre outras diversas aplicações. Basicamente, existem dois tipos de treinamento: •Treinamento supervisionado - Neste método uma seqüência de padrões, cada qual com um alvo de saída associada (“professor”), são apresentados a RNA. Os pesos são ajustados de acordo com o algoritmo de treinamento que visa aproximá-los ao máximo dos padrões de entrada. •Treinamento não-supervisionado - Neste método uma seqüência de padrões, os quais não possuem alvo de saída associada (“professor”), são apresentados a RNA. Os pesos são ajustados de acordo com o algoritmo de treinamento. Neste caso, a RNA ajusta os pesos de tal maneira que os padrões de entrada similares são agrupados em uma mesma unidade de saída (clusters). Uma RNA do tipo Multilayer Perceptron (MLP) é constituída por um conjunto de nós de entrada, uma ou mais camadas escondidas e uma camada de saída. Com exceção da camada de entrada, todas as outras camadas são constituídas por neurônios (Figura 3). Figura 13 - Arquitetura de uma Rede Neural Artificial. Cada neurônio baseia-se no modelo proposto por McCulloch e Pitts (Figura 14), que compreende [Mendes 2008]: 23 •Estímulos de entrada (X) – Cujos componentes são representados pelo vetor X; •Ligações sinápticas (W) – Cujos componentes são representados pelo vetor W; •Saída (Y) – Cujos componentes são representados pelo vetor Y, produzido segundo o valor de ativação alcançado pelo neurônio. Figura 14 - Modelo de um Neurônio Artificial. A saída do neurônio é definida pelo valor de ativação, sendo calculado da seguinte m forma: v j = ∑ w ji xi + b i =1 Onde: v é o valor de ativação do neurônio j; w são os pesos das conexões do neurônio j; x é o valor de cada um dos m estímulos que chegam ao neurônio j, e b é o valor do bias (variável auxiliar com a finalidade de aumentar ou diminuir a influência das entradas) que será somado ao resultado da combinação linear para compor o valor de ativação. 4.2. Tratamento e representação numérica do som Conforme visto, para a representação do som num ambiente computacional torna-se necessário a quantização do som, ou seja, um registro numérico. Para isso, foi utilizado uma função do software MatLab [Matlab 2008] chamada wavread, onde retorna em Y os respectivos valores da amplitude. Após extrair estes números, é possível utilizá-los para a plotagem de um gráfico do som no domínio do tempo, por exemplo. Porém, para o treinamento da rede neural, tornava-se ineficaz, pois a função retorna valores segundo a configuração da taxa de amostragem da placa de som, aproximadamente 20.000 valores para um som de apenas 5 segundos. É necessário um tratamento na base de dados, ou seja, uma forma de representação do som, em que não se perca informação importante, tornando-se então um problema de sistemas de equações lineares. Utiliza-se a Eliminação Gaussiana para a solução deste problema, pois ela é capaz de reduzir a base com n valores, em um número g escolhido, tal que g é o grau do polinômio. Antes da aplicação da Eliminação Gaussiana, é aplicada na base de dados uma técnica matemática chamada de Método dos Mínimos Quadrados (MMQ). 4.2.1. Método dos Mínimos Quadrados Dados os pontos (x1,y1), (x2,y2),...,(xn,xn) (obtidos com a função wavread), o resultado que se espera é o polinômio que melhor aproxima (interpola) os n pontos no plano. O critério significa a menor soma dos quadrados dos desvios. 24 De forma geral, o Método dos Mínimos Quadrados MMQ pode ser descrito conforme a figura a seguir, onde a matriz simétrica representa os somatórios dos valores do eixo X (matriz à esquerda) e Y(matriz à direita), elevados a uma potência g. Esta potência é o grau do polinômio que irá representar a curva. A variável k representa um índice numérico (equação 1). (1) 4.2.2. Eliminação Gaussiana Após os valores dos somatórios de x e y obtidos com o MMQ, é fornecido como entrada para uma função Gauss (eliminação gaussiana), onde a saída serão os coeficientes a0, a1, a2,...ag (tal que, g é o grau do polinômio). Estes coeficientes são os valores numéricos que melhor identificam uma curva, quando informados no polinômio de grau g, escolhida anteriormente, no MMQ. Portanto, não importa o tamanho da base gerada pela função wavread, utilizado as técnicas MMQ e Eliminação Gaussiana, a base é reduzida a um número definido. Resta apenas, analisar a curva, verificar o número de máximos e mínimos e definir o grau do polinômio. 5. Conclusões Ao definir a proposta do projeto, era inerente a multidisciplinaridade. A semiologia, com a evolução natural de longos anos, apresenta um grande avanço em técnicas para o ensino da ausculta cardiovascular. Por outro lado, com novas tecnologias computacionais surgindo diariamente, a sinergia entre as duas áreas, Ciência da Computação e Cardiologia tornam-se inovação e eficiência em construção de soluções tecnológicas. Observa-se isso fortemente presente em laboratórios, exames diagnósticos, hospitais, entre outros. Para a área do ensino, especificamente, da ausculta cardiovascular, tal sinergia não deixa de estar presente, porém, a presença não é tão expressiva. A Ciência da Computação pode desenvolver softwares que, além de facilitar, ampliam as ferramentas para o docente aplicar no ensino. Com o projeto CARDIOS, buscou-se tal sinergia, onde a solução desenvolvida promove ao aluno a prática, em ouvir e reconhecer a representação do som cardíaco. Utilizando equipamentos de hardware específico, o software é capaz de exibir o gráfico do som auscultado, facilitando assim, a compreensão por parte do aluno. Na pesquisa científica realizada, utilizando técnicas de sistemas lineares, Método dos Mínimos Quadrados e Eliminação Gaussiana, obteve-se um resultado eficiente quanto à representação do som, onde se aplicando a uma rede neural, é possível a identificação da doença cardiovascular. Os resultados possibilitam o desenvolvimento de trabalhos futuros. Utilizando a técnica de representação do som apresentada, estudos quanto à identificação de som em outros contextos podem ser efetuadas. A conclusão do desenvolvimento do protótipo possibilita a implantação do software no Laboratório de Habilidades do UNIFESO, 25 promovendo uma aplicação prática dentro da universidade. Do ponto de vista da sinergia, apresenta-se a proposta quanto à pesquisa em soluções que podem ser construídas para o ensino em medicina, os avanços da Ciência da Computação são de fato imponentes dentro da própria área. Porém, a aplicação deste avanço para a prática da docência médica é ainda embrionária, descerrando um vasto caminho para o desenvolvimento de pesquisas científicas e soluções computacionais. Referências Bibliográficas 3B, Brasil Scientific. Simulador de Ausculta com SmartScope, 2008. Disponível em: http://www.3bscientific.com.br/shop/brasil/exame-medico-e-autoexame/simuladorde-ausculta-com-smartscope. Acesso em: 02 de dezembro de 2008. Blaufuss. Heart Sounds and Cardiac Arrhithmias, 2008. http://www.blaufuss.org/. Acesso em: 02 de dez. de 2008. Disponível em: CADI. An Intelligent, Multimedia Tutor for Cardiac Auscultation, 2008. Disponível em: http://www.aaai.org/Library/AAAI/1996/aaai96-238.php. Acesso em: 02 de dezembro de 2008. Dias, Robson. Curso de Teoria Musical, 2000. Disponível em: http://www.atelierdavovo.com/teoria/teoria/aula01/. Acesso em: 17 de julho de 2008. Fourier, Jean Baptiste Joseph, 2008. Disponível em: http://www.stetson.edu/ ~efriedma/periodictable/html/Fe.html. Acesso em: 15 de dezembro de 2008. Hewitt, Paul G. Física Conceitual. 9. ed. Porto Alegre: Editora Bookman, 2002. Matlab. Matlab Trial Software, 2008. Disponível em: http://www.mathworks.com/ products/matlab/tryit.html. Acesso em 20 de novembro de 2008. Mendes, Daniele Quintela. O modelo do Neurônio Artificial – Laboratório Nacional de Computação Científica. 2008. Disponível em: http://www.lncc.br/~labinfo/ tutorialRN/. Acesso em: 10 de julho de 2008. Neto, Wilson Castello Branco. Sistemas de Reconhecimento de Som para Afinação de Instrumentos. Dissertação de Mestrado. Universidade Federal de Santa Catarina em dezembro de 2007. PEC. Programa Educacional em Cardiologia, 2008. Disponível em: http://www.virtual.unifesp.br/unifesp/cardio. Acesso em: 02 de dezembro de 2008. Porto, Celmo Celeno. Semiologia Médica. 5a. ed. São Paulo: Editora Guanabara Koogan, 2005. Sommers, D., McNeill, P. Turchin, B. Physical Characteristics, 1996. Disponível em: http://library.thinkquest.org/2662/TQ1996/characteristics.html. Acesso em 17 de julho de 2008. 26 Identificação de Faces em Imagens Bidimensionais David de S. A. Pereiral1, José Antônio R. de Rapozo2, Júlio César da Silva3, Eugênio da Silva4 1 UNIFESO, Centro de Ciência e Tecnologia, Curso de Ciência da Computação, [email protected] 2 UNIFESO, Centro de Ciência e Tecnologia, Curso de Ciência da Computação, [email protected] 3 UNIFESO, Centro de Ciência e Tecnologia, Curso de Ciência da Computação; PUC-Rio, Departamento de Engenharia Civil, [email protected] 4 UNIFESO, Centro de Ciência e Tecnologia, Curso de Ciência da Computação; PUC-Rio, Departamento de Engenharia Elétrica, [email protected] Resumo. O objetivo deste trabalho é a realização de um estudo a respeito das técnicas de Biometria mais conhecidas e pesquisadas atualmente, suas aplicações e características, como confiabilidade e eficiência. Além disso, apresenta-se também a sua maturidade em âmbito internacional. O foco central do trabalho é o desenvolvimento de uma aplicação que faça a identificação de faces em imagens bidimensionais, que é considerada uma das técnicas de Biometria mais promissoras para o reconhecimento de pessoas à distância, sem contato físico e em meio a outras. Para isso, o sistema contempla as etapas de aquisição e tratamento da imagem, bem como a de identificação (localização) das faces na imagem. O trabalho apresenta ainda a modelagem do sistema e o estágio de desenvolvimento atual. 1. Introdução O cérebro humano é capaz de identificar diversos tipos de padrões, como formas, cores, tamanhos, além de ser apto também à identificação de padrões mais complexos podendo diferenciar sem grandes dificuldades a face de uma pessoa entre várias. Apesar de ser uma ação simples para o cérebro humano, esse tipo de reconhecimento necessita de um complexo processamento quando é feito através de softwares de computador. O Reconhecimento Facial é uma das áreas da Biometria mais pesquisadas na atualidade cujos objetivos são Diferenciar uma pessoa de outra, identificar um usuário de um sistema, encontrar uma pessoa em meio a uma multidão. Por isso, este trabalho visa estudar e analisar as formas de reconhecimento facial utilizadas atualmente procurando apresentar soluções mais eficientes, através de testes com um protótipo de software, para a identificação de faces em imagens bidimensionais, que servirá de base para o desenvolvimento de softwares de reconhecimento facial. 2. Biometria Desde o início do desenvolvimento dos sistemas digitais, existe uma intensa preocupação com a segurança e proteção dos dados e dos usuários neste meio virtual. 27 Uma das formas de segurança mais comuns é o uso de senhas pessoais, geralmente representadas por um ou mais conjuntos de caracteres, porém este modo de proteção apresenta diversas vulnerabilidades. Por mais segura que seja uma senha, há o risco de que seja descoberta por outra pessoa ou software, esquecida ou roubada. Uma solução para este problema pode estar na Biometria [Patin 2003]. A Biometria pode ser pensada como uma chave bem segura, mas uma chave que não pode ser entregue a outra pessoa [IBIA 2006]. Biometria, do grego bios vida e metron medida, é a parte da Ciência que estuda as características físicas dos seres vivos, de forma estatística, analisando os padrões e os definindo em atributos quantitativos. Cada ser humano possui características que os tornam únicos no mundo, a distância entre os olhos, os padrões das impressões digitais, as formas e cores na íris, os sulcos no cérebro, a formação dos dentes e a organização do sistema circulatório são algumas dessas características. Quando estas características são analisadas em conjunto permitem o reconhecimento e a distinção de cada pessoa. Para possibilitar esse reconhecimento surgiu a Biometria. Atualmente vários estudos vêm sendo realizados para permitir a aplicação da Biometria em diferentes áreas, atendendo desde o usuário de um computador doméstico que precisa restringir o acesso aos seus arquivos, até um sistema de segurança para identificação de criminosos entre multidões [Russel & Novirg 2004]. Baseando-se nos padrões definidos na Biometria, atualmente têm sido desenvolvidas diversas técnicas de reconhecimento, cada uma dessas técnicas direcionadas a distintos tipos de uso. Como exemplo de utilização pode-se citar escolas controlando a freqüência dos alunos, aeroportos identificando os passageiros, bancos identificando os clientes, sistemas de segurança identificando criminosos, filas de atendimento reconhecendo as pessoas e enviando as informações ao atendente, dentre outras formas. As técnicas de Biometria mais utilizadas atualmente são a verificação dos Padrões nas veias das mãos, verificação da impressão digital, reconhecimento através da irias, reconhecimento através da retina, reconhecimento da voz, geometria da mão, análise da pele, identificação através da assinatura, reconhecimento facial. 3. Reconhecimento Facial O cérebro humano é considerado um ótimo reconhecedor de padrões, podendo reconhecer algo que nunca viu. Por exemplo, se alguém é ensinado sobre o que é uma cadeira, porém durante a sua vida apenas viu cadeiras com quatro pernas, quando vir uma cadeira com três pernas ainda assim saberá que aquilo se trata de uma cadeira. Com as faces não é diferente, o cérebro humano consegue reconhecer pessoas rapidamente, analisando suas características, porém para um computador esse é um processo mais complexo. Os softwares de reconhecimento facial que vêm sendo desenvolvidos atualmente baseiam-se em pontos estratégicos da face humana. Existem aproximadamente 80 pontos chave que juntos formam características únicas em cada ser humano, como a distância dos olhos entre si e entre outras partes do rosto, como a sobrancelha, o tamanho do nariz, a linha do queixo, largura da boca, entre outros. A captura e identificação desses pontos podem ser efetuadas em uma imagem com duas dimensões apenas buscando os pontos e analisando ou construindo um modelo em três dimensões 28 dos pontos da face para obter uma maior precisão. Logo, após a captura é feita a transformação de cada ponto em dados numéricos que são comparados a outros armazenados em um banco de dados. Para um processo de reconhecimento eficaz, devem-se levar em consideração diversas formas de reconhecimento desses padrões. Com base nisso, pode-se citar o reconhecimento em imagens faciais não frontais, em meio externo com influência de luzes, de faces de homens, que são consideradas mais fáceis de reconhecer por terem características mais acentuadas, e de mulheres, que têm características mais suaves dificultando o processo. O reconhecimento facial é uma das formas de Biometria mais pesquisadas. Porém atualmente tem pouca confiabilidade, devido à possibilidade de mutação através de acidentes e processos naturais como o envelhecimento ou artificiais como cirurgias plásticas, utilização de disfarces como máscaras, uso de cosméticos e produtos de rejuvenescimento. Em alguns sistemas até mesmo fotografias podem ser utilizadas para fraudar o processo de reconhecimento. Portanto, são necessárias mais pesquisas nesta área para um melhor aperfeiçoamento, uma diminuição do custo e uma maior confiabilidade. O reconhecimento facial através de imagens em duas dimensões leva em consideração diversos padrões apresentados na face de determinada pessoa, como as medidas e proporções faciais. Com base nestas informações é criado um registro dos dados, que serão utilizados para efetuar as comparações e assim reconhecer ou não o indivíduo da imagem. Normalmente, é utilizada uma rede neural para o processo de reconhecimento, necessitando de diversas imagens para treinamento da rede e uma maior precisão na identificação. O reconhecimento facial através de imagens bidimensionais leva em conta diversos padrões apresentados na face da determinada pessoa, como as medidas e proporções faciais. Com base nessas informações é criado um registro que, posteriormente, será utilizado para efetuar as comparações e assim reconhecer ou não o indivíduo da imagem [WPI 2004]. Atualmente existem diversas técnicas para o reconhecimento facial. Dentre elas podemos destacar a mais utilizada, PCA, ou análise de componentes principais, que é feita levando-se em consideração os pontos principais de onde é possível a obtenção de características fundamentais para o processo de reconhecimento da face humana. A técnica PCA trata-se de um método estatístico multivariado que visa reduzir o tamanho da imagem facial com perda mínima de informação. Devido à velocidade e simplicidade do método, é um dos mais empregados atualmente. O PCA pode ser visto como uma transformação linear de ‘m’ variáveis em ‘m’ variáveis novas. Essas novas variáveis podem ser vistas de tal forma que a primeira variável represente a maior variação do conjunto de dados original, a segunda variável represente a maior variação restante e assim por diante. Por isso, pode-se dizer que a técnica PCA também funciona como um método de extração de características, pois se considerarmos as variáveis do objeto, o PCA transforma o conjunto de características originais em um novo conjunto de características (extração). Porém, neste novo conjunto podemos identificar quais são as características mais significativas, descartando as de menor importância. 29 A Figura1 exemplifica o funcionamento de um sistema utilizando os EigenFaces extraídos através do método PCA. As características faciais são localizadas e extraídas da imagem, faz-se uma transformação determinando os valores, depois os fatores com maior quantidade de informação são separados para que o algoritmo de reconhecimento PCA recolha estas características extraídas da imagem apresentada, comparando-as com outras faces contidas num banco de dados. Quando há uma semelhança detectada o sistema calcula a probabilidade de semelhança e apresenta os resultados. Figura 1. Ilustração do sistema de reconhecimento baseado em EigenFaces [BBC 2006]. 4. Software para Reconhecimento de Faces em Imagens Bidimensionais Para o desenvolvimento do software de identificação de faces em imagens bidimensionais, foi escolhida a linguagem de programação C#, utilizando o framework .NET, por disponibilizar uma vasta quantidade de recursos que podem ser utilizados no projeto [Microsoft 2008] e pela familiaridade com a linguagem. Também foi necessária a utilização de uma biblioteca gráfica para possibilitar o tratamento e o processamento das imagens utilizadas. Foi utilizada a biblioteca inicialmente desenvolvida pela Intel, OpenCV, que é livre para uso acadêmico e comercial [OpenCV 2008]. A escolha das ferramentas de desenvolvimento e recursos necessários baseou-se principalmente no custo de desenvolvimento, permitindo que o software não possua um valor comercial considerado alto, quando totalmente implementado, o que pode possibilitar sua implantação em outros sistemas. O objetivo do projeto é a construção de um software que faça a aquisição de uma imagem através de uma câmera ou de um arquivo em disco, trate-a e identifique faces, possibilitando que futuramente seja desenvolvida a etapa de reconhecimento das pessoas retratadas na imagem. O software possui um módulo de aquisição da imagem através de uma câmera ligada ao computador ou através de um arquivo de imagem gravado no computador. Após a aquisição da imagem é executado o tratamento desta, a fim de melhorar a sua qualidade e de definir seus contornos, possibilitando que os padrões faciais sejam extraídos e que as faces sejam identificadas. Isso significa localizar possíveis faces na imagem obtendo suas posições. Isto possibilita que posteriormente seja desenvolvida a 30 aplicação de reconhecimento destas faces localizadas na imagem. A Figura 2 mostra a tela do software com a imagem tratada e faces identificadas. Figura 2 - tela do software com imagem tratada e faces reconhecidas. 4.1. Tratamento de Imagens para o Reconhecimento Facial Para possibilitar o reconhecimento de faces em uma imagem estática, é necessária uma série de processos de preparação, tratamento e processamento dessas imagens [Gonzales & Woods 2002]. Dentre estes se podem citar as etapas mostradas no exemplo da Figura 3. Figura 3 – Processo de aquisição e tratamento de imagens. 31 Existem duas técnicas de tratamento de imagem: a do domínio da freqüência e a do domínio espacial. Técnicas fundamentadas no domínio espacial baseiam-se na manipulação direta dos pixels de uma imagem, podendo ou não levar em consideração a sua vizinhança. As técnicas fundamentadas no domínio da freqüência baseiam-se na utilização de transformadas, como por exemplo, a transformada de Fourier. Segundo Gonzalez & Woods (2002) funções de processamento de imagens no domínio espacial podem ser expressas como g(x,y) = T[f(x,y)] em que f(x,y) é a imagem de entrada, g(x,y) é a imagem processada e T é um operador sobre f. Os principais processos de tratamento de imagens utilizados no reconhecimento de padrões após a aquisição da imagem são a conversão da imagem, caso colorida, em tons de cinza, a binarização, a detecção do contorno, e a segmentação [Gonzales & Woods 2000]. 4.2. Detecção de Pele A detecção da pele é um passo muito importante em muitos sistemas que utilizam visão computacional, como por exemplo, posicionamento de pessoas, detecção da mão e localização da face. Devido à grande quantidade de possíveis variações que os valores dos pixels podem sofrer em uma imagem digital, devido principalmente à iluminação, esta torna-se uma tarefa difícil. O processo de detecção de pele descrito por Gomez, Sanchez & Sucar (2000) pode utilizar-se de um espaço bidimensional, obtido quando se relaciona o componente E, do espaço de cor YES, com o componente R/G do espaço de cores RGB, resultando em um agrupamento com uma taxa de 95% de acerto, conforme ilustrado na Figura 4. Figura 4 - Espaço de cores para a detecção da pele [GOMEZ, SANCHEZ & SUCAR 2000]. No espaço de cor YES, o Y representa a componente luminância, como uma soma dos valores de R, G e B, e o E e S representam os fatores de crominância. O sinal no fator E é proporcional a diferença entre os canais de cor vermelho e verde, enquanto o fator de cor S é proporcional ao amarelo menos o azul [Lin 2003]. A Figura 5 ilustra os resultados obtidos com esta técnica em uma imagem digital. O processo de reconhecimento de pele é utilizado na etapa de validação da face detectada, como uma tentativa de eliminar possíveis falsos positivos. 32 Figura 5 - Imagem normal (a); Imagem com reconhecimento de pele (b). 4.3. Biblioteca OpenCV Para o processamento da visão computacional no projeto foi utilizado o OpenCV. OpenCV é uma biblioteca destinada à visão computacional desenvolvida pela Intel. É uma biblioteca open source, livre para uso comercial e de pesquisa sob a licença BSD, uma licença de código aberto considerada pouco restritiva quando comparada a outras licenças, pois se restringe principalmente ao reconhecimento dos autores. A biblioteca OpenCV provê uma série de facilidades quanto ao uso de funções algébricas, operações com matrizes, além de acesso facilitado a dispositivos de captura de imagens como webcams por exemplo. Lançada oficialmente em 1999, o projeto do OpenCV foi inicialmente desenvolvido pelos pesquisadores da Intel na tentativa de alavancar aplicações de grande porte, como projetos de Ray tracing em tempo real e interfaces 3D. Os objetivos do projeto foram descritos como: •Avançar a pesquisa em visão computacional, provendo não somente um código aberto, mas também otimizado para infra-estrutura básica da visão computacional. Não seria mais necessário reinventar a roda. •Alavancar a quantidade de aplicações comerciais baseadas em visão computacional, tornando-as portáveis, com código otimizado de graça, e com uma licença que permite que estas aplicações não sejam open source ou freeware. A versão final oficial foi liberada em 2000. O OpenCV encontra-se atualmente na versão 1.0 liberada em no final 2006. 4.4. Treinamento Para o processo de treinamento (Figura 6) precisa-se de uma grande base de dados contendo faces (imagens positivas) e não-faces (imagens negativas). Uma boa escolha para imagens de faces é a base de dados MIT CBCL Face Data, disponível para download por CBCL (2000). Esta base contém 2.429 imagens de faces e 4,548 imagens de não faces, além de possuir um conjunto de testes contendo 472 imagens de faces e 33 23.573 imagens de não-faces. Todas as imagens possuem a resolução de 19x19, em escala de cinza no formato pgm. Figura 6 - Processo de treinamento e testes. O primeiro passo é criar amostras de treinamento. Isto pode ser feito através da função cvCreateTrainingSamples, que recebe por parâmetros o nome da imagem, o nome de um arquivo que contenha uma lista de imagens negativas e o nome do arquivo de saída que será gerado pela função. Esse arquivo será usado no processo de treinamento. O processo de treinamento é executado através da função cvCreateTreeCascadeClassifier, onde são passados por parâmetro, o diretório onde serão geradas as informações do treinamento, o arquivo de amostras gerado no passo anterior e o arquivo com a lista de arquivos negativos. 5. Resultados As taxas de acerto na localização das faces em imagens coloridas com resolução de 640x480, com apenas uma face foi de 93,86%, para um conjunto de 750 imagens de 20 indivíduos diferentes (15 imagens de cada indivíduo), o que equivale a 704 faces identificadas. Houve 133 falsos positivos, dos quais 97 foram detectados como nãofaces pelo processo de reconhecimento de pele, o que equivale a 72,93% da quantidade total de falsos positivos. A Tabela 1 mostra os resultados obtidos. Tabela 1 - Tabela de Resultados Total de faces 750 Faces Identificadas 704 (93.86%) Falsos Positivos Falsos positivos identificados 133 97 (72,93%) 34 6. Conclusões As técnicas de Biometria estão sendo cada vez mais utilizadas atualmente, pois possibilitam uma melhor segurança e um melhor controle de acesso, do que outros métodos como cartões magnéticos e códigos de barras. Isto atende a diversos tipos de necessidade, tanto para restrição de acesso de usuários num microcomputador doméstico, quanto em grandes corporações controlando as áreas de acesso restrito e a freqüência de seus funcionários, ou até mesmo para uso em sistemas de segurança identificando suspeitos em aeroportos e locais públicos. O desenvolvimento e pesquisas de novos projetos de Biometria tornam-se necessário para assegurar que estas técnicas possuam uma maior confiabilidade em um futuro próximo. Estima-se que futuramente o uso da Biometria esteja ainda mais aprofundado na sociedade e que as pessoas não precisarão mais de senhas, chaves, cartões de acesso, para serem identificadas em meios digitais, pois a única chave seriam elas mesmas. Com o desenvolvimento do software de identificação de faces em imagens com duas dimensões, verificou-se através de testes que o mesmo possui uma quantidade satisfatória de acertos na localização de faces nas imagens, porém alguns erros ainda foram encontrados. Quando utilizado com o algoritmo de identificação de pele sua confiabilidade aumentou, com um nível maior de acertos, porém mantendo a marcação dos falsos positivos para garantir uma maior confiabilidade. A próxima etapa necessária para o desenvolvimento do software é a fase de reconhecimento facial, que poderá ser feita utilizando o método PCA para extração das Eigen Faces. Para reduzir a possibilidade de falhas e de tentativas de fraudes na utilização do software é importante a integração do reconhecimento facial com outras técnicas de Biometria, como por exemplo, a verificação através da íris. Por fim, seria importante a finalização do software preparando-o para a utilização juntamente a outros sistemas, possibilitando assim a sua integração com maior facilidade, o que o tornaria um software completo e pronto para a utilização. Referências Bibliográficas BBC (2006). Biometric Technology. Disponível em: http://news.bbc.co.uk/2/shared/ spl/hi/guides/456900/456993/html/nn2page1. Último acesso em dezembro de 2008. CBCL (2000), Face Recognition Database. Disponível em http://cbcl.mit.edu/ projects/cbcl/software-datasets/faces.tar.gz. Último acesso em novembro de 2008. Gomez, G., Sanchez, M., Sucar, L. E. (2000), On selecting an appropriate colour space for skin detection. Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition, CVRP, v.1. Gonzales, R. C. e Woods, R. E. (2000). Processamento de imagens digitais. Editora Blücher. São Paulo. Gonzales, R. C. and Woods, R. E. (2002). Digital ImageProcessing, Second Edition. Prentice-Hall, Inc. 35 Lin, Chiunhsiun (2003). Detection Of Human Faces Using Yes Color Space And Triangle-Based Approach. Disponível em: ftp://ftp.research.microsoft.com/Users/ PR-SpecialIssue/facedetect-6-lin.pdf. Último acesso em novembro de 2008. Microsoft (2008). Microsoft Visual Studio developer Center. Disponível em: http://msdn.microsoft.com/en-us/vstudio/default.aspx. Último acesso em: 14 de janeiro de 2009. OpenCV (2008). OpenCV Wiki. Disponível em: http://opencv.willowgarage.com/wiki/. Último acesso em 13 de fevereiro de 2009. Patin, F. (2003). An Introduction to digital image processing. Disponível em: http://www.yov408.com/imageproc/ImageProc.pdf. Último acesso em 14 de fevereiro de 2009. Russel, S. e Norvig, P. (2004). Inteligência Artificial. Editora Campus, São Paulo. WPI (2004). A Facial Recognition Primer. Disponível em: http://www.wpi.edu/News/ Transformations/2002Spring/recognition.html. Último acesso em 16 de janeiro de 2009. 36 Desenvolvimento de um Banco de Dados Geográficos para a Análise Espacial da Lashimaniose Visceral em Cametá-PA Cláudia Souza1, Douglas Gasparetto2, Cleice T. N. Souza3, Nelson Soffiatti4, Roberto Brandão5, Nelson Veiga6 1 Instituto Evandro Chagas, Laboratório de Geoprocessamento, [email protected] 2 Instituto Evandro Chagas, Laboratório de Geoprocessamento, [email protected] 3 Centro Universitário do Estado do Pará, Instituto Evandro Chagas, Laboratório de Geoprocessamento, [email protected] 4 Instituto Evandro Chagas, Laboratório de Geoprocessamento, [email protected] 5 Instituto Evandro Chagas, Laboratório de Geoprocessamento, [email protected] 5 Instituto Evandro Chagas, Laboratório de Geoprocessamento, [email protected] Resumo. Neste artigo é mostrado o desenvolvimento de um banco de dados geográfico para subsidiar a análise da distribuição espacial da incidência da Leshimaniose Visceral no município de Cametá, no estado do Pará. Para tal objetivo desenvolveu-se um banco de dados geográfico com dados ecoepidemiológicos utilizando o PostGis. Após o processo do projeto lógico e físico da base de dados foi elaborado “queries” de consultas espaciais, conectadas ao PostGis, para a extração de informações. Posteriormente, utilizou-se o SIG OpenJump para a elaboração dos mapas temáticos. Como resultado observou-se que com as consultas espaciais, obtêm um rápido resultado sobre quais possíveis criadouros são propícios a proliferação da doença, utilizando as tecnologias PostGis e OpenJump, possibilitando expressar visualmente a incidência da doença de Leishimaniose Visceral no município estudado. 1. Introdução A Leishimaniose Visceral (LV), também conhecida como Calazar, é uma doença parasitária cujo agente etiológico é o protozoário do gênero Leishimania, sua transmissão é feita através da picada do mosquito flebotomíneo, conhecido popularmente por mosquito palha ou birigui [Waldman e Rosa 1998]. Segundo a Organização Mundial de Saúde (OMS), as Leishmanioses afetam cerca de dois milhões de pessoas por ano, com 500 mil casos de forma visceral. É também considerada emergente em indivíduos portadores de infecção pelo vírus da imunodeficiência adquirida (HIV), tornando-se umas das mais importantes doenças da atualidade [Ministério da Saúde 2004]. O registro do primeiro caso da doença no Brasil ocorreu em 1913, quando Migone, no Paraguai, descreveu o caso em material de necropsia de paciente oriundo de Boa Esperança, Mato Grosso. 37 No âmbito epidemiológico – área do conhecimento que estuda a freqüência da distribuição ou eventos relacionados à saúde em populações específicas e a aplicação desses estudos no controle dos problemas de saúde [Waldman e Rosa 1998] – o geoprocessamento têm sido adotado como uma ferramenta de integração de dados ambientais, socioeconômicos e de saúde que permite realizar o mapeamento de doenças [Resendes et al. 2007]. Nesse contexto, sistemas de informação e banco de dados têm sido utilizados em diversos estudos como suporte a dados geográficos. Logo, Sistemas de Informação Geográficos (SIGs) e Banco de Dados Geográficos (BDGs) quando integrados possibilitam a análise, manipulação e recuperação de dados geográficos. Entre as tecnologias de Sistemas Gerenciadores de Banco de Dados Espaciais (SGBDE), aplicadas ao contexto de software livre (SL), o módulo de extensão espacial PostGis do PostGreSQL foi adotado neste estudo, por apresentar uma grande quantidade de funções espaciais. Além da seção introdutória, este artigo está organizado da seguinte forma: na Seção 2 é apresentada uma descrição sobre a localização da área que está sendo estudada; na Seção 3 é detalhada a metodologia adotada no estudo; na Seção 4 são apresentados os resultados obtidos pelas análises desenvolvidas na presente pesquisa. 2. Caracterização da Área de Estudo 2.1. Localização da Área de Estudo O Sistema de Informação de Agravos e Notificação (SINAN) apresenta um relatório gerencial a respeito de todos os casos notificados (sejam clinicamente confirmados ou não) sobre a doença LV no município de Cametá-PA. A Tabela 1 apresenta os dados retirados do sistema que correspondem aos períodos de 2007 a 2008. Tabela 1. Relatório Gerencial de todos os casos notificados de LV, no período de 2007 a 2008, em Cametá-PA. Fonte: SINAN Leshimaniose Visceral - Cametá Notificados Notificados fora pelo Município do Município 2007 2008 2007 2008 Número Absoluto 247 26 26 1 90.48 96.30 Porcentagem % % 9.52% 3.70% Total de Registro 273 1 Observando-se a expressividade da incidência da LV, nos períodos correspondentes, através dos registros apresentados, o povoado Enseada e os lugarejos Ajó, Vacaria e Vacajó localizados a norte e ao sul de Cametá-PA, cuja sede pertence à Mesorregião do Nordeste Paraense e a Microrregião de Cametá, foram as localidades alvos para a análise espacial da distribuição da doença. A localização geográfica da sede municipal corresponde às seguintes coordenadas: 02º14’54’’ de latitude Sul e 38 49º30’12’’ de longitude a Oeste de Greenwich. A Figura 1 apresenta o mapa temático referente à localização geográfica do município em estudo. Figura 2. Mapa Temático da área de estudo: Cametá, no estado do Pará. Fonte: Laboratório de Geoprocessamento/SVS/MS 2.2. Aspectos Sócio-Econômicos O padrão de transmissão da doença de LV vem mudando ao longo dos anos, predominado pelas características ambientais, rurais e periurbanas. Nesse sentido, baseado em levantamentos bibliográficos e questionário sócioeconômico local, percebe-se o ecletismo de subsistência das famílias, como por exemplo: cultivo de hortaliças e banana, de consumo diário nas feiras de Cametá onde a mercadoria circulante é convertida em mais-valia, desta forma, a criação de aves e suínos, prática comum entre os municípios diminui, limitando-se ao escambo entre as famílias. Há também a criação de animais domésticos, como cães (principais reservatórios do vetor da LV), em perodomicílio, desta forma, contribuindo para a aproximação do vetor da doença, a Figura 2 demonstra as características do ambiente vivenciado pelas famílias no município em questão. Devido a estes fatores, o caráter endêmico da LV vem se constituindo num grande desafio para as autoridades de saúde local, dada a grande mobilidade social da região. 39 Figura 2. Aspectos Sócio-Econômicos Locais, em Cametá-Pa Fonte: Laboratório de Geoprocessamento/SVS/MS 3. Metodologia O método de pesquisa deste trabalho foi estruturado em uma seqüência de cinco etapas principais: (a) levantamento do referencial teórico sobre Vigilância em Saúde (VS) e Epidemiologia da Leshimaniose Visceral; (b) georreferenciamento de dados ecoepidemiológicos coletados em campo, utilizando o Sistema de Posicionamento Global (GPS); (c) desenvolvimento de um BDG utilizando o SGBDE Postgis e (e) realização de uma análise espacial subsidiada por mapas temáticos que expressam a distribuição espacial da incidência da Leshmaniose Visceral nas áreas de estudos preconizadas. Nas subseções a seguir são apresentadas as geotecnologias adotadas que subsidiaram o desenvolvimento da expressão visual (mapas temáticos) que representam a relação espacial do fenômeno ecoepidemiológico que está sendo estudado. 3.1. Sistema Gerenciador de Banco de Dados Geográficos (SGBDE): PostGis O PostGis é a extensão espacial do PostGreSQL, tal módulo é responsável por adicionar entidades geográficas ao seu SGBD. O PostGis possibilita armazenar, recuperar e analisar dados espaciais em um SIG [PostGis 2005]. O SGBDE apresenta um número expressivo de funções espaciais/topologias que são utilizadas para subsidiarem análises espaciais. No contexto deste trabalho, tais funções são aplicadas para a análise ecoepidemiológica referente à distribuição espacial de reservatórios, criadouros ou vetores de transmissão da doença Leshimaniose Visceral. Nesse sentido, o artigo apresenta o processo de geração dos scripts de criação do banco de dados no PostGis. 40 1. Primeiramente, foi implementada a tabela Paciente que objetiva armazenar, por exemplo, as informações sobre os diagnósticos laboratoriais dos prováveis indivíduos com LV. • Query: CREATE TABLE paciente (codPaciente PRIMARY KEY, localidade varchar, nome varchar, sexo varchar, idade number, resultado varchar); 2. Posteriormente, foi desenvolvido a tabela Pontos_Estudo. A tabela armazena registros das possíveis localidades que podem abrigar ou proliferar o vetor da doença LV. • Query: CREATE TABLE Pontos_Estudo (gid serial PRIMARY KEY, nome_areas varchar, latitude varchar, longitude varchar, y_coord float,x_coord float); SELECT AddGeometryColumn('Pontos_Estudo_geom','the_geom','4291','POINT',2); A execução das principais consultas espaciais suportadas pelo PostGis são demonstrada pelo SIG, conforme abordado abaixo. 3.2. Sistema de Informação Geográfica (SIG): OpenJump Conforme apresentado na Introdução, o SIG tem o intuito de realizar o armazenamento, manipulação e análises espaciais complexas contidas em bases de dados cartográficas georreferenciadas e banco de dados produzidos na estrutura relacional, como por exemplo, os ambientais e epidemiológicos [Souza et al. 2008]. O OpenJump é um SIG desenvolvido em tecnologia Java, baseado no modelo de negócios SL. O SIG permite a manipulação topológica sobre geometrias 2D, o acesso de feições no formato shapefile e possui suporte a dados armazenados no PostGis [Destro, 2007]. Nesse sentido, o SIG foi utilizado para realizar a conexão com o datastore no PostGis e as consultas espaciais. A Figura 3(a) apresenta o construtor de consultas espaciais utilizado para a implementação da função intersection. Tal função objetiva mostrar os a localização precisa de indivíduos positivados laboratorialmente para LV. A Figura 3(b) apresenta um fragmento do mapa temático, no SIG OpenJump, da distribuição espacial dos casos confirmados de transmissão da LV. Figura 3(a). OpenJump: Construtor de Consultas Espaciais 41 Figura 3(b). Visualização da distribuição de casos confirmados de transmissão da LV, utilizando o SIG OpenJump. 4. Resultados e Discussões Como abordado na Seção 2.2, as condições sócio-econômicas das localidades de Enseada, Ajó, Vacaria e Vacajó contribuem significativamente para a aproximação do vetor da doença (flebotomíneo) em áreas de reservatórios naturais. Nesse sentido, o trabalho objetivou utilizar geotecnologias livres para o suporte das análises espaciais da distribuição da doença em Cametá, no estado do Pará. As consultas espaciais desenvolvidas a partir das funções espaciais/topológicas do SGBDE PostGis viabilizaram análises epidemiológicas mais precisas. Tais análises foram expressas através de mapas temáticos produzidos pelo ambiente OpenJump. Ressalta-se, que o SIG apresentou um bom desempenho quando conectado ao PostGis, no sentido, de realizar consultas espaciais mais amigáveis. Ressalta-se que tais geotecnologias, quando integradas, possibilitaram, no contexto desta pesquisa mapear os indivíduos confirmados laboratorialmente, como portadores do parasita da doença de LV. Referências Bibliográficas Destro, J. N.; Modelo para WEBMAP: Um estudo de Caso. 2007. 31 f. Dissertação (Mestrado em Ciências Geodésicas). Pós-Graduação em Ciências Geodésicas. Universidade Federal do Paraná. 2007. Ministério da Saúde. Guia de Vigilância Epidemiológica ed. MS. Brasília-DF, 2004. OpenJump. Disponível em: <http://openjump.org/wiki/show/HomePage>. Acesso em 21/01/2009. Postgis, 2005. Disponível em:< http://postgis.refractions.net/>. Acesso em: 21/01/2009. Resendes, Ana Paula da Costa.; Barcellos, Christovam.; Skaba, Daniel Albert.; Oliveira, Evangelina Xavier Gouveia de.; Gondim, Grácia Maria de Miranda.; Rojas, Luisa 42 Basilia Iñiguez.; Pina, Maria de Fátima de.; Magalhães, Mônica de Avelar F.M.; Santos, Reinaldo Souza dos.; Gracie, Renata.; Santos, Simone M. Sistemas de Informações Geográficas e Análise Espacial na Saúde Pública. Série: Capitação e atualização em geoprocessamento em saúde. Volume 2, 2007. Souza, C., Gasparetto, D., Souza, C.T.N, Soffiatti, N.F.L., Veiga, N. (2008). “Análise Ecoepidemiológica da Incidência da Doença de Chagas em Abaetetuba, Barcarena e Bragança, no estado do Pará, entre 2000 e 2006, utilizando Geotecnologias Livres”. XV Simpósio Brasileiro de Sensoriamento Remoto, 2009. Waldman, Eliseu Alves; Rosa, Teresa Etsuko da Costa. Vigilância em Saúde Pública. 1998. Disponível em: <http://www.saude.sc.gov.br/gestores/sala_de_leitura/ saude_e_cidadania/ed_07/index.html>. Acesso em: 10.nov.2008. 43 Rastreamento de Jogadores de Futebol em Seqüência de Imagens Rodrigo D. Arnaut1, Anna H. R. Costa2 1 Universidade de São Paulo, Escola Politécnica, Departamento de Engenharia de Computação e Sistemas Digitais, [email protected] 2 Universidade de São Paulo, Escola Politécnica, Departamento de Engenharia de Computação e Sistemas Digitais, [email protected] Resumo. Este trabalho propõe um sistema de rastreamento visual de jogadores de futebol, o qual estima as trajetórias 2D em seqüências de imagens capturadas por câmeras fixas, instaladas ao redor de um campo de futebol. O rastreamento permite determinar diversos parâmetros como, por exemplo, a velocidade e a distância percorrida pelos jogadores durante uma partida, a região de maior movimentação da equipe no campo, etc. O sistema proposto segue uma abordagem probabilística, alcançando bons resultados iniciais. Os experimentos mostraram que uma implementação inicial do sistema, utilizando somente informação de variação da intensidade luminosa das imagens, já apresenta resultados eficazes e eficientes e permite vislumbrar melhorias significativas a serem desenvolvidas. 1. Introdução Informações estatísticas extraídas do rastreamento de jogadores de futebol, como velocidade e distância percorrida, movimentação da equipe no decorrer do jogo, entre outras, podem ser de extrema relevância para um entendimento mais acurado de uma partida de futebol, tornando-se ferramentas de grande importância para emissoras de televisão, clubes e técnicos de futebol [Borg 2007], motivando pesquisas e desenvolvimentos na área. O objetivo deste trabalho consiste em propor e implementar um sistema de rastreamento visual de jogadores de futebol que seja eficaz e eficiente, dominando o conhecimento existente e permitindo a adoção de técnicas de rastreamento para enriquecer as análises do esporte mais popular em nosso país, o futebol. Neste trabalho utilizam-se imagens de uma câmera fixa instalada ao redor de um campo de futebol. Ainda há muito interesse em pesquisa e desenvolvimento neste tema, pois a técnica de rastreamento de alvos é muito desejada em sistemas onde o acesso a instalação de sensores nos alvos seja difícil ou até impossível, necessitando de uma abordagem não invasiva, o qual é possibilitado por análise visual de imagens. As origens do rastreamento visual foram em aplicações militares, mas logo a técnica se espalhou para aplicações de segurança e monitoramento de pessoas, produções cinematográficas, computação gráfica e estatística [Grewal, Weill e Andrews 2007]. Recentemente, alguns estudos na área de rastreamento visual de alvos para esportes, mais especificamente para jogadores de futebol, foram implementados [Beetz et al. 2007, Borg 2007, Xu et al. 2005], mas poucos conseguiram definir claramente o melhor caminho para o emprego desta técnica, nem 44 sempre indicando os recursos necessários de hardware e software, nem descrevendo em detalhes a técnica empregada para a obtenção dos resultados mostrados no rastreamento. Este artigo descreve a proposta e implementação de um sistema de rastreamento visual de jogadores de futebol, o qual estima as trajetórias 2D em seqüências de imagens capturadas por câmeras fixas, instaladas ao redor de um campo de futebol. O sistema proposto segue uma abordagem probabilística e utiliza, nesta implementação inicial, somente informação de variação da intensidade luminosa das imagens. Os experimentos mostram alguns resultados animadores e permite que se vislumbre importantes derivações, visando tornar o sistema eficaz e eficiente na aplicação desejada. O restante deste artigo está organizado da seguinte forma: na seção 2 são detalhados alguns trabalhos correlatos relevantes; a proposta é apresentada na seção 3; diversos experimentos foram conduzidos e os resultados de alguns deles são descritos na seção 4. Finalmente, na seção 5 apresenta-se a conclusão e os trabalhos futuros. 2. Trabalhos Correlatos Devido às diversas análises estatísticas que se consegue derivar de um rastreamento de jogadores, a área de pesquisa de rastreamento visual de alvos tem atraído o interesse de diversos pesquisadores, uma vez que a análise de seqüências de imagens permite o desenvolvimento de um sistema de rastreamento não invasivo. A maioria das propostas com resultados mais significativos adota uma abordagem probabilística de rastreamento visual automático [Beetz at al 2007, Borg 2007, Xu et al 2005] A proposta de De Bem (2007) efetua o rastreamento de alvos com formas heterogêneas em seqüências de imagens empregando a utilização de dois filtros de Kalman [Kalman 1960, Welch e Bishop 1995] acoplados para cada alvo, um que estima a translação de pontos do contorno do alvo, chamado de pontos de controle, e outro que estima a velocidade de deslocamento e a variação de escala, sofrida pelo mesmo, em duas imagens consecutivas. O sistema possui duas etapas: inicialização e rastreamento. Na inicialização são detectados os alvos de interesse para o rastreamento, utilizando técnicas padrões de processamento de imagens, e também são definidas as estimativas dos estados iniciais para cada filtro de Kalman, em cada alvo. As estimativas são feitas com base na translação dos pontos de controle, pelo deslocamento sofrido em relação ao centro de área do contorno e pela variação da medida do centro de área a um ponto do contorno do alvo, na seqüência de imagens. Na etapa de rastreamento inicia então a execução recursiva das etapas de predição, observação e correção de cada filtro, com base nos modelos de movimento e de observação para estimar a trajetória de cada alvo. Os modelos de movimento são definidos pelas posições dos pontos de controle, pela velocidade de deslocamento e pela variação do fator de escala do contorno dos alvos (conforme descrito na etapa de inicialização), e o modelo de observação é definido por meio de linhas de medidas transversais ao contorno de cada alvo, passando sobre os pontos de controle, de forma a tornar a análise de imagem mais eficiente, uma vez que o contorno de cada alvo, em cada imagem, é processado no espaço 1D da linha, buscando variações do contraste luminoso que separa o alvo do fundo da cena. Assim, a variável de estado do sistema de De Bem é dada pelo conjunto de i pontos de controle, dados por suas coordenadas (xi , yi) na imagem atual, pela velocidade (vx , vy) do 45 centro de área do contorno do alvo e pela alteração de escala s em duas imagens consecutivas. Para manter a linearidade do sistema, permitindo o uso do filtro de Kalman, separou-se o sistema em dois módulos, cada um com um estimador por filtro de Kalman: um que estima os parâmetros de velocidade e escala, e outro que estima os parâmetros de posição dos pontos de controle do contorno do alvo. O trabalho apresentado por Xu et al (2005) aplica o filtro de Kalman para o rastreamento de jogadores com câmeras fixas. O sistema é dividido em dois passos principais. No primeiro passo é feita a detecção dos alvos nas imagens utilizando técnicas de subtração de fundo, atualização dinâmica de modelo de fundo de cena e fechamento morfológico da imagem processada [Gonzalez e Woods 1993]. Como resultados são gerados, além do número total de alvos detectados, o centro de área e o retângulo envolvente de cada alvo. Na segunda etapa é executado o rastreamento dos alvos com um filtro de Kalman para cada alvo, utilizando uma representação do retângulo envolvente e o centro de área de cada jogador, como variáveis de estado x, x = [ rc cc vrc vcc ∆r1 ∆c1 ∆r2 ∆c2 ]T , sendo que a seguinte medida z é extraída de cada imagem z = [ rc cc r1 c1 r2 c2 ]T , onde rc e cc são os centros de área do retângulo envolvente a cada jogador; vrc e vcc representam a velocidade de translação entre quadros do centro de área do retângulo envolvente; r1, c1, r2, c2 representam os pontos superior esquerdo e inferior direito do retângulo envolvente, respectivamente, sendo r1 < r2 e c1 < c2; ∆r1, ∆c1, ∆r2 e ∆c2 representam as posições relativas dos pontos r1, c1, r2, c2 do retângulo até o centro de área, conforme ilustra a Figura 1. Figura 1. Centro de área e retângulo envolvente do alvo. Os autores assumiram que existe pouca variação dos valores de altura e largura do retângulo envolvente do alvo entre quadros consecutivos e que a área do retângulo é 46 observável em todos os quadros. Este fato não ocorre quando há oclusão dos alvos; entretanto, os autores propuseram uma abordagem bastante simples para tratar por uma curta seqüência de quadros de imagem, de forma aproximada, variações grandes derivadas de oclusão. Na abordagem proposta, os retângulos envolventes não são atualizados enquanto houver extração, na imagem processada, de retângulos envolventes com grandes variações de dimensões; os mesmos só são novamente atualizados quando o processamento da imagem atual extrair retângulos com dimensões compatíveis com os anteriormente processados. Este processo está ilustrado na Figura 2, onde os quadros superiores mostram os dados processados e os inferiores, os quadros originais de imagem, com superposição dos retângulos envolventes estimados e das trajetórias percorridas pelos alvos. Observe a oclusão nos quadros intermediários. Figura 2. Detecção e Rastreamento de Jogadores, com tratamento simples de oclusão (figura extraída de [Xu et al. 2005]). ASPOGAMO (Automated SPOrt Game Analysis MOdel) é um trabalho da universidade de Munique, Alemanha, com o objetivo de rastrear visualmente jogadores de futebol em uma partida, utilizando imagens das câmeras disponíveis de emissoras de TV, determinando a trajetória e as coordenadas da posição de cada jogador dentro de determinadas cenas [Beetz et al 2007]. As trajetórias dos alvos são determinadas no plano 3D do campo de futebol, representando as posições em cada instante de tempo de cada jogador, em coordenadas do mundo real. Três problemas foram abordados neste projeto: a estimação da direção da câmera e do fator de zoom, já que neste caso trata-se de câmeras de TV; a detecção e o rastreamento dos jogadores; e a identificação dos jogadores rastreados. O sistema foi testado com sucesso durante a Copa do Mundo de 2006, na Alemanha. O interesse maior do projeto ASPOGAMO em relação ao trabalho reportado no presente artigo está na etapa de detecção e rastreamento dos jogadores. Para a detecção de jogadores, ASPOGAMO emprega um método de segmentação de bordas externas, baseado no modelo de tamanho dos alvos e no modelo de cores dos uniformes da equipe, estes modelos devem estar previamente cadastrados. Os jogadores são localizados utilizando a estimação pelo centro de área. Para a etapa de rastreamento foi utilizado o MHT (Multiple Hypothesis Tracker) [Cox e Hungarian 1996], melhorando a eficácia do rastreamento de alvos, que normalmente é corrompido por diferentes erros de medidas, tais como: indicação invertida das categorias dos jogadores, observações de falso-positivo (ruído interpretado como detecção de algum alvo) e falso-negativo (jogadores não detectados), entre outros. As variáveis de entrada para o MHT são as posições dos jogadores e as matrizes de covariâncias de medidas. Para cada hipótese do rastreamento dos alvos é utilizado um novo filtro de Kalman no MHT, com o vetor de estado dado por x = [x y v v ] , onde x e y são as coordenadas do contorno dos alvos e vx e vy suas respectivas velocidades de translação entre T x 47 y quadros, todas definidas em pixels. O vetor de medidas é z k = [ x y ]T . Somente translações são consideradas entre quadros. A principal desvantagem na implementação do MHT está na complexidade computacional da técnica, a qual utiliza múltiplas hipóteses de rastreamento para cada alvo em cada quadro analisado [Cox e Hungarian 1996]. Os três trabalhos descritos nesta seção representam trabalhos significativos da literatura na área de rastreamento visual de jogadores de futebol, pois demonstram eficiência e eficácia na tarefa de interesse e serviram de inspiração para a proposta descrita neste artigo. A Tabela 1 sumariza as principais características de cada um, salientando suas similaridades e discrepâncias com vantagens e desvantagens. Tabela 1. Tabela comparativa dos trabalhos correlatos. Trabalho Correlato De Bem (2007) Técnica de Estimação Dois filtros de Kalman para cada alvo Câmeras Fixas Vantagem Desvantagem Sim Bom desempenho, fácil detecção e livre definição de tamanho e forma do contorno dos alvos. Difícil modificação da variável de estado devido ao acoplamento dos filtros. Representação de contorno mais complexa. Limitação na definição do contorno dos alvos; Problemas quando ocorre variação do tamanho do alvo Alta complexidade computacional; Baixo desempenho. Xu et al (2005) Um Filtro de Kalman para cada alvo Sim Excelente desempenho, fácil detecção do retângulo envolvente dos alvos. Beetz et al (2007) Um MHT para cada alvo (um novo filtro de Kalman para cada hipótese, para cada alvo) Não Exatidão na Estimação. 3. Proposta Os estudos dos trabalhos correlatos de rastreamento de alvos mostram que o trabalho desenvolvido por De Bem (2007) estabelece um bom compromisso entre eficiência computacional e boa descrição do contorno dos alvos, sendo, assim, adotada como base neste trabalho. Entretanto, como a técnica não havia sido usada anteriormente para rastreamento de jogadores de futebol, objetivou-se também verificar a adequação da técnica à nova aplicação. A proposta deste trabalho de rastreamento de jogadores de futebol está esquematizada na Figura 3, composta pelo módulo de leitura de arquivos de vídeo, seguido pelos módulos de detecção de alvos, de inicialização, de rastreamento do contorno e do movimento e, finalmente, o módulo de geração das coordenadas 2D dos alvos nas imagens. O módulo de leitura de arquivos de vídeo nada mais faz do que tornar acessível ao sistema de rastreamento uma seqüência de quadros de imagens, que foram previamente 48 capturados, para serem posteriormente processados. No caso, a câmera utilizada é fixa e colocada em volta do campo, sem alteração de seus parâmetros de zoom, pan, titl e luminância durante o processo de aquisição. Leitura de Arquivos de Vídeo Detecção de Alvos Representação Inicialização Rastreamento Figura 3. Módulos da proposta atual. O módulo de detecção de alvos, que são os jogadores, tem como objetivo separar os objetos de interesse do restante da imagem. Utiliza-se a técnica de subtração de fundo, que consiste na subtração, pixel por pixel, de uma imagem atual da seqüência por uma imagem de referência do fundo da cena. Estipulou-se um valor de limiar para detectar os pixels que diferem significativamente da referência do fundo de cena. Posteriormente, algoritmos são aplicados para eliminar ruídos e corrigir falha na segmentação. Em seguida, determina-se um polígono envolvente correspondente ao contorno de cada alvo segmentado e, finalmente, o polígono envolvente é representado por uma B-spline. Uma representação baseada em contornos mostra-se interessante, pois permite uma descrição mais precisa dos alvos, em comparação, por exemplo, com o uso de retângulos envolventes, usados nos trabalhos de Xu et al (2005) e de Beetz et al (2007). Além disso, um modelo único deste tipo de representação é capaz de adaptar-se dinamicamente a alvos com formas heterogêneas. O uso de B-splines é amplamente difundido na literatura de rastreamento visual [MacCormick e Blake 2000], sendo capazes de representar desde contornos triviais até formas mais complexas com a utilização de um pequeno número de parâmetros (chamados de pontos de controle), descrevendo os alvos de modo simples e efetivo, com baixo custo computacional. Uma função B-spline x(u) de ordem k (grau k−1) é uma soma ponderada de M funções base B k (u ), i = 0, ..., M−1, e definida como [Bartels, Beatty e Barsky 1987]: i M −1 x(u ) = ∑ xi Bik (u ) , 0 ≤ u ≤ M − 1 i =0 sendo xi denominados pontos de controle, aplicados às respectivas funções base Bik (u ). A curva x(u) é gerada à medida que u é variado de 0 a M−1. A Figura 4-a ilustra a B-spline de um contorno, sendo os pontos de controle representados por estrelas. Cada alvo é representado pelo conjunto de pontos de controle que definem a B-spline que modela o seu contorno. 49 O módulo de inicialização cria os modelos de movimento do alvo, dados pelo processamento do módulo de detecção em quadros consecutivos, de forma a estimar, além do contorno do alvo nos dois quadros, qual a velocidade de translação sofrida pelo centro de área do contorno B-spline do primeiro quadro em relação ao segundo, dada por vk, e calcular a transformação de escala (crescimento ou diminuição da área interna) do contorno do alvo nos dois quadros, sk, dada pela variação da medida entre o centro de área e um ponto de controle sobre o contorno do alvo, nos dois quadros. Desta forma, a variável de estado do rastreamento é composta pelo conjunto de pontos de controle do contorno B-spline e por vk e sk, para cada alvo. Devido à separação em dois e acoplamento das partes do sistema a fim de torná-lo linear, para cada alvo são utilizados dois filtros de Kalman para efetuar a estimação, um que estima a posição dos pontos de controle no próximo quadro e outro, a velocidade de deslocamento entre quadros do centro de área e a variação entre quadros na medida entre o centro de área e um específico ponto de controle, que dá a variação de escala do contorno. O módulo de inicialização também é responsável por atribuir valores iniciais aos parâmetros de ambos os filtros. Os filtros de Kalman são executados no módulo de rastreamento e são acoplados entre si. Eles caracterizam-se pelas etapas de predição, observação e correção da estimação. No filtro de Kalman que estima o contorno, baseada na estimativa anterior, novas posições para o contorno são preditas na próxima imagem, com base nas estimativas do filtro de Kalman que estima o fator de escala e a velocidade: xk = vk −1 + xk −1 + sk −1 ( xk −1 − ck −1 ), sendo xk a predição da posição no instante k do ponto de controle e xk−1, do instante k−1, vk−1 é a estimativa da velocidade de translação do centro de área ck−1, e sk−1 é a estimativa da escala. O acoplamento é pela predição de um filtro usar dados do outro. Ao redor desta predição, o verdadeiro contorno é buscado na imagem na fase de observação. Com a diferença entre as posições dos pontos de controle preditas e as determinadas na imagem, a correção da estimação é realizada. O mesmo processo é feito pelo outro filtro, porém considerando que v e s se mantêm de k a k−1. (b) (a) Figura 4. (a) Exemplo de uma B-spline e seus pontos de controle. (b) Exemplo de uma B-spline com 24 linhas de medida. 50 Para que o contorno no próximo quadro seja determinado, no presente trabalho optou-se pela utilização de linhas de medida no modelo de observação dos objetos devido ao baixo custo computacional associado, à flexibilidade desta abordagem e à boa adequação ao modelo de representação baseado em contornos construídos com B-splines. Estas linhas são normais aos contornos, distribuídas uniformemente e fixas por seu ponto central ao longo do contorno gerado com a B-spline. No processamento do sistema, há necessidade de buscar somente sobre as linhas de medida, as variações de luminosidade na imagem, de forma a definir o contorno de cada alvo. A Figura 4-b mostra um contorno descrito por Bspline com 24 linhas de medida. 4. Resultados Experimentais O sistema descrito na seção anterior foi testado em alguns experimentos. As seqüências de imagens foram capturadas com câmeras fixas, instaladas ao redor de um campo de futebol real. Foram executados testes de detecção e rastreamento de alvos, aplicados a seqüência de imagens de uma partida de futebol. O emprego de câmeras fixas neste tipo de aplicação permite, em trabalhos futuros, a combinação de até 16 câmeras para adquirir imagens de todo o campo de visão, permitindo executar o rastreamento de todos os jogadores no espaço tridimensional. Os principais problemas do rastreamento de alvos, que causavam muitas vezes a divergência dos filtros e que foram detectados em testes preliminares são: a alteração brusca na forma e na velocidade de deslocamento dos alvos, a movimentação dos alvos rastreados por regiões que ultrapassam os limites da imagem, a oclusão parcial dos alvos, o tratamento simultâneo de múltiplos alvos que estão presentes na mesma seqüência de imagens e a alteração na iluminação do fundo da cena ao longo do tempo. (b) (a) Figura 5. Resultados do teste de rastreamento. (a) Amostra da seqüência de imagens com 160 quadros e o resultado do rastreamento. (b) Trajetória estimada do alvo na imagem. Os resultados de alguns testes, para ilustrar a execução do sistema, são mostrados nas Figuras 5 e 6. Na Figura 5-a observa-se que o contorno do alvo está próximo de um contorno razoável, pois o contorno (em vermelho) envolveu o jogador alvo dentro de seus limites, mesmo com a baixa quantidade de pixels apresentada pelas imagens do jogador (pois a 51 câmera estava muito distante do alvo). Outro resultado interessante de observar é a suavidade apresentada pela trajetória estimada do alvo rastreado, dada pela posição do centro de área do contorno envolvente ao alvo, ilustrada no gráfico da Figura 5-b. A figura 6 ilustra as dificuldades do sistema em lidar com oclusão, já que esta capacidade ainda não foi tratada na implementação atual. O tratamento de oclusões não é um problema fácil de ser solucionado e exige maiores estudos para ser bem resolvido, uma vez que o mesmo é relevante e ocorre com bastante freqüência nas imagens. O uso de um maior número de câmeras com superposição de ângulo de visada poderia reduzir o impacto negativo no rastreamento causado pela oclusão e é uma possibilidade a ser testada, apesar de ser uma solução com maior custo de implantação. Do quadro inicial ao quadro 40, que corresponde à curva traçada da posição (210,38) à (315,84) no gráfico da Figura 6-b, nota-se certa suavidade e continuidade da trajetória do alvo. Entretanto, após a oclusão, nota-se uma descontinuidade na curva descrita pela trajetória, o que corresponde ao fato do sistema de rastreamento ter perdido o alvo. (b) (a) Figura 6. (a) Quadros 20, 40, 46, 60, 80 e 99 ilustrando uma seqüência de imagens que apresenta oclusão parcial de um alvo entre os quadros 30 e 50 (jogador na parte superior), provocando a divergência do sistema de rastreamento. (b) Trajetória real estimada do centro de área do contorno do alvo (jogador na parte superior) em coordenadas x e y determinadas em pixels. 5. Conclusão Este artigo propôs um sistema de rastreamento eficiente, que utiliza dois filtros de Kalman acoplados para a estimação da forma e do movimento de cada alvo, em imagens com múltiplos alvos a serem rastreados. O sistema proposto rastreia contornos de alvos descritos 52 por B-splines, o que possibilita seu uso para o rastreamento de diversos alvos, com diferentes formas. O uso de dois filtros acoplados elimina a necessidade de uso de um filtro de Kalman estendido, já que a separação da estimação em duas partes (forma e movimento) torna o sistema linear, garantindo eficiência de resposta. Os principais problemas a serem resolvidos, identificados nos testes preliminares são: executar ajustes nos parâmetros visando melhorar a eficácia do sistema, melhorando o contorno do alvo no rastreamento; introduzir um processo eficaz para tratar oclusão parcial entre alvos. A maior contribuição deste trabalho está na proposta de uma solução para o rastreamento de jogadores, utilizando câmeras fixas e com baixo custo computacional. Entretanto, o sistema proposto ainda precisa ser mais bem ajustado para seu emprego efetivo em sistemas comerciais. Em trabalhos futuros será necessário remodelar as variáveis de estado do modelo de movimento e observação. Elas precisam ser simples, para aplicações em tempo real, mas que garantam uma boa precisão do rastreamento. Referências Bibliográficas Bartels, R., Beatty, J. e Barsky, B. (1987) An Introduction to Splines for use in Computer Graphics and Geometric Modeling , Morgan Kaufmann, Los Altos, USA. De Bem, R. A. (2007). “Uma abordagem livre de modelo para rastreamento de objetos em seqüência de imagens”. 84 p., Dissertação (Mestrado em Engenharia Elétrica), Escola Politécnica, Universidade de São Paulo, São Paulo. Beetz M., Gedikli S., Bandouch J., Kirchlechner B., Hoyningen-Huene N. V., Perzylo A. (2007) “Visually Tracking Football Games Based on TV Broadcasts”. In: Proc. XX Int. Joint Conference on Artificial Intelligence IJCAI 2007, v.1, p. 2066-2071. Borg, J. (2007) “Detecting and Tracking Players in Football Using Stereo Vision”. Thesis (Master), Department of Electrical Engineering, Linköping University, SE. Cox, I. J., Hingorani, S.L. (1996) “An efficient implementation of Reid’s multiple hypothesis tracking algorithm and its evaluation for the purpose of visual tracking”. In: IEEE Trans. on Pattern Analysis and Machine Intelligence, 18(2), 138-150. Grewal, M.S., Weill, L.R. e Andrews, A.P. (2007) Global Positioning Systems, Inertial Navigation, and Integration. Wiley-IEEE Press, 2nd Edition, 552 p. Gonzalez, R. C., Woods R. E. (1993) “Digital Image Processing”. EUA: Ed Addison Wesley, 716 p. Kalman, R. E. (1960) “A New Approach to Linear Filtering and Prediction Problems”. In: Transaction of the ASME Journal of Basic Engineering, 82 (Series D), 35-45. MacCormick, J., Blake, A. (2000) “Probabilistic Exclusion Principle for Tracking Multiple Objects”, Int. Journal of Computer Vision, 1(39), 57-71. Welch, G., Bishop, G. (1995) “An Introduction to the Kalman Filter”. Tec. Report: TR95041, University of North Carolina at Chapel Hill, NC, EUA. Xu, M., Orwell, J., Lowey, L., Thirde, D. (2005) “Architecture and algorithms for tracking football players with multiple cameras”. IEE Proc. Vision, Image and Signal Processing, 152(2), 232-241. 53 Tutorial para o Desenvolvimento de Jogos 2D usando a Linguagem Java Soraia Teixeira Barbosa1, Carlos Vitor de Alencar Carvalho2 1 Universidade Severino Sombra, Centro de Ciências Exatas e Tecnológicas e da Natureza, Curso de Sistemas de Informação, [email protected] 2 Universidade Severino Sombra, Centro de Ciências Exatas e Tecnológicas e da Natureza, Curso de Sistemas de Informação e Programa de Mestrado Profissional em Educação Matemática e UniFOA – Centro Universitário de Volta Redonda – Departamento das Ciências de Tecnologia e Engenharias, [email protected] Resumo. Atualmente é grande o estudo e desenvolvimento de jogos eletrônicos tanto no meio acadêmico como fora dele. Entretanto o desenvolvimento do mesmo não é uma tarefa trivial. Este artigo mostra o desenvolvimento de um jogo computacional através de uma versão do conhecido jogo de arcade Space Invaders. O artigo proposto tem como objetivo mostrar os passos básicos para a construção de um jogo computacional em duas dimensões utilizando a linguagem de programação Java. 1 Introdução A área de jogos eletrônicos está se tornando cada vez mais popular, sendo uma área de grande interesse financeiro principalmente no segmento de entretenimento digital podendo ser encontrado em diversos dispositivos, como computadores pessoais, console domésticos e dispositivos móveis [Barboza 2008]. Uma das aplicações interessantes dos jogos computacionais é sua utilização no processo educacional. Muitos jogos possibilitam o desenvolvimento de habilidades como cooperação, competição, perseverança, envolvimento, organização e autonomia. Através de softwares educacionais, temos a oportunidade de criar novos jogos e reinventar jogos utilizados em madeira, papel, etc. A possibilidade de divertidas animações, a integração de várias mídias como a escrita, a imagem, o vídeo e o som que o computador oferece enriquecem os jogos [Porto et al. 2008]. Casos de sucesso de jogos computacionais na educação podem ser vistos em Mendes (2007), Santos (2008) e Porto (2008) através do software CONSTRUFIG3D. Este artigo visa mostrar os passos básicos do desenvolvimento de um jogo 2D inspirado no clássico de arcade, Space Invaders. A linguagem de programação escolhida foi Java, devido á sua portabilidade e facilidade de utilização dos seus recursos de computação gráfica através do pacote Java2D. O objetivo é que este texto seja mais uma referência para alunos de cursos de computação interessados em iniciar os estudos e desenvolvimento de jogos computacionais. O restante deste artigo está organizado da seguinte forma: na seção 2 são descritas as fases de desenvolvimento de um jogo computacional. Na seção 3 é mostrada a classe principal do sistema. Na seção 4 é descrita a classe Stage. A seção 5 descreve como é feito o gerenciamento dos recursos (sons e imagens, por exemplo). Na seção 6 são mostradas as 54 informações os atores e finalmente na seção 7 os resultados e considerações finais do trabalho. 2 Planejamento de um jogo computacional A fase inicial do ciclo de desenvolvimento de um jogo é o planejamento. Assim que se tem a idéia inicial do jogo, deve-se fazer uma reunião com membros da equipe onde à mesma deve ser exposta e discutida [PERUCIA et al. 2007] . Cabe lembrar que uma equipe para o desenvolvimento de jogos deve possuir profissionais de várias áreas (artística, produtores de textos, animadores, programadores etc.). Terminada a fase de planejamento inicia-se a fase de game design. Na fase de game design são definidas as principais características do jogo, como sua interface, jogabilidade, personagens, fases, inimigos, itens e outras características gerais, que geram o design document, um documento onde os membros da equipe podem ter noção de como irão trabalhar para realizar o que foi planejado [PERUCIA et al. 2007]. É importante também a criação de um level design, que é como um mapa geral com as missões e desafios das fases em geral. Em projetos maiores é necessário que cada fase tenha seu planejamento específico, para que cada membro da equipe possa planejar como fazer a sua parte. Depois de tudo planejado, inicia-se a fase de criação ou desenvolvimento do jogo. A Figura 1 mostra esquematicamente as etapas descritas acima. Figura 1. Esquema das etapas de desenvolvimento de um jogo computacional. Este artigo irá visar justamente esta parte: criação e programação, utilizando a linguagem Java. Nesta etapa, é aconselhável a criação de versões intermediárias, pois estas permitem o acompanhamento da evolução do projeto, além de facilitar na detecção de bugs e na implementação de melhorias. 3 Criando a Classe Principal Primeiro será criada a classe principal do jogo, a qual se chamará de Game. Esta classe irá conter a inicialização do jogo, que deve ser feita como mostra a Tabela 1. 55 Tabela 1. Game.java public static void main (String args[]){ Game inv = new Game(); } 3.1 A Janela Dentro da classe Game também será feito o desenho da janela. A classe Game deve ser uma extensão de Canvas. Um componente Canvas possibilita criar uma área na tela, na qual a aplicação poderá desenhar através da sobrescrição do seu método paint(), como mostra a Tabela 2. Tabela 2. Game.java public class Game extends Canvas No construtor da classe, deve ser feito o desenho da janela e suas configurações. Para definir a largura (WIDTH) e altura (HEIGHT) da janela, são usadas constantes da classe Stage, que será criada em seguida, pois quando for preciso mudar o tamanho da janela, basta mudar os valores destas constantes no código-fonte (Tabela 3). Tabela 3. Game.java public Game(){ JFrame window = new JFrame("Invasores do Espaço"); JPanel panel = (JPanel)window.getContentPane(); setBounds(0, 0, Stage.WIDTH, Stage.HEIGHT); panel.setPreferredSize(new Stage.HEIGHT)); Dimension(Stage.WIDTH, panel.setLayout(null); panel.add(this); window.setBounds(0, 0, Stage.WIDTH, Stage.HEIGHT); window.setResizable(false); window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); Depois de criada, a janela deve se tornar visível e ser prioridade para os comandos de entrada (Tabela 4). Tabela 4. Game.java window.setVisible(true); requestFocus();} 4 A Classe Stage A classe Stage contém alguns dados sobre a fase. Inicialmente seu código será como mostrado na Tabela 5. 56 Tabela 5. Stage.java public interface Stage { public static final int WIDTH = 800; public static final int HEIGHT = 600; public static final int PLAY_HEIGHT = 520; public static final int SPEED = 10; } As variáveis WIDTH e HEIGHT vão conter os valores de largura e altura da fase e das janelas, a variável PLAY_HEIGHT terá o valor da área em que acontecerá a ação do jogo e SPEED será usada para definir a velocidade do jogo. 5 Gerenciamentos dos recursos do jogo Na tela serão desenhados todos os sprites (imagens que irão representar os gráficos dos personagens, armas etc.) e serão exibidas as informações do jogo. Para isso, será preciso criar classes para carregar e controlar esses sprites. O mesmo método pode ser usado para carregar efeitos sonoros e músicas, que também são muito importantes em um jogo, por isso pode ser criada uma classe abstrata com os métodos comuns no carregamento de ambos os recursos. O controle desses recursos é feito através das classes ResourceCache, como mostra a Tabela 6. Será usado um HashMap para armazenar o nome do sprite e a imagem carregada. Tabela 6. ResourceCache.java public abstract class ResourceCache { protected HashMap resources; public ResourceCache(){ resources = new HashMap(); } } Para indicar o caminho dos recursos, será utilizado getClass().getClassLoader().getResource(), pois desta forma poderá ser usada uma URL indicando o caminho direto (diretórios onde estão os recursos) de onde as classes estão sendo carregadas, o que facilita na hora de passar o jogo para um applet, por exemplo, sem precisar fazer mudanças em relação ao carregamento de imagens (Tabela 7). Tabela 7. ResourceCache.java protected Object loadResource(String name){ URL url = null; url = getClass().getClassLoader().getResource(name); return loadResource(url); } 57 Todos os recursos estarão na mesma pasta das classes, em um diretório chamado resources, então, toda vez que uma imagem for carregada, o aplicativo deve buscar nesta pasta. Depois disso, o recurso será armazenado no HashMap criado anteriormente (Tabela 8). Tabela 8. ResourceCache.java protected Object getResource(String name){ Object res = resources.get(name); if(res == null){ res = loadResource("resources/"+name); resources.put(name, res); } return res; } protected abstract Object loadResource(URL url); } 5.1 Imagens A classe usada para carregar e gerenciar as imagens será a SpriteManager, que será uma extensão de ResourceCache (Tabela 9). Tabela 9. SpriteManager.java public class SpriteManager extends ResourceCache{ O método loadResource(URL url) tenta ler as imagens, se não conseguir, cria um JOptionPane com uma mensagem de erro e fecha o aplicativo (Tabela 10). Tabela 10. SpriteManager.java protected Object loadResource (URL url){ try{ return ImageIO.read(url); }catch(Exception e){ JOptionPane.showMessageDialog(null, "Erro ao carregar o jogo." + "Por favor, verifique JOptionPane.ERROR_MESSAGE); a instalação.", "Erro!", System.exit(0); return null; }} 6 Atores Os atores são todos os objetos que criam a interação no jogo. Neste caso existem o herói, os inimigos e o tiro. A classe Actor irá conter os métodos comuns a estes atores (Tabela 11). 58 Tabela 11. Actor.java public class Actor { protected int x,y; protected int width, height; protected String[] spriteNames; protected Stage stage; protected SpriteManager spriteManager; protected int currentFrame; protected int frameSpeed, t; protected boolean remove; public Actor (Stage stage){ this.stage = stage; spriteManager = stage.getSpriteManager(); currentFrame = 0; frameSpeed = 1; t=0; } public void paint(Graphics2D g){ g.drawImage(spriteManager.getSprite(spriteNames[currentFrame]), x, y, stage); } Se um sprite for removido da tela durante a execução do loop principal do jogo, falhas podem ser geradas na execução do aplicativo. O método setRemove serve para contornar este problema, pois ele “marca” o sprite para ser removido durante a próxima execução do loop, evitando problemas na leitura dos sprites (Tabela 12). Tabela 12. Actor.java public void setRemove(){ remove = true; } public boolean isSetToRemove(){ return remove; } O método getBounds() cria um retângulo em torno do sprite (Tabela 13). Tabela 13. Actor.java public Rectangle getBounds(){ return new Rectangle(x,y,width,height); } Estes retângulos são usados nos cálculos de detecção de colisão dos personagens. A Figura 2 exemplifica como esses retângulos são visualizados pelo aplicativo. 59 Figura 2. Como funciona a detecção de colisão. O método act() faz a troca de sprites para realizar a animação dos atores conforme pode ser visto na Tabela 14. Tabela 14. Actor.java public void act(){ t++; if(t % frameSpeed == 0){ t=0; currentFrame = (currentFrame + 1) % spriteNames.length; }}} 6.1 O Personagem A classe Player irá representar o personagem que o jogador irá controlar que nesse caso é uma nave. Esta classe possui diversas variáveis e métodos exclusivos do jogador (Tabela 15). Tabela 15. Player.java public class Player extends Actor { protected int vx; protected static final int PLAYER_SPEED = 4; private boolean left, right; O método act() desta classe evita que a nave ultrapasse os limites da tela (Tabela 16). Tabela 16. Player.java 60 public void act(){ super.act(); x+=vx; if (x < 0 ) x = 0; if (x > Stage.WIDTH - getWidth()) x = Stage.WIDTH - getWidth(); } O método updateSpeed() faz com que a nave possa se mover para os lados, de acordo com a tecla pressionada (Tabela 17). Tabela 17. Player.java protected void updateSpeed(){ vx = 0; if(left) vx = -PLAYER_SPEED; if(right) vx = PLAYER_SPEED; } O método fire() faz com que a nave possa atirar. Primeiro é feito o posicionamento do tiro e depois criado um objeto para representá-lo na tela (Tabela 18). Tabela 18. Player.java public void fire(){ Shot shot = new Shot(stage); shot.setX(x+25); shot.setY(y - shot.getHeight()); stage.addActor(shot); stage.getSoundManager().playSong("sound/shot.wav"); } 7 Resultados e Considerações Finais Ao término deste artigo, no qual foram abordados métodos para a criação de um jogo computacional 2D, espera-se que os estudantes da área de computação possam ter uma idéia inicial de como esses jogos são feitos, servindo como base para pesquisas ou estudos. A Figura 3 mostra a tela do software em execução. Através deste tutorial foram explicados conceitos importantes no desenvolvimento de um jogo, como por exemplo, o tratamento de imagens, a detecção de colisão entre os personagens e a movimentação do jogador na tela. Em uma próxima etapa será desenvolvido e pesquisa uma estratégia para o enfoco educativo do sistema possivelmente com alteração para a temática na área de matemática. 61 Figura 3. Tela do jogo. Agradecimentos Os autores agradecem à FAPERJ (Fundação de Amparo à Pesquisa do Estado do Rio de Janeiro) pelo auxílio financeiro recebido. O segundo autor agradece à FUNDADESP (Fundação Nacional de Desenvolvimento do Ensino Superior Particular) pela bolsa de produtividade de pesquisa de doutorado. Referências Bibliográficas Barboza, D. C. (2008) Ambiente Visual para desenvolvimento de jogos eletrônicos, Monografia – Curso de Bacharelado em Ciência da Computação do Centro Universitário Serra dos Órgãos. Deitel H. M., Deitel P. J. (2002) Java Como Programar: 4ª edição. Bookman 2002. Harbour, J. S. (2007). Beginning Java Game Programming, 2th edition. Mendes, J. L. de S., Carvalho, C. V. A., Carvalho, J. V. (2007) CONSTRUFIG3D: Uma Ferramenta Computacional para apoio ao ensino da Geometria Plana e Espacial. RENOTE. Revista Novas Tecnologias na Educação, v. 5, n 1, p. 1/10-10, 2007. Perucia A., Berthêm A.., Bertschinger G., Castro R. R. (2005) Desenvolvimento de Jogos Eletrônicos – Teoria e Prática: 2ª edição. Novatec, 2005. Porto, I. da P. G. Carvalho, C. V. A., Oliveira, R. (2008) O jogo Computacional TANGRAM: um objeto de Aprendizagem sobre Geometria. IV Colóquio de História e Tecnologia no ensino da Matemática - HTEM, UFRJ, 2008. Santos, S. C., Carvalho, Janaina Veiga, Carvalho, C. V. A. (2008) Utilização e Avaliação do sistema computacional CONSTRUFIG3D para apoio ao ensino da geometria. RENOTE. Revista Novas Tecnologias na Educação, v. 6, número 1, p 1-9, 2008. 62 Tecnologia da Informação Aplicada a Gerenciamento de Acervo Documental Histórico Kayo Delgado Medeiros de Almeida¹, Elon Gomes Vieira2, Carlos Vitor de Alencar Carvalho3, Magno Fonseca Borges4, José Jorge Siqueira5, Antônio de Paula Pedrosa6, Douglas Moreno Moreira8, Bruno M. Lemos7 1 Universidade Severino Sombra, Centro de Ciências Exatas e Tecnológicas e da Natureza, Sistemas de Informação, [email protected] 2 Universidade Severino Sombra, Centro de Ciências Exatas e Tecnológicas e da Natureza, Sistemas de Informação, [email protected] 3 Universidade Severino Sombra, Centro de Ciências Exatas e Tecnológicas e da Natureza, Curso de Sistemas de Informação e Programa de Mestrado Profissional em Educação Matemática e UniFOA – Centro Universitário de Volta Redonda - Departamento das Ciências de Tecnologia e Engenharias, [email protected] 4 Universidade Severino Sombra, Centro de Documentação Histórica, [email protected] 5 Universidade Severino Sombra, Curso de História e Programa de Mestrado em História, [email protected] 6 Universidade Severino Sombra, Centro de Ciências Exatas e Tecnológicas e da Natureza, Sistemas de Informação, [email protected] 7 Universidade Severino Sombra, Centro de Ciências Exatas e Tecnológicas e da Natureza, Sistemas de Informação, [email protected] 8 Universidade Severino Sombra, Centro de Ciências Exatas e Tecnológicas e da Natureza, Sistemas de Informação, [email protected] Resumo: Este artigo mostra a aplicação de Tecnologia da Informação juntamente com conceitos de GED no Centro de Documentação Histórica da Universidade Severino Sombra. Um sistema desenvolvido em plataforma livre, em funcionamento, com finalidade de disponibilizar imagens digitais de acervos históricos sob guarda do Centro de Documentação Histórica. Esta solução foi proposta por um projeto de preservação de todo acervo documental histórico apoiado pela Fundação de Amparo a Pesquisa do Estado do Rio de Janeiro FAPERJ, com isso o sistema tem por excelência a disponibilização das imagens, cadastro e consulta dos documentos, gerenciamento de desarquivamento, uso e desarquivamento de documentos, cadastro e gerenciamento de usuários com privilégios para cada tipo, registro de ações e histórico de pesquisa por cada usuário e entre outros. Com esta solução é possível disponibilizar um acervo para ser pesquisado por vários usuários ao mesmo tempo e sem danificar o documento original, que estará sempre bem guardado e protegido. O artigo também apresenta uma visão geral das interfaces gráficas do sistema desenvolvimento. 63 1. Introdução O Centro de Documentação Histórica (CDH) da Universidade Severino Sombra (USS) tem sob sua guarda um acervo documental histórico do século XVIII em diante no qual disponibiliza para consulta por historiadores e população interessada. Para tal disponibilização, o CDH tinha toda uma rotina manual que demandava um esforço humano muito alto para manter a ordem e qualidade. Um problema do CDH era o fato da degradação natural, química e por utilização excessiva dos documentos. Com essa problemática surgiu o projeto de implantar um sistema para gerenciamento desses documentos e sua disponibilização digital. Não basta apenas informatizar, ou seja, passar rotinas manuais para rotinas computacionais. É necessário entender um pouco sobre alguns conceitos como GED (Gerenciamento Eletrônico de Documentos) e Tecnologia da Informação. Gerenciamento eletrônico de documentos ou gestão eletrônica de documentos (GED) é uma tecnologia que provê um meio de facilmente gerar, controlar, armazenar, compartilhar e recuperar informações existentes em documentos. Documentos formam a grande massa de conhecimentos de uma empresa. O GED permite preservar esse patrimônio e organizar eletronicamente a documentação, para assegurar a informação necessária, na hora exata, para a pessoa certa. O GED lida com qualquer tipo de documentação. A Tecnologia da Informação (TI) pode ser definida como um conjunto de todas as atividades e soluções providas por recursos de computação [Wikipedia1 2008 e Wilipedia2 2008]. Baseado nesses conceitos o sistema começou a ser desenvolvido, e hoje seu desenvolvimento utiliza tecnologia Java (JSDK 1.6) [Deitel 2002], IDE NetBeans 6.1/6.5 [Gonçalves 2008], servidor Apache TomCat, Adobe e Sistema Operacional Ubuntu LTS. Com as tecnologias acima, pode-se observar a escolha por Software Livre. Sua escolha foi devida, não somente a redução de custos para a instituição, mas mostrar que esta solução é viável e também possibilitar aos profissionais e acadêmicos ampliarem seus conhecimentos e experiências nesta área [Almeida 2008a]. O restante deste artigo está organizado da seguinte forma: na seção 2 são detalhados conceitos de desenvolvimento Desktop e desenvolvimento WEB; considerações sobre o sistema desenvolvimento são descrito na seção 3. Na seção 4 apresentam-se as considerações finais. 2. Desenvolvimento Desktop x Desenvolvimento WEB No início do projeto o sistema começou a se desenvolvido para desktop, sua primeira versão, apenas o visualizador de imagens, foi apresentado e ele tinha a capacidade de abrir imagens e navegar por cada página de cada acervo aplicando zoom entre outras funcionalidades básicas de visualização de imagem. (Figura 1 e Figura 2) [Almeida 2008b]. Somente a visualização não era necessária. Era importante ter um gerenciamento para as imagens digitais, cadastro de usuários, níveis de permissão, gerência de ações. Então com essas necessidades, o sistema foi repensado e refeito com desenvolvimento WEB. A elicitação do sistema foi feita em cima das necessidades do CDH e as decorrentes durante o projeto. A metodologia utilizada foi a XP onde a elicitação e feita junto com a programação e os resultados exibidos para melhorias e correção. 64 O desenvolvimento WEB gerou outras necessidades. Retiramos a necessidade das máquinas clientes possuírem hardware com desempenho adequado para aplicação web em vez de única máquina potente o suficiente. Passamos toda a responsabilidade de processamento e segurança para uma única máquina potente o suficiente para isto. Foi possível aproveitar tecnologias prontas e gratuitas para incorporar ao sistema, como por exemplo, o Acrobat Reader da Adobe (pode ser um genérico que funcione com seu navegador) para fazer toda a parte de visualização com a qualidade dos arquivos PDF. Figura 1. Abrindo imagem. Figura 2. Visualização da imagem com zoom. 3. O Sistema desenvolvido O sistema possui cadastro de usuários com nível de privilégios (Pesquisador e Administrador). O cadastro é efetuado pelo próprio usuário acessando a opção “cadastrar” 65 na página inicial do sistema (Figura 3) e ele possui todo tratamento para campos obrigatórios e validação de CPF, portanto não terá como se cadastrar sem seu CPF. Então como disponibilizar o sistema para usuários que não possuem CPF? Simples, o funcionário, com seu nível de administrador, podem cadastrar qualquer usuário sem numero de CPF, portanto o sistema registra esta ação para prestação de contas em um possível problema acarretado por esta ação. (Figura 4). Figura 3 – Tela Inicial. Figura 4 – Tela de Cadastro. Com login pronto, o pesquisador pode logar e se tudo estiver correto ele é direcionado para uma página personalizada contendo um buscador para pesquisar os documentos e com menus de interação com o sistema como é mostrado na Figura 5. A seguir são mostrados alguns itens importantes do menu pesquisador: 66 Figura 5 – Página Personalizada. • Mensagem: mensagens que o sistema envia ao usuário para relatar algum problema com o processo de desarquivamento do documento solicitado (Figura 6). Figura 6 – Mensagem. • Histórico: listagem de todas as ações de pesquisas efetuadas pelo pesquisador a fim de facilitar uma consulta a um documento que já tenha sido realizada (Figura 7). 67 Figura 7 – Histórico das ações efetuadas. • Meus Dados: página onde o pesquisador poderá atualizar seus dados e alterar sua senha no sistema (Figura 8). Figura 8 – Dados do pesquisador. • Log Out: sair do sistema. Quando um pesquisador efetua sua pesquisa os resultados são exibidos em uma lista de 100 em 100 resultados com indicadores de páginas navegáveis (Figura 9). As fases de digitalização e disponibilização do acervo ainda estão em desenvolvimento, portanto o sistema tem uma rotina inteligente que identifica se há ou não imagem digital a ser visualizada, caso sim o sistema exibe um botão visualizar (Figura 10) que arremete a uma página de visualização completa do acervo com navegação entre imagens (Figura 11). 68 Quando o acervo ainda está indisponível para visualização digital, um botão de solicitar desarquivamento é exibido (Figura 9), ao clicar neste botão o sistema envia uma solicitação de desarquivamento que é monitorada por um administrador em uma tela específica, o administrador recebe sinal sonoro, reconhece o acervo, desarquiva-o fisicamente e no sistema e leva ao atendente para realizar a entrega. O pesquisador pode apenas solicitar um documento por vez, ele só fica liberado para outra solicitação após a entrega do documento e a solicitação de arquivamento efetuada pelo atendente. Com esse processo um sinal sonoro diferente é acionado e o administrador responsável pelo acervo arquiva-o fisicamente e no sistema. Enquanto os acervos estão em mãos de pesquisadores, eles ficam em uma coluna de “EM USO” no sistema. (Figura 12). Figura 9 - resultados exibidos em uma lista de 100 em 100 resultados com indicadores de páginas navegáveis. Figura 10 – O sistema tem uma rotina inteligente que identifica se há ou não imagem digital a ser visualizada, caso sim o sistema exibe um botão visualizar. 69 Figura 11 - visualização completa do acervo com navegação entre imagens. Figura 12 – Imagem mostrando que enquanto os acervos estão em mãos de pesquisadores, eles ficam em uma coluna de “EM USO” no sistema. Com todos esses procedimentos descritos acima podemos notar que o sistema além de tratar dos arquivos digitais, também auxilia aos funcionários do CDH a monitorar e controlar o uso dos documentos históricos. 4. Considerações Finais A aplicação da tecnologia da informação é de vasta amplitude e diversidade. Neste artigo podemos ver o quão proveitoso e de vital importância foi para a instituição a aderência e inclusão da TI em sua rotina. Com essas experiências podemos dizer que a interdisciplinaridade é a peça fundamental para o sucesso de cada aplicação. 70 Vale lembrar que o sistema está em constante evolução e vem sido todo estruturado em plataformas livres, felizmente isso significa que não acabamos por aqui e que outros poderão continuar a trajetórias já cursadas até aqui. Como futuras implementações estão à disponibilização das imagens via internet e a consideração de código de barras para representar o código do acervo. Agradecimentos Os autores agradecem à FAPERJ (Fundação de Amparo à Pesquisa do Estado do Rio de Janeiro) pelo auxílio financeiro recebido. O primeiro autor agradece pela bolsa de Iniciação Científica recebida da FAPERJ. O terceiro autor agradece a FUNDADESP (Fundação Nacional de Desenvolvimento do Ensino Superior Particular) pela bolsa de produtividade de pesquisa de doutorado. Referências Bibliográficas Almeida, K. D. M ; Carvalho, C. V. A. ; Borges, M. F. ; Izzo, W. P.; Siqueira, J. J. (2008a) . Pesquisa e Desenvolvimento de uma ferramenta computacional para visualização de imagens digitais. In: I WorkShop de Informática Aplicada e Desenvolvimento de Jogos para Computatores e Dispositivos Móveis. ISBN: 9788588187030, 2008, Vassouras. 2008. v. 1. p. 1-4. Almeida, K. D. M ; Junior, J. A. T. L ; Carvalho, C. V. A. (2008b). Total Cost of Ownership TCO: Uma Ferramenta Aplicável a todos os segmentos que utilizem TI: Estudo de caso do Centro de Documentação Histórica. In: VII Encontro de Iniciação Científica da USS, 2008, Vassouras. Fusve, 2008. v. 1. p. 1-1. Cenadem (2008), http://www.cenadem.com.br/ged01.php , acessado em Janeiro de 2009. Deitel H. M., Deitel P. J. (2002) Java Como Programar: 4ª edição. Bookman 2002. Gonçalves, E. (2008) Desenvolvendo Aplicações Web com Netbeans IDE 6, Editora Ciência Moderna, 2008. Wikipedia1 (2008), http://pt.wikipedia.org/wiki/GED, acessado em Janeiro de 2009. Wikipedia2 (2008), http://pt.wikipedia.org/wiki/Tecnologia_da_informação, acessado em Janeiro de 2009. 71