Aviso: Se está a ler esta mensagem, provavelmente, o browser que utiliza não é compatível com os "standards" recomendados pela W3C. Sugerimos vivamente que actualize o seu browser para ter uma melhor experiência de utilização deste "website". Mais informações em webstandards.org.

Warning: If you are reading this message, probably, your browser is not compliant with the standards recommended by the W3C. We suggest that you upgrade your browser to enjoy a better user experience of this website. More informations on webstandards.org.

Detalhes do funcionamento da aplicação de Análise Automática do Jogo de Damas

Segmentação de Cor

As imagens usadas são a cores, no entanto, por questões de velocidade e robustez a análise das imagens é feita em grayscale. Assim, no início do processamento de cada imagem é feita a passagem de RGB para grayscale.

Como todo o processamento se baseia na cor (intensidade neste caso), e por conseguinte, nos limiares usados, desenvolveu-se uma função que calcula os limiares automaticamente a partir duma imagem do tabuleiro sem peças (apenas é necessário que o utilizador seleccione um rectângulo na imagem do interior do tabuleiro). Esta função calcula dois intervalos, um para as casas pretas e outro para as casas brancas. Veja-se na seguinte imagem um exemplo:

Na imagem da direita está o histograma do rectângulo seleccionado na imagem da esquerda. As partes do histograma que estão a vermelho são as que estão dentro dos intervalos calculados. Com estes intervalos tem-se as ferramentas para dar início ao processamento de imagem.

Transformada Homográfica

No início do processamento começa-se por aplicar uma transformação homográfica à imagem, de modo a que se fique apenas com o tabuleiro quadrado (com dimensões definidas pela aplicação). Como se assume que numa sequência de imagens a posição do tabuleiro não se altera, o cálculo dos parâmetros da transformação homográfica só são feitos uma vez.

Esta transformação consiste em mapear um quadrilátero qualquer noutro quadrilátero, neste caso, mapear um quadrilátero num quadrado. Assim, para calcular os parâmetros da transformação, fazem-se corresponder 4 pontos da imagem original a 4 pontos de um quadrado, sendo esses pontos os cantos do tabuleiro. Para encontrar esses pontos, usa-se a transformada de Hough, pois com esta transformada detecta-se os lados do tabuleiro. Após detectar os lados do tabuleiro acham-se os cantos do tabuleiro atravès da intersecção das rectas.
Os cantos são ainda ordenados de modo a que se fique com a coordenada A1 no canto inferior esquerdo.

Após a transformação homográfica, fica-se então com uma imagem do tabuleiro quadrado.
As análises futuras serão sempre feitas em imagens transformadas.
Ainda na mesma função que calcula os parâmetros da transformação, são calculadas propriedades geomètricas relativas as casas pretas, assim como um valor de limiar para as casas pretas, baseado no limiar superior de intensidade das casas pretas calculado atrás. Estas propriedades são:
  1. BoundingBox;
  2. Área;
  3. Centróide;

Após a transformação vai-se verificar se existem mãos no tabuleiro e, se não existir, o programa processa o tabuleiro, caso contrário passa para a próxima imagem (considerando o estado actual das peças igual ao anterior). Para a intensidade das mãos foi considerado um intervalo em torno do ponto mèdio entre o limiar superior da intensidade das casas e o limiar inferior da intensidade das casas brancas. Houve uma preocupação de procurar algo que não pertencesse ao tabuleiro, em vez de procurar explicitamente por mãos.

Detecção da Posição das Peças

A detecção da posição das peças è feita com base na BoundingBox. Após aplicar o threshold calculado para as casas pretas, eliminam-se todos os objectos com área pequena, eliminando assim tambèm as casas com peças brancas. De seguida comparam-se as casas remanescentes com os casas correspondentes no tabuleiro sem peças (processado anteriormente) e no caso de a BoundingBox ser maior, então significa que existe uma peça preta nessa casa. Se não for maior, então a casas está vazia. Todas as casas que não são analisadas nesse ciclo è porque têm casas brancas. Tem-se então as posiç�s das peças.

A sequência das imagens que se segue mostra o decorrer desta parte do trabalho:


...limiar
...eliminar objectos pequenos
...visualizando

Detecção das Peças movidas e comidas

Tendo determinado o estado do tabuleiro actual, interessa determinar quais as peças que foram movidas e quais as peças que foram comidas. Esta parte do trabalho pode ser considerada como um módulo �parte na aplicação, pois o módulo de processamento de imagem já terminou, tendo descoberto a posição de todas as peças no tabuleiro (pretas e brancas) e este segundo módulo apenas compara o estado determinado com o estado anterior para determinar as peças que foram movidas e/ou comidas.

A determinação das peças movidas e comidas è feita sem recorrer a qualquer regra do jogo de damas (pois esta aplicação foi desenvolvida tendo apenas em conta o processamento de imagem, deixando a questão das regras para um n�el superior de processamento). Sendo assim, e tendo em conta que se pode comparar estados de tabuleiros que a partida não têm uma relação directa um com o outro (devido �questão das mãos ou outra questão qualquer) a análise è feita separadamente para as peças pretas e para as peças brancas.

Para cada tipo de peça determinam-se as posiç�s onde há diferenças e, para cada posição onde apareceu uma peça, procura-se uma posição próxima (distância euclidiana) onde tenha desaparecido uma peça. Obtèm-se assim as peças movidas. As peças que não se inclu�em neste grupo são as peças que foram comidas.

Os resultados das jogadas (peças movidas e comidas) são guarda os resultados num ficheiro (Jogadas.txt).

 

Fica assim terminado a análise do tabuleiro.

Para ver o programa a correr, veja-se o exemplo apresentado.