Você está na página 1de 14

Uma implementac ao do jogo Pedra, Papel e Tesoura utilizando

Vis ao Computacional
Ezequiel Franca dos Santos
1
, Gabriel Fontenelle
1
1
Centro Universit ario Senac - Campus Santo Amaro (SENAC-SP)
Av. Engenheiro Eus ebio Stevaux, 823 S ao Paulo CEP 04696-000 SP Brasil
ezefranca.br,colecionador.gabriel,(@gmail.com)
Abstract. This paper presents a game, controlled by computer vision, in identi-
cation of hand gestures (hand-tracking). The proposed work is based on image
segmentation and construction of a convex hull with Jarviss Algorithm , and
determination of the pattern based on the extraction of area characteristics in
the convex hull.
Resumo. Este trabalho apresenta um jogo, controlado atrav es de vis ao compu-
tacional, na identicac ao de gestos da m ao (hand-tracking). O trabalho pro-
posto baseia-se na segmentac ao da imagem e construc ao de um fecho convexo
com algoritmo de Jarvis e determinac ao do padr ao com base na extrac ao de
caractersticas de sua area.
1. Introduc ao
A busca por meios que tornem os jogos mais interativos tem sido muito explorada.
Muitos destes novos meios envolvem a area de vis ao computacional. Este trabalho apre-
senta um estudo sobre a viabilidade de utilizac ao de uma webcam como dispositivo de
interac ao baseado em gestos da m ao, especicamente para o jogo Pedra, Papel e Tesoura.
Neste trabalho, para o reconhecimento de gestos da m ao utilizamos a combinac ao
de algumas t ecnicas e para umreconhecimento satisfat orio, zemos umpr e-processamento
da imagem, passando a mesma para escala de cinza em seguida binarizando e por m
aplicamos um ltro para detecc ao de bordas. Em posse da imagem esqueletizada da m ao,
trabalhos o fecho convexo do conjunto de pontos e extraimos algumas caractersticas de
sua area.
2. Desenvolvimento
Primeiramente capturamos a imagem da camera, ap os isto fazemos a subtrac ao de
fundo com intuito de isolar melhor a m ao para a captura de seus gestos. A pr oxima etapa
foi a normalizac ao da imagem para tons de cinza, seguida da sua binarizac ao. Com a ima-
gem binarizada, comecamos o processo de reconhecimento, primeiramente reconhecedo
as bordas da m ao, e calculando o fecho convexo em torno da mesma. Em seguida, obte-
mos a determinac ao do padr ao com base na extrac ao de caractersticas da area do fecho
convexo.
A gura 1, mostra a sequ encia adotada e cada etapa ser a brevemente descrita no
decorrer deste trabalho.
Figura 1. Fluxo no processamento da imagem
2.1. Aquisic ao da imagem
A biblioteca utilizada neste trabalho [7], permite o acesso a imagens de c ameras
atrav es da plataforma OpenCV. Ela permite trabalhar com a imagem como se a mesma
fosse uma matriz tridimensional. A primeira dimens ao da matriz representa a altura, a
segunda dimens ao representa a largura e a terceira representa os canais vermelho, verde,
azul (RGB) e alfa () de cada pixel. O fator alfa de cada pixel e utilizado para determinar
como as cores ser ao unidas quando imagens de cores diferentes estiverem sobrepostas.
Figura 2. Representac ao da matriz tridimensional da imagem de XY
Os valores representam respectivamente a quantidade de vermelho (R), verde (G),
azul (B) e alfa() do pixel na posic ao vertical (y) e posic ao horizontal (x). Cada quanti-
dade, est a entre 0 e 255.
2.2. Normalizac ao para escala de cinza
A primeira fase de pr e-processamento trata-se da normalizac ao da imagem colo-
rida para tons de cinza. A normalizac ao foi feita com base no valor m edio dos canais de
cores da imagem, conforme a equac ao 1.
V alor
cinzai,j
=
n

R + G + B
3

