domingo, 10 de junho de 2012

Algoritmo de detecção da bolinha

No post do primeiro ensaio com a câmera Manta já havia sido feita uma primeira abordagem do algoritmo de detecção da bolinha. O algoritmo utilizado naquela ocasião fazia a subtração da imagem atual com uma imagem modelo e depois o resultado era submetido a outras duas operações: equalizar histograma e suavização de imagem. É claro que até esse ponto o algoritmo ainda não é capaz de detectar a bolinha, o que está sendo feito na verdade é o condicionamento da imagem para que no passo seguinte ocorra uma análise capaz de diferenciar a bolinha do restante da imagem. 
Dos conceitos utilizados no primeiro algoritmo apenas a ideia da subtração permaneceu, e junto com ela passou a ser utilizada a operação de limiar (ou threshold). A figura abaixo ajuda a entender o conceito do limiar.

Limiar binário

Na operação de limiar cada pixel da imagem é testado isoladamente, e se o valor de um determinado pixel for maior ou igual ao valor de limiar, então ele será substituído pelo valor máximo e caso contrário, será substituído pelo valor mínimo. Este tipo de limiar é conhecido como limiar binário, pois o resultado deste processamento gera uma imagem binária, ou seja, com apenas duas cores, no caso: preto e branco.

Atualmente o condicionamento da imagem é realizado conforme o fluxograma abaixo.

Fluxograma do algoritmo de condicionamento da imagem

Observação: a operação subtração retorna o módulo da subtração, ao invés da subtração propriamente dita.

A sequência de imagens abaixo mostra a imagem modelo, a imagem atual e a imagem resultante, respectivamente. O valor utilizado para o limiar foi de 90, sendo que cada pixel da imagem varia de 0 a 255.

Imagem modelo
Imagem atual
Imagem resultante

O conceito utilizado para identificar a bolinha consiste em varrer toda a imagem em busca de um quadrado contendo todos os pixels brancos e área inferior à área da bolinha. A bolinha, em uma imagem sem qualquer tipo processamento, tem um raio de aproximadamente 9 pixels, por isso a área escolhida para o quadrado foi de 6x6 pixels, ou 36 pixels². O raio da bolinha pode variar conforme o zoom ajustado na lente, no entanto, acredita-se que a variação não seja significativa a ponto de ser necessário alterar a área do quadrado.

No vídeo abaixo é possível ver o algoritmo em funcionamento. O círculo rosa indica aonde o algoritmo acredita ter encontrado a bolinha, isso significa que nesta área - a que foi marcada com o círculo rosa - existem um ou mais quadrados brancos de 6x6 pixels. Uma vez que os quadrados foram encontrados, o ponto onde a bolinha possivelmente está localizada, em relação ao campo da mesa, é determinado através do cálculo do centro de massa de todos os quadrados.



Pelo que se vê no vídeo conclui-se que o algoritmo funciona muito bem, pois foi possível encontrar a bolinha em quase 100% das vezes em que ela está presente na imagem. Mas apesar do bom funcionamento do algoritmo existe uma situação problemática: quando um outro objeto, no caso uma mão, aparece na imagem o reconhecimento da bolinha fica prejudicado. Todavia, esse fato não foi visto como um problema, pois no momento do jogo real isso não deverá ocorrer.

Certamente a característica mais importante do algoritmo é a sua simplicidade que reflete em um baixo tempo de processamento, que no caso do projeto PeboTron é de vital importância, dado que ele é um sistema de tempo real. O tempo de processamento poderá ser minimizado mais ainda se for aplicada uma técnica conhecida como região de interesse, que inclusive é um dos recursos da câmera Manta G-032.

Por fim, tendo conhecimento das coordenadas da bolinha, calculada em cada imagem adquirida, será possível calcular sua trajetória e estimar onde o goleiro deverá estar posicionado para efetuar a defesa.

quarta-feira, 30 de maio de 2012

Aquisição de vídeos no sistema real

Conforme visto no post anterior, foi criada uma estrutura para sustentar a câmera acima da mesa de pebolim. Com isso já foi possível fazer aquisições no sistema real do projeto - uma mesa de pebolim. As aquisições feitas aconteceram: uma no período noturno utilizando-se a iluminação artificial de uma lâmpada fluorescente e outra no período diurno aproveitando-se a iluminação natural vinda de uma janela.

 Na situação com iluminação artificial a lâmpada fluorescente estava posicionada sobre a mesa e aproximadamente no centro do campo. Nesta configuração foi possível notar que havia excesso de brilho nos vídeos adquiridos, esse problema também se deve ao verniz da mesa, que espalha a luz pela superfície. Na tentativa de amenizar esse efeito foi colocado um difusor de luz, de cor branca, cobrindo a lâmpada, essa medida fez com que o brilho se concentrasse apenas num determinado ponto, diminuindo então o efeito radial que a luz produz.
A imagem logo abaixo mostra o difusor utilizado, enquanto que a imagem seguinte foi obtida pela câmera utilizando-se a iluminação citada anteriormente.

Difusor de luz utilizado

