Visão computacional

Um bate-papo sobre visão computacional

Como detalhamos em artigo anterior, visão computacional é o conjunto de técnicas que permitem a um computador interpretar uma cena visual. A pergunta é: como um computador consegue enxergar algo?

Quando tiramos uma foto com uma Tekpix (é uma brincadeira, não compre essa câmera), um sensor é responsável em codificar raios luminosos em uma imagem digital, no formato de uma matriz. É como se o computador olhasse para cada pedaço da cena e calculasse, por exemplo, o quão forte as cores vermelha, verde e azul estão em determinado ponto (famoso RGB). Esses números formarão um grande “quadro”, no qual cada unidade é chamada de pixel (picture element), representando o que a câmera enxergou no momento em que a foto foi tirada.

dsa

Representação de imagem em grayscale (escala de cinza). Cada pixel possui a intensidade da cor associada (0 representa preto enquanto 255, branco).

A visão computacional, portanto, lida com algoritmos que, a partir das informações de cor e intensidade dos pixels, consiga extrair informações valiosas da cena em questão. Claramente, essa é uma tarefa extremamente complexa e abrangente, tendo assuntos em comum com várias outras áreas do conhecimento, tal como inteligência artificial, aprendizado estatístico de máquinas (machine learning), processamento de sinais, robótica, estatística, física, matemática, entre outros.

Pode-se definir quatro grandes sub-áreas da visão computacional:

  • Restauração de imagens: visa a remoção de ruídos de uma imagem, como ruídos de sensor, borrões, movimentações etc. É essa área a responsável por salvar a sua foto quando você mexe a câmera na hora H, ou até mesmo restaurar fotos que estejam danificadas.
Foto restaurada utilizando a técnica de inpainting

Foto restaurada utilizando a técnica de inpainting

  • Reconstrução de cenas: busca, a partir de um conjunto de imagens, reconstruir um modelo 3D da cena podendo, inclusive, incorporar informações de cor de textura.
Modelo 3D do Coliseu construído a partir de fotos da internet

Modelo 3D do Coliseu construído a partir de fotos da internet

  • Análise de movimento: possui diversas tarefas, como determinar o tipo de movimentação que ocorreu entre duas ou mais imagens (translação e rotação), rastrear o movimento de objetos (tracking) e calcular o fluxo ótico, isto é, como cada ponto moveu-se entre duas imagens.
Cabeça, mãos e pés sendo rastreados a cada imagem

Cabeça, mãos e pés sendo rastreados a cada imagem

  • Reconhecimento: a sub-área clássica da visão computacional, responsável identificar objetos ou atividades em uma cena, por exemplo, contar a quantidade de pessoas presentes na imagem ou detectar um possível assalto.
Reconhecimento de objetos (pessoa e bicicleta) e de cena (pessoa montada na bicicleta)

Reconhecimento de objetos (pessoa e bicicleta) e de cena (pessoa montada na bicicleta)

Visão computacional é tão complexa que, mesmo após décadas de intensa pesquisa na área, não há algoritmo que consiga interpretar imagens de maneira natural, tal qual pessoas são capazes.

Por essa razão, são muito animadores os resultados dessa pesquisa realizada pela Google. Utilizando técnicas avançadas de sistemas distribuídos e redes neurais, a equipe da Google desenvolveu um algoritmo significativamente superior aos mais atuais e venceu a ILSVRC desse ano, uma competição voltada para visão computacional. O algoritmo conseguiu, inclusive, identificar objetos pequenos e difíceis de reconhecer.

Resultados do algoritmo desenvolvido pela Google

Resultados do algoritmo desenvolvido pela Google

Na UnBall, utilizamos algoritmos de visão computacional para identificar bola, campo e robôs, além de realizar o rastreamento de tais objetos e reconhecer o estado atual do jogo.

Gostou de aprender um pouco mais sobre visão computacional? Fique ligado nos próximos posts da equipe UnBall.