i,j
(1)
Onde:
V alor
cinza
- valor entre 0 - 255 para a escala de cinza
R - valor vermelho do ponto
G- valor verde do ponto
B- valor azul do ponto
n- quantidade de pontos da imagem
i, j - coordenadas (x,y) do ponto na imagem
A Figura 3 apresenta o resultado deste processo.
Figura 3. Imagem normal (a) e imagem normalizada em cinza (b)
2.3. Binarizac ao da imagem
Existemdiversos algoritmos para binarizac ao de imagens, dentre a lista de soluc oes
para este o algoritmo de Otsu, por ser de f acil implementac ao e apresentar resultados sa-
tisfat orios nos experimentos realizados.
O m etodo de Otsu e um m etodo de thresholding global, isto e, o valor obtido e
uma constante, para escolha do melhor limiar. A base deste m etodo e sua interpretac ao
do histograma como uma func ao de densidade de probabilidade discreta [4], do seguinte
modo:
p
r
(r
q
) =
n
q
n
, q = 0, 1, 2, ..., L 1 (2)
Onde:
n e o total de pixels da imagem;
n
q
e o total de piixels que tem intensidade r
q
e
L e o total de nveis de intensidade na imagem.
O m etodo de Otsu escolhe o limiar de valor k, tal que k e um nvel de intensidade
que divide o histograma em duas classes C
0
= [0, 1, ..., k 1] e C
1
= [k, k +1, ..., L1],
e que maximise a vari ancia
2
B
denida como:

2
B
=
0
(
0

T
)
2
+
1
(
1

T
)
2
(3)
Sendo:

0
=
k1

q=0
p
q
(r
q
) (4a)

1
=
L1

q=k
p
q
(r
q
) (4b)

0
=
k1

q=0
qp
q
(r
q
)

0
(4c)

1
=
L1

q=k
qp
q
(r
q
)

1
(4d)

T
=
L1

q=0
qp
q
(r
q
) (4e)
O resultado da binarizac ao com limiar ajustado segundo o m etodo de Otsu pode
ser observado na Figura 4
Figura 4. Imagem binarizada com limiar denito pelo m etodo de Otsu (b).
2.4. Remoc ao de fundo
A subtrac ao de fundo foi implementada utilizando uma t ecnica de subtrac ao sim-
ples. Os valores do primeiro frame s ao comparados e se a diferenca for maior que um de-
terminado threshold com o frame atual, o pixel e considerado como objeto, caso contr ario,
ser a considerado fundo. Os resultados dessa t ecnica n ao s ao extremamente ecazes, pois
n ao levam em considerac ao nenhum embasamento estatstico e nem uma etapa de treina-
mento, mas para este trabalho mostraram-se sucientes ajustando-se o Threshold (6) de
acordo com o ambiente.
r
i,j
= |R
primeiro
R
atual
|
i,j
(5a)
g
i,j
= |G
primeiro
G
atual
|
i,j
(5b)
b
i,j
= |B
primeiro
B
atual
|
i,j
(5c)
Threshold = r
i,j
+ g
i,j
+ b
i,j
(6)
Onde:
Threshold valor entre 0 255 para a escala de cinza
R
primeiro
valor vermelho do ponto no primeiro frame
G
primeiro
valor verde do ponto no primeiro frame
B
primeiro
valor azul do do ponto no primeiro frame
R
atual
valor vermelho do ponto no frame atual
G
atual
valor verde do ponto no frame atual
B
atual
valor azul do do ponto no frame atual
(i, j) coordenadas (x, y) do ponto na imagem
E por m:
(R, G, B)
atual
= 255 Threshold K(R, G, B)
atual
= 0 Threshold < K (7)
Onde:
K valor ajustado manualmente no programa de acordo como ambiente
2.4.1. Detecc ao de bordas com ltro Sobel
O ltro Sobel calcula o gradiente da intensidade da imagem em cada ponto, dando
a direcc ao da maior variac ao de claro para escuro e a quantidade de variac ao nessa
direcc ao, atrav es de duas matrizes 3x3, que s ao convoludas com a imagem original para
calcular aproximac oes das derivadas - uma para as variac oes horizontais Gx e uma para
as verticais Gy.
M ascara de Sobel 3x3
Gx =

1 0 +1
2 0 +2
1 0 +1

Gy =

1 2 1
0 0 0
+1 +2 +1

A magnitude do gradiente e dado por:


|G| =

Gx
2
+ Gy
2
Figura 5. Resultado do ltro Sobel (b) e uma imagem binarizada (a).
2.5. Reconhecimento dos padr oes
2.5.1. Determinac ao do fecho convexo
Um conjunto S R
d
e convexo se z
1
+ (1 )z
2
S sempre z
1
, z
2
S, e
0 1. Resumidamente, S cont em todos os segmentos de linha que conectam
pares de pontos em S.
O fecho convexo gerado por um conjunto de pontos P e a intersecc ao de todos
conjuntos convexos S que contem P. Se P = {z
i
R
d
, i = 1 . . . , n} e nito,
pode ser expresso da seguinte forma:
S = {
n

i=1

i
z
i
| 0
i
1,

i
= 1}.
-6
-4
-2
0
2
4
6
8
-5 -4 -3 -2 -1 0 1 2 3 4
Se P e nito, existe um unico subconjunto P

