OpenCV

1. Introdução

O OpenCV é uma biblioteca concebida especialmente para o processamento e análise de imagens em tempo real e implementa algoritmos bem estabelecidos na literatura de Processamento de Imagens, Visão Computacional e Inteligência Artificial.

A biblioteca, originalmente desenvolvida pela Intel em 2000, tem uma implementação multiplataforma, totalmente livre para o uso acadêmico e comercial, distribuído sob licençaBSD. Ela possui módulos de Processamento de Imagens e Vídeo, estrutura de dados, álgebra linear, Interface Gráfica (GUI) com sistema de janelas independentes, controle de mouse e teclado, além de mais de 350 algorítmos de Visão Computacional (Processamento e Análise) como: filtros de imagem, calibração de câmera, reconhecimento de objetos, análise estrutural e outros. A biblitoeca possui versões disponíveis em Python, C++, C, Java e Android.

Através desta biblitoeca é possível desenvovler aplicações de processamento de imagens em tempo real.

2. Desenvolvimento de Algoritmos de PDI

Na figura a seguir é apresentado um diagrama básico das etapas de um algoritmo de processamento de imagens.

Resumidamente, a primeira etapa adquire a imagem em um formato adequado e passa para uma etapa de pré-processamento em que serão feitos uma série de ajustes para melhorar a qualidade da imagem.

Após o pré-processamento, é realizada uma etapa de segmentação em que são extraídos da imagem os objetos de interesse. Caso a segmentação não tenha excelentes resultados, pode ser feita uma etapa de pós-processamento para melhorar a qualidade da segmentação.

Com base em cada objeto segmentado, são extraídas informações e passadas por uma etapa de reconhecimento para tomar uma decisão. Eventualmente, após todo o processamento pode ser feito uma etapa de exibição de resultados, na qual são apresentadas uma série de informações sobre a imagem processada.

Nesta página serão apresentadas algumas funções utilizadas para o processamento de imagens em cada uma dessas etapas utilizando funções disponíveis na implementação C++ da biblioteca.

2.1 Aquisição de Imagens

Para adquirir imagens no OpenCV utiliza-se as seguintes funções:

2.1. Pré-processamento

Para realcar imagens (aplicar filtos passa-alta e passa baixa ou ajustar contraste) no OpenCV utiliza-se as seguintes funções:

2.2 Segmentação

Existem várias funções para a segmentação de imagens disponíveis no OpenCV, as mais simples são mostradas na tabela a seguir:

2.3 Extração de atributos

Para extrair informações de imagens segmentadas são utilizadas as seguintes funções:

2.4 Exibição de resultados

Para exbir imagens ou inserir anotações nas imagens, o OpenCV utiliza-se as seguintes funções:

3. Exemplos

imagem original

ajuste de contraste (contraste diminuido)

filtro passa-baixa gaussiano

filtro passa alta (laplaciano)

segmentação com limiar unico (thresholding)

segmentação utilizando o inRangeS

bounding rect

drawContours

4. Configuração

Ficou interessado na biblitoeca?

Nesta pagina encontra-se uma série de tutoriais que podem lhe auxiliar a utilizar a biblioteca.