Relatório Laboratório 4

Histogramas e Thresholding

1. Introdução

Este relatório documenta o procedimento de estudo teorico e pratico da utilizacao de histogramas e thresholding para processamento de imagens utilizando a biblioteca openCV e linguagem c++. Parte-se do pressuposto que relatorios anteriores foram estudados e ambiente de programacao esta configurado.

2. Fundamentos Básicos

O procedimento de criacao de um histograma a partir de uma imagem se baseia em categorizar cada pixel da imagem em um Bin (ou categoria) de um Histograma baseado em sua intensidade, podendo ser em escala de cinza ou em cada um de seus canais de cor. O procedimento de Thresholding se baseia em aplicar uma funcao degrau (ou suas similares e variacoes) a cada pixel de uma imagem, com o objetivo de manter ou remover elementos para dar enfase a atributos desejados.

3. Estudo e exemplos utilizados

Exemplos fornecidos pelo roteiro:

Exemplos de tutoriais fornecidos pelo roteiro de atividade pratica foram seguidos e estudados, de forma que codigos fornecidos por eles foram utilizados como a base para o desenvolvimento de items subsequentes. Artigos podem ser acessados atraves dos links abaixo, que foram replicados do roteiro.

  • Equalizacao de Histogramas por openCV
    Link
  • Calculo de Histogramas e Limiarizacao/Binarizacao por openCV
    Link
  • Basic Thresholding Operations por openCV
    Link

4. Atividades Propostas

4.1 Histogramas e Equalizacao em Imagens em escala da cinza

Especificacoes do programa:

  • Entrada: imagem colorida
  • Saida: Imagem convetida para cinza
  • Saida: Imagem em cinza equalizada
  • Saida: Histograma da imagem em cinza
  • Saida: Histograma da imagem equalizada

Procedimento:

Para realizacao desta tarefa vamos nos basear nos codigos fornecidos pelos exemplos 2 e 1, nesta ordem.
O exemplo 2 fornece uma base para leitura de imagens e visualizacao de histogramas por canal. Nesta etapa de adaptacao, a imagem sera convertida em escala de cinza e sera mantido apenas um canal singular, assim sera possivel visualizar a imagem em escala de cinza e seu histograma.
O exemplo 1 fornece o modo de utilizacao da funcao de equalizacao da imagem, nos permitindo assim obter a imagem equalizada, e repetir o procedimento anterior para obter seu histograma.

Imagem Original

Image 1

Imagem Equalizada

Image 2

Histograma original

Graph for Image 1

Histograma Equalizado

Graph for Image 2

4. Resultados e Análises

4.1 Resultados Obtidos

Leitura de vídeos locais

Foi possível reproduzir vídeos e extrair informações como FPS e número de quadros.

Gravação

O vídeo capturado foi salvo no formato .avi, com qualidade satisfatória e sincronização estável entre captura e gravação.

Sequência de imagens

O processamento ocorreu sem perdas visuais perceptíveis, demonstrando que o OpenCV trata sequências de imagens de forma eficiente.

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 experimento permitiu compreender de forma prática os fundamentos da captura, exibição e gravação de imagens e vídeos com OpenCV.

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.