P de tamanho mnimo de tal


modo que o fecho convexo de P

e indentico ao fecho convexo de P. O conjunto


P

e chamado de conjunto gerador de fecho convexo.


Encontrar o conjunto de gerador do fecho convexo de um conjunto nito ponto P
e um problema computacional difcil quando a dimens ao d e maior que 2. Se a
d = 2 existem v arios algoritmos ecientes.
2.5.2. Algortimo da embrulho de presente
O algoritmo da marcha de Jarvis, popularmente conhecido como gift wrapping
algorithm / algoritmo do embrulho de presente , visita os pontos do fecho convexo
de maneira ordenada.
1. Comecamos com qualquer ponto do fecho. O ponto com maior coorde-
nada em x e uma escolha natural. Chamamos esse ponto de (X
0
, Y
0
).
2. Varremos (marchamos) atrav es de todos os pontos (X
i
, Y
i
) e localiza-
mos o ponto tal que o angulo a partir da coordenada (1, 0) para (X
i

X
0
, Y
i
Y
0
) e minmo. Este e o pr oximo ponto de sentido anti-hor ario a
partir de (X
0
, Y
0
) no fecho, chamamos-o de (X
1
, Y
1
).
3. Suponhamos que tenhamos localizado o ponto (X
i
, Y
i
), i = 1, . . . , m que
ocorrem no sentido anti-hor ario ao fecho onde m 2. Calculamos todos
os angulos entre os vetores (X
i
X
m
, Y
i
Y
m
) e (X
m1
X
m
, Y
m1
Y
m
),
e procuramos o ponto i que tenha o menor agulo positivo. Adicionamos
este ponto ao fecho.
4. Retornarmos a etapa 3 at e que (X
m
, Y
m
) = (X
0
, Y
0
).
-6
-4
-2
0
2
4
6
8
-5 -4 -3 -2 -1 0 1 2 3 4
Fecho completo
Candidato a proximo ponto
O algoritmo de marcha Jarvis tem no pior caso complexidade O(n
2
), o que ocorre
se todos os pontos est ao no fecho. Em geral, se h pontos est ao no fecho, a complexidade
e O(nh).
Figura 6. Determinac ao do fecho convexo (a) na posic ao papel
2.6. Determinac ao do padr ao
2.6.1. C alculo da area do fecho convexo
Utilizamos o m etodo Shoelace de Gauss para calcular a area do total do fecho
convexo, obtendo com precis ao seus pontos extremos. Com o m etodo e possvel obter
a area fechada de qualquer regi ao poligonal conhecendo apenas as coordenadas de seus
v ertices. A formula geral pode ser expressa como:
Onde:
A area
n quantidade de vertices do poligono
(x, y) coordenadas (x, y) do ponto
O m etodo funciona em qualquer regi ao poligonal, independentemente do n umero
de lados. A raz ao pela qual esta f ormula e chamada a f ormula do cardaco de sapato e
devido ao m etodo utilizado.
Para determinarmos a area de um tri angulo com v ertices (2, 4), (3, 8) e (1, 2),
devemos construir a matriz por andandonos v ertices do tri angulo, terminando com o
ponto que comecamos.
Funcionamente temos, multiplicamos atrav es das linhas, em seguida, adicionamos
os dois lados. Ficamos 8 e -6. Finalmente aplicamos na na f ormula:
2.6.2. C alculo da area branca
Para o c alculo da area brancafoi utilizado uma c opia da matriz binarizada, sem
aplicac ao do ltro de Sobel, e cada pixel dos vertices do fecho e gravado nessa c opia, e
em seguida s ao vericados se os pixels dentro do fecho s ao pretosou brancos, sendo
os pixels brancoscontabilizados. A Figura 7 demonstra as areas em quest ao.
Figura 7. Fecho convexo (a) e imagem binarizada (b) utilizada no c alculo.
2.7. Funcionalidades do jogo
2.7.1. Calibragem inicial
Extraindo caractersticas do fecho convexo, como area total, area dos pixels bran-
cose pontos mnimo e m aximo conseguimos determinar e diferenciar o gesto da m ao do
jogador.
Atrav es da raz ao da area de pixels brancospara area total no fecho consegui-
mos diferenciar o gesto que representa a tesoura dos gestos papele pedra. Por em
a diferenciac ao entre papele pedrautilizando apenas a raz ao se mostrou inadequada,
com ambos os gestos possuindo uma raz ao pr oxima a 1 no fecho. Para evitar situac oes
em que pedrae papels ao reconhecidos incorretamente e necess ario uma calibragem
inicial na qual e detectada e armazenada a dist ancia do pontos mnimo e m aximo do gesto
pedra, essa dist ancia e ent ao comparada em situac oes em que o gesto n ao e tesoura para
determinar se e pedraou papel.
Figura 8. Tela de calibragem inicial do jogo.
2.7.2. Multilinguagem
Para possibilitar o uso de m ultiplos idiomas no jogo foi utilizado arquivo perso-
nalizado para armazenar os textos de cada idioma e Hash Table. Cada arquivo de texto
cont em todas as frases que aparecem no jogo em um determinado idioma, o nome do ar-
quivo recebe a sigla do idioma e pas, como exemplo temos o idioma Portugu es do Brasil
a qual o arquivo com os textos recebe o nome de pt BR.conf, a extens ao do arquivo para
leitura do mesmo no jogo n ao e signicante e foi escolhida apenas por ser utilizada em
arquivos de congurac ao de servidores.
O conte udo do arquivo possui a seguinte estrutura interna:
Chave unica que represente o texto=Texto a ser exibido
Segunda chave unica que represente o texto=Segundo Texto
Para facilitar debug e organizac ao do c odigo a chave unica e sempre o texto ori-
ginal no idioma ingl es, nosso algoritmo na aus encia do texto traduzido retorna a chave
unica. Com essa estrutura cada frase apenas pode ocupar uma unica linha do arquivo de
idioma.
Durante o carregamento do jogo o arquivo de texto do idioma previamente con-
gurado como padr ao e aberto e seu conte udo e armazenado emuma Hash Table contendo
24 ndices. O n umero de ndices foi escolhido por representar a quantidade de caracteres
do alfabeto latino.
Para inserc ao e retorno de frases na Tabela Hash e gerado uma chave de ndice
utilizando a primeira letra da frase.
ndice = c % 24 (8)

