Compreendendo a visão computacional e sua aplicação na eletrônica

Desde que a robótica pôde automatizar de forma confiável muitas tarefas humanas, os engenheiros têm tentado diligentemente adicionar os cinco sentidos a essas capacidades – como visão, audição, paladar, olfato e tato. O mais significativo até agora é a visão.

No entanto, a forma como as pessoas veem e como as máquinas “vêem” é bem diferente. O olho humano é um órgão complexo que funciona em unidade com o cérebro. As máquinas só conseguem capturar imagens e, mais especificamente em termos de visão, uma série de imagens cronometradas.

Neste caso, a câmera de uma máquina é um importante sensor eletrônico. Combinadas com a inteligência de um processador ou controlador, as câmeras podem ser usadas para projetar diversas aplicações úteis.

Além disso, muitos sensores de câmera podem ter interface com Arduino, Raspberry Pi e outras plataformas de computação de placa única. Isso significa que você pode usar a visão computacional em seus projetos de eletrônica e robótica.

O que é visão computacional?
A visão computacional é um campo científico interdisciplinar que abrange a capacidade dos computadores de reconhecer e “compreender” imagens e vídeos digitais.

Como atualmente é quase impossível replicar perfeitamente o funcionamento real dos olhos humanos, a visão computacional está amplamente focada na resolução de problemas baseada em aplicativos, usando imagens capturadas ou vídeos digitais. Para funcionar de forma eficaz, muitas vezes incorpora inteligência artificial, aprendizado de máquina, algoritmos e outros métodos especializados.

Embora a visão computacional tenha como objetivo reproduzir as habilidades dos olhos humanos, atualmente está limitada a extrair descrições úteis de imagens como objetos, textos, caminhos ou modelos 3D.

Como a visão computacional é usada?

A visão computacional é usada para detecção ou reconhecimento de objetos por meio de imagens e vídeos digitais. Também pode ser usado para rastrear objetos ou traçar caminhos usando dados visuais. A detecção ou reconhecimento de objetos é, normalmente, usada para resolver problemas específicos de aplicações.

Muito parecido com um sistema de reconhecimento de gestos, ele pode receber comandos através dos gestos manuais de um usuário.

Por exemplo:

  • Num sistema de vigilância, a visão computacional pode detectar o movimento de um potencial intruso ou até mesmo reconhecer um suspeito.
  • Em uma aplicação robótica, ele pode encontrar diferentes caminhos, reconhecer objetos alvo, evitar obstáculos, analisar o ambiente e muito mais.
  • Na automação, pode ser usado para adicionar inteligência artificial baseada em visão para controle de qualidade ou eficiência.
  • Como uma aplicação simples, esse sistema de visão pode manter um registro de imagens ou vídeos digitais para que o computador reconheça e rastreie o ambiente ao seu redor.

Quase todas as aplicações para as quais a visão computacional é usada na robótica são para resolver um problema usando dados visuais.

O sistema
Um sistema de visão computacional usa eletrônicos e requer um sensor de câmera para capturar imagens e vídeos. Muitas vezes também utiliza sensores, um processador ou plataforma de computação (para análise programática das imagens), um controlador e atuadores.

O controlador e os atuadores são fundamentais para a realização das tarefas programadas, com base na análise de imagens e vídeos.

Função
Projetar um sistema de visão computacional envolve um design embarcado que usa um sensor de câmera e processamento de imagem para tomada de decisão. É bastante semelhante a projetar qualquer outro sistema embarcado

Você pode decidir adicionar uma câmera a um projeto de robótica ou eletrônica para uma das seguintes tarefas:

1. Segmentação de objetos: para detectar pixels que constituem um objeto em uma imagem ou vídeo capturado.
2. Detecção de objetos: para detectar o(s) objeto(s) em uma imagem ou vídeo.
3. Identificação do objeto: para identificar o(s) objeto(s) em uma imagem ou vídeo capturado.
4. Verificação de objetos: para confirmar a presença de um objeto usando imagens ou vídeos capturados.
5. Classificação de objetos: classificar o(s) objeto(s) em uma imagem capturada — uma parte do reconhecimento de um determinado objeto ou classe de objetos.
6. Detecção de marco de objeto: para rastrear a posição de um objeto em imagens ou vídeos capturados.
7. Reconhecimento de objetos: reconhecer um objeto usando técnicas de processamento de imagem, aprendizado de máquina e/ou inteligência artificial.

O uso da visão computacional em qualquer aplicação/projeto eletrônico ou robótico pode ser dividido nestas etapas… sistema embarcado

Você pode decidir adicionar uma câmera a um projeto de robótica ou eletrônica para uma das seguintes tarefas:

1. Captura de imagens e vídeos digitais. Isso envolve a interface de um sensor ou módulo de câmera com uma plataforma de computação. Os módulos da câmera vêm com diferentes recursos, como 2D/3D, RGB/escala de cinza/binário, resolução, taxa de quadros, etc.

Os módulos de câmera oferecem diferentes opções de interface, como SPI, MIPI e USB. A câmera é usada apenas para capturar imagens ou uma série cronometrada de imagens. Pode ser analógico ou digital e, normalmente, um digital é usado para aplicações de visão computacional.

