Relatório Laboratório 3

Processamento de Vídeo

1. Introdução

Este relatório documenta os procedimentos e resultados do Laboratório 1 da disciplina de Processamento de Vídeo, cujo objetivo principal foi iniciar os trabalhos com a biblioteca OpenCV e estabelecer a base para o desenvolvimento de tarefas de visão computacional.

O experimento focou na preparação e configuração do ambiente, no estudo dos comandos fundamentais de entrada e saída de imagens e vídeos a partir de arquivos e na implementação de scripts para captura de mídia utilizando a webcam.

Este documento visa servir como referência técnica para a equipe sobre a programação de manipulação de mídias e câmeras.

Repositório do Projeto

Todo o código fonte e materiais utilizados neste projeto estão disponíveis em nosso repositório GitHub:

Conteúdo do Repositório:
  • Códigos fonte dos experimentos
  • Documentação e relatórios
  • Imagens e vídeos dos experimentos
  • Estrutura do projeto web

2. Fundamentos Básicos

O processamento de vídeo e imagem se baseia na manipulação de dados em formato de matriz, sendo a biblioteca OpenCV a ferramenta central, responsável por fornecer as rotinas de Entrada/Saída.

2.1 Espaços de Cores

No OpenCV, uma imagem estática é carregada como uma matriz NumPy, onde cada elemento é um pixel de cor. Por padrão, o OpenCV usa o espaço de cores BGR (Azul, Verde, Vermelho), mas também suporta outros espaços de cores importantes:

  • RGB (Red, Green, Blue): O espaço de cores mais comum, onde cada pixel é representado por três valores de intensidade.
  • HSV (Hue, Saturation, Value): Útil para segmentação por cor, pois separa a informação de cor (matiz) da saturação e do brilho.

2.2 Detecção de Bordas

A detecção de bordas é uma técnica fundamental que identifica pontos em uma imagem onde a intensidade luminosa muda bruscamente. Os principais operadores incluem:

  • Canny: Um detector de bordas mais robusto que inclui múltiplas etapas de processamento.

No vídeo, estas técnicas são aplicadas frame a frame, sendo cada quadro processado individualmente através do objeto `cv2.VideoCapture` e exibido na tela a uma taxa de FPS (Frames por Segundo), que é uma métrica fundamental para a avaliação do desempenho do processamento em tempo real.

3. Materiais e Métodos

3.1 Ambiente de Desenvolvimento

1. Ubuntu (Linux OS)

O que é: Uma distribuição Linux de código aberto.

Finalidade: Fornece o sistema operacional e o ambiente de desenvolvimento onde todas as ferramentas serão instaladas e executadas.

2. Terminal (Linux Shell)

O que é: Interface de linha de comando (CLI).

Finalidade: Utilizado para executar comandos do sistema, gerenciar ambientes, instalar softwares e rodar programas.

3. Conda / Miniconda3

O que é: Miniconda é um gerenciador de pacotes e ambientes leve para Python.

Finalidade:

  • Gerenciar versões do Python e suas dependências.
  • Criar ambientes isolados (como o PV25) para evitar conflitos entre projetos.
4. OpenCV

O que é: Biblioteca de Visão Computacional de Código Aberto.

Finalidade: Principal biblioteca usada para tarefas de visão computacional e processamento de imagens/vídeos (detecção de objetos, transformações, extração de características etc.).

Variantes:

  • OpenCV (compilado do código-fonte): Instalação completa com suporte a C++ e Python.
  • OpenCV-Contrib: Módulos extras desenvolvidos pela comunidade (ex.: reconhecimento facial, SIFT, SURF).
  • opencv-python (pip): Pacote pré-compilado do OpenCV para Python.
  • opencv-contrib-python (pip): Adiciona os módulos extras à instalação em Python.
5. Ferramentas de Compilação e Dependências

Essenciais para compilar e executar o OpenCV a partir do código-fonte:

  • build-essential: Compilador e ferramentas básicas de compilação.
  • cmake: Configura e gera os arquivos de build do OpenCV.
  • git: Usado para clonar os repositórios do OpenCV.
  • pkg-config: Auxilia no gerenciamento de caminhos de bibliotecas e dependências.
  • libgtk-3-dev: Suporte de interface gráfica para exibição de imagens.
  • libavcodec-dev, libavformat-dev, libswscale-dev: Codecs de vídeo/áudio.
  • libjpeg-dev, libpng-dev, libtiff-dev: Suporte a formatos de imagem.
  • libxvidcore-dev, libx264-dev: Bibliotecas de codificação de vídeo.
  • gfortran, libatlas-base-dev: Aceleração matemática.
  • python3-dev, python3-numpy: Cabeçalhos Python + NumPy.
  • libtbb-dev: Suporte a multithreading.
  • libopenexr-dev: Suporte para imagens HDR.
  • libv4l-dev, libdc1394-dev: Suporte a captura de vídeo.
  • libgstreamer-dev: Suporte a streaming de vídeo.