Imagem adquirida pela câmera utilizando-se iluminação artificial

Pela imagem da câmera é possível notar que mesmo utilizando-se o difusor ainda assim há uma concentração de luz branca no centro do campo, em poucas palavras isso significa que a bolinha não será detectável nessa região.
Tendo conhecimento disso é possível melhorar a iluminação de modo a torná-la indireta e homogênea.

Na situação quando a iluminação utilizada foi a própria luz do dia, os vídeos adquiridos foram muito mais nítidos, na imagem abaixo é possível verificar isso. Cabe observar que não havia incidência de luz solar sobre a mesa, ou seja, era um dia "sem sol".

Imagem adquirida pela câmera utilizando-se iluminação natural

Como a situação acima é a mais favorável, o algoritmo de reconhecimento da bolinha será, inicialmente, baseado nos vídeos adquiridos sob estas condições.

Abaixo segue um trecho dos vídeos adquiridos em cada uma das situações mostradas acima.

Aquisição realizada no período noturno utilizando iluminação artificial


Aquisição realizada no período diurno utilizando iluminação natural

quinta-feira, 17 de maio de 2012

sexta-feira, 6 de abril de 2012

Primeiro Ensaio com a Manta G-032


Na segunda-feira, 02 de abril, foi feito o primeiro ensaio com a câmera Manta G-032. No ensaio foram utilizadas uma cartolina verde para representar a mesa e uma bolinha comum de pebolim. A taxa média das aquisições foi de 62 imagens por segundo. O vídeo abaixo mostra uma das aquisições realizadas.



No vídeo acima é possível notar que a bolinha e a cartolina têm luminosidade bem próxima, isso dificulta a distinção entre o objeto (bolinha) e o fundo (cartolina), consequentemente também dificulta o algoritmo de processamento da imagem.
Esse problema poderá ser amenizado utilizando-se cores de fundo e objeto que apresentem luminosidades distantes. Esse distanciamento pode ser verificado fazendo-se uso de um histograma.
No entanto, cabe algumas observações quanto a esse primeiro ensaio. A primeira é que a cor verde da cartolina não corresponde à cor verde do campo. O verde do campo tem uma tonalidade mais escura e certamente irá produzir um melhor resultado, já que a bolinha é branca (tonalidade clara). Um segundo ponto a ser observado é que a bolinha utilizada no ensaio estava suja, ou seja, não era branca!

Mesmo diante dessas adversidades foi possível criar um algoritmo que apresentasse um bom resultado. O vídeo abaixo mostra o resultado do algoritmo que tem como entrada o vídeo mostrado acima.



O diagrama de blocos do algoritmo utilizado está representado na figura abaixo.


O bloco Imagem carrega uma imagem ou uma sequência de imagens (vídeo).
O bloco Subtração faz a subtração pixel a pixel de duas imagens. Por exemplo: a subtração de duas imagens exatamente iguais resulta em uma terceira imagem totalmente preta.
O bloco Equalizar Histograma estende a  faixa de frequência onde a imagem está concentrada.
O bloco Suavizar tem a função de diminuir o ruído de uma imagem.
O bloco ShowImage exibe uma imagem ou uma sequência de imagens (vídeo).



quarta-feira, 4 de abril de 2012

Dimensões da Mesa de Pebolim

Abaixo as dimensões do campo e da mesa de Pebolim utilizada no projeto.

  • Medida do campo: 1120 mm x 690 mm
  • Medida da mesa: 1370 mm x 870 mm
  • Altura do campo: 780 mm
  • Altura da mesa: 920 mm


A partir destes dados, está sendo realizado o estudo da estrutura para o apoio da câmera e iluminação, independente da estrutura da mesa.



sexta-feira, 23 de março de 2012

Câmera

A câmera escolhida para o projeto foi a Manta G-032B da Allied Vision Technologies - AVT.



A Manta G-032B utiliza sensor Sony ICX424 e faz captura de imagens em preto e branco com 80 fps à máxima resolução, que é de 656x492. É possível conseguir maior números de frames por segundo se a região de interesse for menor.

Dentre as várias possíveis aplicações para esta câmera destacam-se:
  • Inspeção de semicondutores
  • Inspeção de alimentos
  • Inspeção farmacêutica
  • Oftalmologia

Abaixo seguem os links da documentação da câmera:


O sensor Sony ICX424 é do tipo CCD Progressive, sua curva é mostrada abaixo.


Com esta curva é possível saber em qual faixa do espectro óptico a câmera tem melhor eficiência. Como cada cor tem um comprimento de onda diferente a câmera apresentará melhor ou pior eficiência conforme a cor amostrada.
O gráfico abaixo mostra o espectro de cores.

 unidade: nm

Comparando-se o espectro de cores  com a curva do sensor pode-se concluir, por exemplo, que a câmera é menos eficiente quando exposta às cores vermelhas.
Neste link há uma texto interessante sobre o assunto.




segunda-feira, 19 de março de 2012

Primeiro teste

Filmagem feita com uma câmera de 30 fps.

A sequência abaixo corresponde a um chute bem fraco.