2. Pré-processamento de imagens. Depois que uma imagem bruta ou vídeo digital é capturado com a câmera, o sistema de computação deve realizar a filtragem e o pré-processamento (alguns são feitos inicialmente pela câmera). Isso ocorre porque as imagens capturadas podem ficar desfocadas devido a vibrações, movimento ou outros fatores ambientais.

É extremamente importante extrair as informações visuais necessárias das imagens capturadas através de um pré-processamento adequado para obter dados visuais precisos.

Imagens pré-processadas oferecem muitos dados. Enquanto um sensor normal, como de temperatura ou umidade, fornece dados com alguns bytes de comprimento, um único quadro ou imagem colorida (digamos, com resolução de 640 × 480) envolve 640 * 480 * 3 = 921.600 bytes de dados. Portanto, o sistema computacional deve ser capaz de lidar com uma grande quantidade de dados.

3. Processamento de imagens. O processamento de imagens é fundamental no desenvolvimento de projetos de visão computacional. O objetivo de adicionar visão computacional é extrair significado das imagens capturadas. Isso requer várias técnicas e algoritmos de processamento de imagem para extrair os recursos de uma única imagem, um conjunto de imagens ou uma série de imagens cronometradas.

Freqüentemente, as informações entre quadros devem ser extraídas, como para detecção de pontos de referência de objetos. E uma tarefa essencial em qualquer aplicação de visão computacional é a segmentação de objetos. É usado para detecção, verificação, reconhecimento, detecção de pontos de referência, classificação e/ou reconhecimento de objetos.

4. Pós-processamento. Depois que as técnicas de processamento de imagem extraem informações significativas da(s) imagem(s), os dados podem ser processados ​​posteriormente para extração de características de nível superior ou reconhecimento de padrões.

5. Detecção/reconhecimento. Por último, o sistema de computação deve ser capaz de detectar ou reconhecer o(s) objeto(s). O reconhecimento é um processo complexo que utiliza classificação, reconhecimento de padrões e identificação.

6. Tomada de decisão. O objetivo da coleta de dados visuais é, em última análise, realizar uma tarefa. Depois que o sistema detecta e reconhece o(s) objeto(s), a máquina decide o próximo passo. Por exemplo, um sistema de vigilância pode realizar reconhecimento facial usando visão computacional e, em seguida, destrancar uma porta para um visitante autorizado.

7. Inteligência Artificial e aprendizagem automática. Os sistemas de visão computacional usam campos multidisciplinares que podem incluir processamento de imagens, inteligência artificial, aprendizado de máquina ou aprendizado profundo.

Sensores de câmera
Módulos de câmera típicos usados ​​com Arduino ou outras plataformas de microcontroladores incluem: OV7670, OV9655, Arducam MT9D111, Arducam MT9M001, Arducam OV5642, OV2640, módulo de câmera Yosoo e sensor de visão inteligente Pixy.

Para Raspberry Pi, essas câmeras são frequentemente usadas: OV9281, OV2311, IMX 135, OV7251, IMX298, AR1820HS e a câmera oficial Raspberry Pi pode ser usada.

Para Jetson Nano e Xavier NX, considere: IMX477, IMX219, OV9281, OV7251 e OV2311.

Trabalhando com um aplicativo de visão computacional…

Usando OpenCV
A Open Source Computer Vision Library (OpenCV) é uma biblioteca popular que ajuda os usuários a aplicar vários algoritmos e técnicas de processamento de imagens. É uma virada de jogo que simplifica tarefas sofisticadas de processamento de imagens.

A biblioteca pode ser usada com várias linguagens de programação, incluindo C++, Java e Python. OpenCV pode ser executado em um desktop, Raspberry Pi ou qualquer computador de placa única.

Usando Arduino
Por si só, o Arduino é incapaz de realizar processamento de imagens e implementar aplicativos de visão computacional. No entanto, pode ser combinado com computadores de placa única e sistemas desktop para complementar um projeto de visão computacional.

O Arduino também pode ser usado para fazer interface com sensores adicionais, como temperatura e umidade, ou para controlar atuadores como motores, servos ou relés.

Usando RaspberryPi
Raspberry Pi é capaz de executar um aplicativo completo de visão computacional. É possível instalar e executar OpenCV no Raspberry Pi e projetar programas Python, Java ou C++ para implementar um projeto de visão computacional.

Usando uma plataforma Jetson
Junto com o processamento de imagens, a plataforma Jetson pode adicionar inteligência artificial e aprendizado de máquina a um projeto de visão computacional. Nano e Xavier NX são suas placas mais populares.

Formulários
Algumas das aplicações de visão computacional mais populares incluem:

  • Reconhecimento de gestos
  • Reconhecimento óptico de caracteres
  • Construção de modelo 3D
  • Inspeção de máquina
  • Reconhecimento facial
  • Reconhecimento de objeto
  • Captura de movimento
  • Vigilância
  • Reconhecimento de impressão digital
  • Imagens médicas
  • Movimento de partida (mesclando CGI com atores ao vivo em filmes)
  • Segurança automotiva
  • Leitura de código de barras

Conteúdo Relacionado

Voltar para o blog

Deixe um comentário

Os comentários precisam ser aprovados antes da publicação.