Pular para o conteúdo principal

Rastreamento de objetos com reTerminal e câmera Pi com OpenCV

Uma introdução

O rastreamento de objetos é o processo de localizar consistentemente um objeto específico em quadros consecutivos de um vídeo. No campo dos rastreadores de objeto único, o quadro inicial serve como referência, com o objeto-alvo marcado por um retângulo delimitador. Os quadros subsequentes então utilizam algoritmos de rastreamento para seguir e traçar o movimento do objeto. Normalmente, esses rastreadores são utilizados juntamente com detectores de objetos em aplicações do mundo real, combinando os pontos fortes de ambas as tecnologias para obter maior precisão e eficiência.

Começando

Antes de iniciar este projeto, você pode precisar preparar seu hardware e software com antecedência, conforme descrito aqui.

Preparação de hardware

Preparação de software

Recomendamos instalar a versão Bullesye ou Bookworm do Raspberry Pi OS 64 bits a partir do site oficial. Se você preferir instalar um novo Raspbian OS, siga as etapas descritas neste guia.

nota

Recomendamos fortemente conferir nosso tutorial anterior sobre Começando com OpenCV, pois este tutorial serve como continuação da nossa série.

Rastreamento vs. Detecção

Em wikis anteriores, abordamos detecção de rosto e detecção de cor, mas notamos sua natureza intermitente. Aqui está uma comparação rápida:

  1. Vantagem de velocidade: O rastreamento é mais rápido do que a detecção. Ao aproveitar os dados do quadro anterior, os algoritmos de rastreamento prevêem as localizações dos objetos, enquanto os algoritmos de detecção geralmente começam do zero em cada quadro.
  2. Tratamento de falhas: Se um detector de rosto falhar devido à oclusão, os algoritmos de rastreamento se destacam. Eles podem lidar com obstrução parcial, oferecendo desempenho robusto quando a detecção falha.
  3. Persistência de identidade: A detecção de objetos fornece retângulos dos objetos detectados, mas não mantém a persistência de identidade. O rastreamento se destaca em manter a identidade consistente do objeto entre os quadros, algo crucial para muitas aplicações do mundo real.

Quais são os algoritmos no domínio de rastreamento?

Aqui estão alguns dos principais algoritmos de rastreamento de objetos com seus prós e contras

BOOSTING

  • Prós: Simples e em tempo real. Tem bom desempenho com movimento consistente.
  • Contras: Tem dificuldades com padrões de movimento complexos e oclusões.
  • Velocidade: Rápida.
  • Precisão: Moderada.

MIL (Multiple Instance Learning)

  • Prós: Eficaz no tratamento de oclusões e mudanças na aparência do objeto.
  • Contras: Pode ser sensível a ruído e à desordem de fundo.
  • Velocidade: Moderada.
  • Precisão: Boa.

KCF (Kernelized Correlation Filter)

  • Prós: Alto desempenho em velocidade. Robusto contra variações de escala.
  • Contras: Sensível a cenários fora de visão.
  • Velocidade: Rápida.
  • Precisão: De Moderada a Alta.

TLD (Tracking, Learning, and Detection)

  • Prós: Autoatualizável e capaz de redetectar objetos perdidos.
  • Contras: Propenso a desvio e pode ter dificuldades com movimento rápido.
  • Velocidade: Moderada.
  • Precisão: Moderada.

MEDIANFLOW

  • Prós: Robusto no tratamento de mudanças abruptas de movimento e oclusões.
  • Contras: Pode ter dificuldades com mudanças significativas na aparência do objeto.
  • Velocidade: Rápida.
  • Precisão: Moderada.

MOSSE (Minimum Output Sum of Squared Error)

  • Prós: Extremamente rápido e adequado para aplicações em tempo real.
  • Contras: Robustez limitada em condições desafiadoras.
  • Velocidade: Muito rápida.
  • Precisão: Moderada.

CSRT (Channel and Spatial Reliability Tracker)

  • Prós: Alta precisão e robustez em cenários desafiadores.
  • Contras: Computacionalmente mais caro.
  • Velocidade: Moderada.
  • Precisão: Alta.

Vamos executar o código

Certifique-se de que você está na pasta correta. Caso não esteja

cd Seeed_Python_ReTerminal/samples/Opencv_and_piCam

Então, ou até mesmo, você pode usar o Thonny IDE para executar o script em Python.

python Tracking.py

O script Python acima foi projetado para rastrear rostos. O seguinte trecho de código lida com o cenário em que o rastreamento falha, fazendo com que o sistema inicie um novo processo de detecção e vice-versa.

python DetectandTrack.py

Suporte técnico

Obrigado por escolher nossos produtos! Estamos aqui para lhe oferecer diferentes tipos de suporte para garantir que sua experiência com nossos produtos seja a mais tranquila possível. Oferecemos vários canais de comunicação para atender a diferentes preferências e necessidades.

Loading Comments...