Relatório Laboratório 6

Processamento de Vídeo

Relatório Laboratório 6

Processamento de Vídeo - Detecção de Features (SURF)

1. Introdução

Este relatório documenta o Laboratório 6 da disciplina de Processamento de Vídeo. O foco foi o estudo e aplicação de detecção de características (features) usando o módulo xfeatures2d do OpenCV (algoritmo SURF) em dois cenários: imagem estática e fluxo de vídeo em tempo real (webcam).

Foram desenvolvidos dois programas: (Parte 1) leitura de imagem, detecção e salvamento da saída; (Parte 2) captura contínua da webcam com detecção e visualização simultânea dos keypoints.

Os resultados servem como base para futuras aplicações de rastreamento, reconhecimento e análise de movimento.

2. Fundamentos Básicos

2.1 Features e Keypoints

Features são pontos de interesse (cantos, blobs, regiões de contraste) que podem ser detectados de forma estável sob variações de iluminação e escala. Cada ponto é descrito por um vetor (descritor) para comparação entre imagens.

2.2 SURF

SURF (Speeded-Up Robust Features) usa aproximações com integrais de área para acelerar a detecção de blobs via determinante da matriz Hessiana. Parâmetro principal: minHessian (controle de sensibilidade; menor → mais keypoints).

2.3 Fluxo de E/S

  • Entrada: imagem (Parte 1) ou frames da webcam (Parte 2).
  • Processamento: SURF::create() + detect() + drawKeypoints().
  • Saída: exibição em janela e arquivo de imagem (Parte 1) ou visualização contínua (Parte 2).

2.4 Considerações de Desempenho

No fluxo em tempo real o número de keypoints impacta a latência. Ajustes possíveis: reduzir resolução, diminuir minHessian, trocar para ORB (mais leve).

3. Materiais e Métodos

3.1 Ambiente

  • SO: Linux (Debian).
  • Compilação: CMake + g++ (ver [`lab6/Parte1/CMakeLists.txt`](lab6/Parte1/CMakeLists.txt)).
  • Bibliotecas: OpenCV + opencv_contrib (necessário para SURF).

3.2 Arquivos Fonte

  • Parte 1: – leitura de imagem e escrita de saída com keypoints.
  • Parte 2: – captura da webcam, detecção contínua.

3.3 Procedimentos

  1. Compilar com cmake e make.
  2. Executar Parte 1: ./6PT1 imagem.jpg.
  3. Executar Parte 2: ./6PT2 (abre webcam).
  4. Observar keypoints e ajustar minHessian se necessário.

3.4 Observação de Código

  • Uso de drawKeypoints() para visualização.
  • Em Parte 2 a variável source é definida mas a abertura usa cap.open(0) (pode ser ajustado para usar URL).

4. Resultados e Análises

4.1 Resultados

  • Parte 1: imagem processada salva com sobreposição de keypoints (arquivo prefixado SURF_).
  • Imagem Original
    Imagem com Keypoints SURF
  • Parte 2: fluxo com duas janelas (frame original + keypoints) exibido em tempo real.
  • Video usando a webcam

4.2 Análise

  • Quantidade de keypoints controlada via minHessian.
  • Latência aceitável para resolução padrão da webcam, porem pode aumentar com resoluções maiores (1920x1080).
  • SURF requer módulo contrib e xfeatures2d; dependência confirmada.
  • Possível expansão para matching entre frames ou tracking.

5. Conclusões

O laboratório consolidou o uso de features SURF em contexto estático e dinâmico. A arquitetura de E/S foi aplicada de forma clara e modular.

Próximos passos incluem integração com ORB/SIFT para comparação, extração de descritores e matching, além de otimizações de performance.

Aplicações Futuras

  • Reconhecimento de objetos baseado em keypoints.
  • Registro e alinhamento de imagens.
  • Rastreamento multi-frame.