Indice = representac ao num erica do primeiro caractere da frase % (m odulo) 24


Onde:
ndice valor entre 0 23
c valor n umerico que representa o primeiro caractere da chave
% m odulo
Nosso jogo apresenta uma quantidade pequena de frases, mas ainda h a a proba-
bilidade de ocorrer colis oes com frases obtendo um mesmo ndice. A m de tratar essas
colis oes utilizamos um algoritmo simples, usamos um vetor de ponteiros que armazena
as structs representando a chave unica e o texto a ser exibido, quando ocorre colis oes num
determinado ndice e utilizado lista ligada para armazenas as colis oes do ndice.
Figura 9. Exemplo de uma HashTable com tratamento de colis ao usando listas
ligadas.
Nosso algortimo para retorno de frases mediante chave unica executa os seguintes
passos:
1. Gerac ao do ndice a partir da chave unica fornecida.
2. Comparac ao da chave unica informada com a chave unica no primeiro elemento
no ndice obtido para vericar igualdade.
3. Repetic ao da comparac ao enquanto n ao for encontrada uma combinac ao e ainda
houver elementos na lista ligada do ndice obtido.
4. Retorno do ponteiro de caracteres da frase associada a chave unica armazenada na
HashTable, se n ao houver uma combinac ao exata da chave unica e retornado o
ponteiro para a chave unica para facilitar debug.
A inserc ao de conte udo na Hash Table e constante e o retorno no melhor caso
tamb em, no pior caso o retorno ser a O (n) sendo n a quantidade de colis oes no ndice
onde a chave unica est a sendo procurada.
O uso de Tabela Hash possui a vantagem de ter uma busca mais r apida para retorna
de frases que o uso apenas de uma unica estrutura de lista ligada para armazenamento de
todas as chaves unicas e frases.
2.7.3. Pontuac ao
Para nalizar o jogo, duelando o chefe, e necess ario obter 10 pontos chamados
de pontos de respeito. Inicialmente o jogador possui 1 ponto de respeito e duela contra
servosdo chefea m de obter mais pontos. Os duelos s ao partidas que possuem uma
determinada quantidade de jogadas, quando o jogador ganha mais da metade das jogadas
ele vence a partida obtendo pontos de respeito. Dependendo das caractersticas do servo
o jogador pode ganhar 1, 2 ou 3 pontos numa unica partida, ou perder todos os pontos
quando perde a partida.
Perdendo todos os pontos de respeito o jogo e nalizado com a derrota do jogador.
Obtendo o n umero necess ario de pontos (10 pontos), para duelar o chefe, o jogador e
introduzido a ultima partida que nalizar a o jogo.
A quantidade de pontos de respeito a serem obtidos ou perdidos por servo, o
n umero m aximo de pontos necess arios para duelar o chefee a quantidade de jogadas
por partida s ao congur aveis e essas informac oes podem ser alteradas no arquivo de
congurac ao geral conguracao.confe nos arquivos de congurac ao dos servos.
2.7.4. Probabilidade Inimigo
Enquanto o jogador n ao obteve os pontos necess arios para enfrentar o chefee
ainda n ao perdeu todos os pontos de respeito, ele deve enfrentar servos. Os servoss ao
escolhidos pelo jogo usando pseudo-aleatoriedade e probabilidade.
Servo Pontos Fornecidos Pontos Removidos Probabilidade de ser escolhido
1 1 1 40%
2 3 2 35%
3 2 3 15%
4 0 10 5%
5 2 3 5%
3. Resultados
Os resultados obtidos possibilitaram o desenvolvimento de um algortmo para
detecc ao de padr oes pr e-estabelecidos de gestos, atrav es da simples an alise do compor-
tamento dos pontos da imagem segmentada. Entretando, este tipo de an alise, por mais
rudimentar que seja apresentou-se ecaz para este problema.
Ao longo desse trabalho, foi possvel obtermos uma vis ao de alguns dos problemas
no campo da vis ao computacional e da geometria computacional, casos em que deman-
davam uma maior atenc ao no desenvolvimento de seus algortmos, al em de cuidado na
performance em que algoritmos destes ramos demandam.
Figura 10. Tela de opc oes com opc ao de debug ativada nas congurac oes mos-
trando no canto superior esquerdo o fecho convexo.
Figura 11. Tela da partida. As m aos escolhidas pelo jogador e advers ario s ao
reveladas quando o contador no canto superior esquerdo zera.
4. Conclus ao
O trabalho apresenta como principal contribuic ao, uma possibilidade de reconhe-
cimento de padr oes pr e-determinados para controle de jogos utilizando m etodos simples,
por em com resultados, dentro de seus limites, precisos.
Os algoritmos propostos s ao de f acil implementac ao e n ao requerem uma aborda-
gem matem atica profunda para sua compreens ao e aplicac ao. O trabalho mostra ainda,
que estes m etodos, com pouca modicac ao poderiam ser utilizados em qualquer outro
tipo de interface por vis ao computacional, uma vez que seus algoritmos possuem comple-
xidades relativamente m edias.
Refer encias
[1] MARQUES FILHO, Og e; VIEIRA NETO, Hugo. Processamento Digital de Imagens,
Rio de Janeiro, Brasport, 1999.
[2] MARENGONI, Maurcio; STRINGHINI, Denise. Tutorial: Introduc ao ` a Vis ao. Compu-
tacional usando OpenCV, Revista Rita, Porto Alegre, v. XVI, n 1, 2009
[3] BRAZIL, Emilio Ashton Vital. Algoritmos de Fecho Convexo, Geometria Computacio-
nal, IMPA - Instituto de Matem atica Pura e Aplicada, 02 de Maio de 2005.
[4] MATTEUCCI, Matteo. Lecture 4 (2000), disponivel em: http://homepages.inf.
ed.ac.uk/rbf/CVonline/LOCAL_COPIES/MORSE/threshold.pdf.
[5] HAMBERG, Charles L; VAVRINEK Ronald. Shoelace Algorithm.. Illinois Mathe-
matics and Science Academy disponvel em:. http://choosgs3math.wiki.
hci.edu.sg/file/view/Shoelace.pdf.
[6] SOBEL, Irvin A 3x3 isotropic gradient operator for image processing. Never published
but presented at a talk at the Stanford Articial Project, 1968.
[7] HASHIMOTO, Marcelo - Biblioteca fornecida para este projeto. Tela de cali-
bragem inicial do jogo.disponvel em https://github.com/senacbcc/
Hashimoto-Camera-lib.

Você também pode gostar