Baixar este arquivo PDF - Fatec-ID

Propaganda
SEGMENTAÇÃO DE IMAGENS APLICADA A JOGOS
Thiago Peres ATAIDE; Renata Corrêa PIMENTEL
Faculdade de Engenharia de Sorocaba
RESUMO
O presente trabalho apresenta um estudo sobre a área da computação gráfica com
foco na segmentação de imagens e sua aplicação a jogos, mostrando que é possível
desenvolver um software onde o jogador exerce controle utilizando o próprio corpo
frente a uma câmera.
Computação gráfica; segmentação de imagens; jogos.
Introdução
Computação gráfica, de acordo com Gonzalez e Woods (2000), é a
área da computação que manipula conteúdo visual. É definida por Gomes e
Velho (2003) como um conjunto de métodos e técnicas para relacionar dados
e imagens.
A computação gráfica pode ser dividida em quatro grandes áreas: a
modelagem geométrica, que descreve estruturas de dados geométricos; a
síntese de imagens, que transforma dados em imagens; a análise de imagens,
que transforma imagens em dados; e o processamento de imagens, que
recebe, transforma e produz imagens.
Petrou e Bosdogianni (1999) afirmam que a segmentação de
imagens representa uma área de pesquisa importante do processamento de
imagens. Segmentar consiste em verificar cada ponto da imagem para dividila em regiões que correspondem a objetos ou partes de objetos. Essas regiões
são formadas por pontos que contém características comuns, como cor, por
exemplo, indicando que formam um mesmo objeto ou parte.
O objetivo da segmentação de imagens é extrair informações da
imagem de entrada para formar uma imagem de saída que contenha menos
informações, mas que essas informações sejam mais relevantes do que todo
o conteúdo descartado.
A segmentação de imagens possui diversas aplicações práticas,
como equipamentos de tomografia, cirurgia guiada por computador,
localização de objetos em imagens de satélite, radares de trânsito e
reconhecimento facial. Uma área que ainda explorou pouco as diversas
possibilidades que a segmentação de imagens pode oferecer é a de jogos.
Segundo Marques (2006), o crescente desenvolvimento dos jogos
fez com que o jogador deseje não ficar preso ao teclado ou controlador. Para
aumentar a interatividade e imersão, o futuro dos jogos está em oferecer
maior controle ao jogador, diminuindo a necessidade de apertar botões para
utilizar formas mais intuitivas de controlar o jogo. Uma dessas formas é a
interação através de uma câmera, que adquire a imagem do jogador para que
seus movimentos controlem o jogo.
O trabalho tem como objetivo o estudo da segmentação de imagens e
sua aplicação em jogos através do desenvolvimento de uma aplicação onde o
jogador exerce controle sobre uma aeronave utilizando o próprio corpo,
inclinando seus braços abertos, que representam as asas da aeronave, para
movimentá-la na tela.
O artigo está organizado da seguinte maneira: inicialmente são
apresentados os fundamentos de segmentação de imagens, seguidos pela
abordagem do processo de segmentação de imagens por subtração de fundo.
Em seqüência, o desenvolvimento da aplicação é detalhado, seguido dos
testes realizados para chegar às conclusões.
Fundamentos de Segmentação de Imagens
Segundo Pratt (2001), a segmentação de imagens consiste na divisão
de uma imagem em regiões de atributos similares, indicando que eles
formam um objeto ou uma mesma parte de um objeto. Os atributos básicos
para segmentação são a diferença de tons em imagens monocromáticas e a
diferença dos componentes de cores em imagens coloridas. Bordas de
objetos também são consideradas um bom artifício para realização da
segmentação.
Para Gonzalez e Woods (2000), a segmentação subdivide uma
imagem em suas partes ou objetos constituintes. Para Russ (1998), a divisão
da imagem ocorre em apenas duas regiões: o plano de fundo e o plano de
frente, que normalmente consiste na área de interesse da imagem, o que faria
o processo de segmentação se concentrar em apenas uma característica e
descartar todas as demais.
Quando é escolhida uma característica para ser utilizada em um
processo de segmentação de imagens, ela deve atender a dois critérios: “ser
de fácil identificação” e “permitir a diferenciação entre vários tipos de
superfícies” (BELLON, 1997).
Gomes e Velho (2003) definem a segmentação como um tipo de
processamento de imagens, recebendo uma imagem como entrada e
fornecendo outra imagem na saída. Mas, conforme Pratt (2001) relata, a
segmentação, como forma de processamento de imagens, é amplamente
utilizada como parte de uma operação maior, a análise de imagens. Nesse
caso, as regiões de propriedades comuns na imagem são isoladas pela
segmentação e então analisadas individualmente com algum objetivo
específico.
Em um processo de segmentação de imagens não há limite
determinado para parar (GONZALEZ; WOODS, 2000). O nível até o qual
essa subdivisão da imagem deve ser realizada depende do problema que está
sendo resolvido, ou seja, a segmentação deve parar quando os objetos de
interesse na aplicação tiverem sido isolados. Por exemplo, em aplicações de
aquisição autônoma aérea de alvos terrestres, o interesse reside, entre outras
coisas, na identificação de veículos em uma estrada. O primeiro passo é a
segmentação da estrada na imagem, seguida da segmentação dos elementos
de tamanhos correspondentes a veículos em potencial. Não se deve realizar
segmentação abaixo dessa escala, tampouco além dos limites da estrada.
Em geral, a segmentação é uma das tarefas mais complexas em
processamento de imagens. Esse passo determina o eventual sucesso ou
fracasso na análise, pois enquanto um bom resultado na segmentação
favorece o sucesso no reconhecimento, o contrário também é verdadeiro.
Existem diversas técnicas de segmentação de imagens, mas não
existe um método único que seja funcional para todas as aplicações
(PRATT, 2001). Podem ser citados como exemplos de técnicas tradicionais:
a limiarização, que separa os pontos da imagem em dois grupos de acordo
com um limiar; o crescimento de regiões, que agrupa pontos com
características semelhantes; e a detecção de bordas, que identifica mudanças
bruscas entre pontos vizinhos.
Em alguns casos, a melhor forma de aplicação da segmentação de
imagens foge dos meios tradicionais. Um dos meios não tradicionais, a
subtração de fundo, foi escolhida para utilização no presente trabalho devido
a suas características apresentadas a seguir.
Segmentação de Imagens por Subtração de Fundo
Segundo Forsyth e Ponce (2002), para a detecção de objetos em
movimento em uma cena com fundo estático, pode-se utilizar o método da
subtração de fundo, desde que se tenha uma imagem inicial do ambiente sem
a presença dos objetos a identificar, o que constitui o fundo.
A idéia da subtração de fundo é subtrair da imagem atual uma
imagem inicial de referência e considerar que qualquer ponto que não
pertença à primeira imagem (fundo), é de interesse. Dessa forma, é possível
utilizar o método em planos de fundo não uniformes, o que o torna
abrangente quanto aos ambientes de utilização.
Horprasert, Harwood e Davis (2000) explicam que o algoritmo deve
comparar cada ponto da imagem atual com o ponto de mesma posição na
imagem inicial e classificá-lo como fundo ou objeto em movimento. Para
desconsiderar pequenas mudanças da imagem, como a compensação
automática da iluminação que as câmeras fazem, deve ser utilizada uma
tolerância, que define quão diferente o ponto deve ser na imagem atual para
que não faça parte do fundo.
A figura 1 mostra a segmentação de imagens por subtração de fundo,
com a imagem do fundo na esquerda, a imagem atual no meio e o resultado
da segmentação na direita.
Figura 1 – Segmentação de imagens por subtração de fundo
Aplicação
O trabalho visa o desenvolvimento de um jogo onde o usuário exerce
controle sobre uma aeronave utilizando o próprio corpo, inclinando seus
braços abertos, que representam as asas da aeronave, para movimentá-la na
tela enquanto passa por dentro de anéis para ganhar pontos.
A aplicação foi desenvolvida utilizando a linguagem C# e a
biblioteca gráfica OpenGL. Seu funcionamento é um ciclo de quatro
atividades: a imagem é adquirida, a imagem adquirida é segmentada para
extrair o jogador, a imagem segmentada é analisada para identificar a
posição dos braços do jogador e a aeronave no jogo é movimentada de
acordo com a posição identificada dos braços. A figura 2 mostra um ciclo de
execução da aplicação.
Figura 2 – Ciclo de execução da aplicação
Com a imagem adquirida através da câmera, a aplicação realiza a
segmentação de imagens por subtração de fundo. Para fazer a comparação
entre os pontos são utilizados seus componentes de cor RGB (vermelho,
verde e azul). A figura 3 mostra o algoritmo de segmentação de imagens por
subtração de fundo, onde “fundo” representa a imagem de fundo
previamente adquirida, “imagem” representa a imagem atual, e “jogador”
representa o resultado da segmentação onde os pontos identificados como
fundo são marcados em branco e os identificados como jogador em preto.
para cada ponto ‘i’ na horizontal da imagem
para cada ponto ‘j’ na vertical da imagem
rf = componente vermelho do fundo[i,j]
gf = componente verde do fundo[i,j]
bf = componente azul do fundo[i,j]
ri = componente vermelho da imagem[i,j]
gi = componente verde da imagem[i,j]
bi = componente azul da imagem[i,j]
diferença = |rf - ri| + |gf - gi| + |bf - bi|
se diferença < tolerância
jogador[i,j] = cor branca
fim se
senão
jogador[i,j] = cor preta
fim senão
fim para
fim para
Figura 3 – Algoritmo de segmentação de imagens por subtração de fundo
Com a imagem segmentada, é possível analisá-la para identificar a
posição dos braços do jogador. O tamanho das imagens utilizadas é de 160
por 120 pontos, portanto o braço do jogador deve ser encontrado entre o
ponto 0 e 119 de altura, e nas faixas laterais que vão do ponto 0 a 39 do lado
direito e 120 a 159 do lado esquerdo, pois na faixa do meio considera-se que
está o tronco do jogador.
Procura-se os braços a partir da borda dos dois lados, para localizar a
altura máxima e mínima, que serão sempre as mais próximas das
extremidades da imagem. Se o braço não for encontrado nessa faixa de 40
pontos de cada lado, considera-se que ele está abaixado, com altura 0.
O primeiro ponto preto encontrado na busca é considerado a
extremidade do braço do jogador. A figura 4 mostra o algoritmo de análise
da imagem para identificação da posição dos braços.
para i = 0 até 39 com incremento 1
para j = 119 até 0 com decremento 1
se jogador[i,j] = cor preta
esquerda = j
interrompe para
fim se
fim para
fim para
para i = 159 até 120 com decremento 1
para j = 119 até 0 com decremento 1
se jogador[i,j] = cor preta
direita = j
interrompe para
fim se
fim para
fim para
Figura 4 – Algoritmo de análise da imagem para identificação da posição dos braços
Com a posição dos braços encontrada, resta fazer a aeronave se
movimentar de acordo com ela, definindo um deslocamento lateral e um
ângulo de inclinação para a aeronave. O deslocamento lateral ocorre
acumulando o movimento da aeronave nessa iteração à sua posição no eixo
X. Já o ângulo de inclinação não é cumulativo, é determinado a cada instante
a partir da posição dos braços na iteração atual.
Se o braço esquerdo está mais alto que o direito, a aeronave deve se
deslocar para a direita, o que significa um incremento em sua posição no
eixo X e um ângulo de inclinação positivo. Se o braço direito está mais alto
que o esquerdo, a aeronave deve se deslocar para a esquerda, o que significa
um decremento em sua posição no eixo X e um ângulo de inclinação
negativo. A figura 5 mostra o algoritmo de determinação do movimento da
aeronave no jogo.
se esquerda > direita
se esquerda - direita < 60
x = x + 0.01
fim se
senão
x = x + 0.02
fim senão
ângulo = + (esquerda - direita) / 2
fim se
senão
se direita - esquerda < 60
x = x - 0.01
fim se
senão
x = x - 0.02
fim senão
ângulo = - (direita - esquerda) / 2
fim senão
Figura 5 – Algoritmo de determinação do movimento da aeronave no jogo
Com a posição da aeronave determinada, os objetos do jogo são
desenhados na tela, finalizando um ciclo de execução que se repetirá
novamente a partir da aquisição da próxima imagem do jogador.
No jogo, o jogador deve controlar a aeronave para passar entre os
anéis e ganhar pontos. À medida que avança, o intervalo entre os anéis
diminui, exigindo movimentos mais rápidos e precisos. A figura 6 contém
uma imagem do jogo.
Figura 6 – Imagem do jogo
Testes
Foram realizados testes supervisionados com mais de trezentos
jogadores em ambientes variados. Os ambientes de teste incluíram planos de
fundo uniformes e não uniformes, com iluminação forte e fraca.
Os testes mostraram que, independente do plano de fundo, em um
ambiente com boa iluminação é possível conseguir uma boa resposta dos
movimentos desejados no jogo, com a aeronave se movendo de acordo com
a posição dos braços do jogador, atingindo assim o objetivo do trabalho. Em
um ambiente mal iluminado, porém, a identificação pode falhar.
Os jogadores habituais que participaram dos testes mostraram-se
empolgados com essa forma de controlar o jogo, até então desconhecida pela
maioria, e conseguiram controlar a aeronave instantaneamente.
Entre os participantes não familiarizados com videogames, a maioria
também conseguiu controlar a aeronave desde o início, o que não costuma
acontecer com jogos controlados de forma tradicional, que trazem uma curva
de adaptação e aprendizado maior para realizar o mesmo procedimento.
Conclusões
O presente trabalho apresentou uma aplicação que permite ao
usuário controlar uma aeronave utilizando o próprio corpo, inclinando seus
braços, que são identificados através da captura, segmentação e análise de
sua imagem. A aplicação foi construída sobre a base de um algoritmo de
segmentação de imagens por subtração de fundo que, a partir de uma
imagem inicial do plano de fundo, é capaz de extrair o usuário das imagens
subseqüentes para identificar a posição de seus braços.
O propósito do trabalho foi a demonstração de como é possível
desenvolver uma interface corporal com jogos através de uma câmera,
utilizando computadores convencionais e câmeras acessíveis, sem a
necessidade de equipamentos e marcadores no corpo do usuário ou
utilização restrita à ambientes específicos.
Jogos controlados de forma mais interativa e imersiva possuem
grande poder de atração tanto sobre jogadores habituais quanto sobre aqueles
que não são familiarizados com videogames. A interface de fácil acesso é
atrativa a pessoas de todas as idades, e evita o sedentarismo normalmente
atrelado aos videogames, estimulando o movimento na hora de jogar.
O presente trabalho é bom exemplo prático de como a segmentação
de imagens pode ser utilizada em aplicações variadas. A utilização de
dispositivos de captura de imagens em outros tipos de software ou aparelhos
eletrônicos poderia tornar sua utilização mais simples e justificaria pesquisas
em interfaces digitais que não requerem dispositivos intermediários de
interação. Em videogames, ela pode evoluir e mudar a forma de jogar.
Pesquisas futuras envolvendo o presente trabalho podem ser
realizadas para permitir maior controle sobre o jogo, possibilitando ao
jogador definir altura e velocidade da aeronave e, ainda, identificar gestos
que correspondem a ações, como atirar um míssil em um jogo de caça. A
representação gráfica pode ser aperfeiçoada, com a utilização de um modelo
de aeronave mais complexo, efeitos e texturas para aumentar o realismo.
Referências Bibliográficas
BELLON, Olga R P. Imagens de Profundidade: Segmentação e
Representação por Superfícies Planares. Campinas: Universidade Estadual
de Campinas, 1997. 180p.
FORSYTH, David A; PONCE, Jean. Computer Vision: A Modern Approach.
1.ed. Upper Saddle River: Prentice Hall, 2002. 720p.
GOMES, Jonas; VELHO, Luiz. Fundamentos da Computação Gráfica. 1.ed.
Rio de Janeiro: IMPA, 2003. 603p.
GONZALEZ, Rafael C; WOODS, Richard E. Processamento de Imagens
Digitais. 1.ed. São Paulo: Edgard Blücher, 2000. 528p.
HORPRASERT, Thanarat; HARWOOD, David; DAVIS, Larry S. A Robust
Background Subtraction and Shadow Detection. Computer Vision Seminar,
1. 2003. 6p.
MARQUES, Renato. O Futuro do Entretenimento. 2006. Disponível em:
<http://www.universiabrasil.net/materia/materia.jsp?materia=12693>.
Acesso em: 02 dez. 2006.
PETROU, Maria; BOSDOGIANNI, Panagiota. Image Processing: The
Fundamentals. 1.ed. New York: John Wiley & Sons, 1999. 354p.
PRATT, William K. Digital Image Processing. 3.ed. New York: John Wiley
& Sons, 2001. 758p.
RUSS, John C. The Image Processing Handbook. 3.ed., Raleigh: CRC Press,
1998. 771p.
Download