6. pkg-config

O que é: Ferramenta auxiliar para configurar flags de compilação e linkagem de bibliotecas.

Finalidade: Verifica se o OpenCV está instalado e acessível (pkg-config --modversion opencv4).

7. Python e C++

O que sao: Linguagens de programação usadas para rodar os scripts com OpenCV.

Finalidade: Fornece o ambiente de programação para desenvolver tarefas de visão computacional.

9. VLC Media Player

O que é: Reprodutor multimídia gratuito e de código aberto.

Finalidade: Permite visualizar vídeos e imagens fora do OpenCV, útil para testes e validação de resultados do processamento de vídeo.

3.3 Procedimentos Experimentais

Sistema de Detecção Multicolorida

Desenvolvemos um sistema avançado de detecção e rastreamento de objetos coloridos com as seguintes características:

Características Principais:
  • Detecção Múltipla: Identificação simultânea de objetos em vermelho, azul, verde e amarelo
  • Controles Interativos: Interface com trackbars para ajuste fino dos parâmetros HSV
  • Captura e Gravação: Funcionalidades para salvar imagens (tecla 's') e gravar vídeos (teclas 'k'/'h')
  • Máscaras e Contornos: Visualização de máscaras individuais e combinadas
Implementação Técnica:
# Definição das faixas de cores em HSV
colors = {
    'red': {
        'ranges': [(0, 50, 50), (10, 255, 255)],
        'ranges2': [(170, 50, 50), (180, 255, 255)]
    },
    'blue': {'ranges': [(100, 50, 50), (130, 255, 255)]},
    'green': {'ranges': [(40, 50, 50), (80, 255, 255)]},
    'yellow': {'ranges': [(20, 50, 50), (40, 255, 255)]}
}
Pipeline de Processamento
  1. Captura de Vídeo: Leitura do stream RTMP local
  2. Conversão de Cor: Transformação BGR para HSV
  3. Detecção de Cor: Aplicação de máscaras HSV para cada cor
  4. Processamento de Contornos: Identificação e desenho de contornos
  5. Visualização: Exibição de resultados em múltiplas janelas
Funcionalidades Especiais:
  • Ajuste dinâmico dos parâmetros HSV via trackbars
  • Salvamento automático de frames com timestamp
  • Gravação simultânea do vídeo original e processado
  • Detecção especial para vermelho (dois ranges HSV)
Passo 2 – Gravação de vídeos

Desenvolvimento de programa para gravação para detecção multicolorida

Vídeos em anexo no link Sharepoint no topo da página

4. Resultados e Análises

4.1 Resultados Obtidos

Detecção Multicolorida

O sistema conseguiu detectar e rastrear com sucesso objetos de diferentes cores simultaneamente, com boa precisão na segmentação das cores alvo.

Controle Adaptativo

As trackbars permitiram ajuste fino dos parâmetros HSV em tempo real, facilitando a calibração para diferentes condições de iluminação.

Sistema de Gravação

Implementação bem-sucedida do sistema de captura de frames e gravação de vídeos, com organização automática por timestamp e separação entre original e processado.

Performance

O sistema manteve bom desempenho mesmo com múltiplas janelas e processamento em tempo real, demonstrando eficiência na implementação.

4.2 Análise dos Resultados

Versatilidade do VideoCapture

O cv2.VideoCapture é versátil, podendo receber dados de diferentes fontes (arquivo, câmera, RTMP, sequência de imagens).

Desempenho

O desempenho depende fortemente do frame rate e do tempo de espera configurado em cv2.waitKey().

VideoWriter

O cv2.VideoWriter requer que a taxa de quadros e o tamanho dos quadros sejam compatíveis com a fonte de entrada.

Formatos e Codecs

O uso de formatos padronizados (ex.: MJPG) e caminhos corretos de escrita evitou erros relacionados a codecs e permissões.

5. Conclusões e Comentários Finais

O desenvolvimento do sistema de detecção multicolorida demonstrou com sucesso a aplicação prática de técnicas avançadas de processamento de imagem e visão computacional usando OpenCV.

O sistema alcançou seus objetivos principais de detectar e rastrear múltiplos objetos coloridos simultaneamente, oferecendo uma interface interativa para ajuste fino dos parâmetros e funcionalidades robustas de gravação e análise.

Principais Lições Aprendidas

Verificação de Retorno

A importância de verificar o retorno (ret) das funções de captura para evitar falhas silenciosas.

Gerenciamento de Recursos

A necessidade de liberar recursos (release()) ao final da execução para evitar travamentos.

Fluxos de Dados

A diferença entre fluxos locais e remotos, principalmente quanto à latência e estabilidade.

Parâmetros de Gravação

O papel do cv2.VideoWriter na gravação e a influência dos parâmetros de codec e FPS na qualidade final.