Visão computacional é uma divisão da computação que trabalha com o conceitos das máquinas que enxergam. Esta tecnologia é geralmente aplicada em robôs industriais, veículos autônomos, câmeras inteligentes, biometria e outros sistemas computacionais.
Trabalhos relacionados à visão computacional, têm ainda um longo caminho evolutivo, pois somente após o final da década de 70 que se iniciaram estudos aprofundados. Entretanto, a evolução do hardware e os seus respectivos recursos, vem ajudando muito ao progresso deste segmento.
A visão computacional é um problema mal posto, como também não existe uma formulação padrão para a resolução do mesmo, todos os métodos são baseados em aprendizagem e está cada vez mais comum no mercado de tecnologia.
O reconhecimento de padrões e a aprendizagem de máquina é um processo que consiste em determinar se uma imagem contém ou não um objeto. As principais lógicas de processamento estão classificadas geralmente em:
- Aquisição da imagem: geralmente a imagem é obtida através de um dispositivo de vídeo captura, câmeras digitais, celulares, smartphones e outros.
- Pré-processamento: geralmente, é necessário processar a imagem para garantir as condições mínimas. Por exemplo, redução de ruídos, balanceamento de brilho e contraste.
- Extração da características: características matemáticas em diversos níveis de dificuldades são extraídas. Como exemplo, o processo de detecção de borda, cantos, morfologia matemática e muitos outros.
- Segmentação: a seleção de regiões de interesse e/ou segmentação são incluídas nas áreas que contém o objeto.
- Processamento: um conjunto de dados é processado e verificado a satisfação e conformidades matemáticas.
O princípio computacional do título deste artigo, baseia-se com os devidos treinos computacionais (o qual não é o objetivo deste documento), podemos detectar animais, humanos, partes do corpo e objetos. Então, se identificados os itens mencionados, podemos estimar a ação do indivíduo e/ou animal e objeto.
Após detectar as partes do corpo, calculamos os vetores para simplificar o trabalho do algoritmo de detecção de esqueleto. Sendo assim, facilmente identificamos, por exemplo, pedestres, ciclistas, cavalos e outros prováveis obstáculos possivelmente diante do veículo.
Com todas estas informações, as ações como pular, falar ao celular, tocar um instrumento, ler, cavalgar, correr, tirar foto, usar um computador e outros, tornaram-se uma tarefa tangível.
E a performance? Em 2011 utilizei a biblioteca OpenCV compilada com as chamadas do SDK NVIDIA. Ou seja, utilizei a GPU para obter o máximo desempenho na localização de padrões. No caso do vídeo demonstrativo a seguir uma face.
Atualmente, com a abertura do código Tegra para
GNU/Linux, podemos em hardwares embarcados, utilizar todo o poder do hardware junto à biblioteca OpenCV e outros recursos/bibliotecas de visão computacional.