TEM – Sistemas de Visão
Parte 01: Introdução ao Processamento de Imagens Digitais
Material produzido por:
Mário Lucio Roloff, DAMM/IFSC
Maurício Edgar Stivanello, DAMM/IFSC
Marcelo Ricardo Stemmer, DAS/UFSC
Sumário
Conceitos básicos
Descrição do ambiente de desenvolvimento
Exemplos
Exercícios
2 | Mecatrônica – DAMM – IFSC TEM – Sistemas de Visão
Introdução e Prática com
Imagens Digitais
3 | Mecatrônica – DAMM – IFSC TEM – Sistemas de Visão
PDI – Propriedades da Imagem
Formação e aquisição da imagem
Etapas de formação das imagens em um sistema de visão
4 | Mecatrônica – DAMM – IFSC TEM – Sistemas de Visão
Representação básica de imagens
digitais
Como representar imagens?
5 | Mecatrônica – DAMM – IFSC TEM – Sistemas de Visão
Representação básica de imagens
digitais
Imagens digitais
Vetorial: representação onde são
utilizadas primitivas geométricas
Vetor
como pontos, linhas, curvas ou
outras formas, todas descritas por
suas definições matemáticas.
Mapa de bits (Raster, bitmap):
Bitmap
representação onde é utilizada uma
grade formada por pontos. Cada
ponto pode assumir uma cor
diferente, e desta forma a imagem é
formada como em um mosaico.
6 | Mecatrônica – DAMM – IFSC TEM – Sistemas de Visão
Representação básica de imagens
digitais
Imagens digitais são representadas como agrupamento
de pontos
Os pontos (ou Pixels) embutem informação de:
– Espaço
– Intensidade
7 | Mecatrônica – DAMM – IFSC TEM – Sistemas de Visão
Representação básica de imagens
digitais
Modelos de cor: Tons de cinza
8 | Mecatrônica – DAMM – IFSC TEM – Sistemas de Visão
Representação básica de imagens
digitais
Modelos de cor: RGB
9 | Mecatrônica – DAMM – IFSC TEM – Sistemas de Visão
Representação básica de imagens
digitais
Como manipular imagens digitais utilizando uma
linguagem de computador?
10 | Mecatrônica – DAMM – IFSC TEM – Sistemas de Visão
Ferramentas de Desenvolvimento
OpenCv
11 | Mecatrônica – DAMM – IFSC TEM – Sistemas de Visão
OpenCV
Open Source Computer Vision Library
Uma biblioteca para PDI/VC escrita em C/C++
Diversas otimizações em C/C++
Diversos algoritmos têm implementação em GPU
APIs para C++, Java e Python
Disponível para várias plataformas
Windows / Unix / Android ...
12 | Mecatrônica – DAMM – IFSC TEM – Sistemas de Visão
Aspectos importantes
Utilizada extensivamente pela comunidade de VC
IBM, Microsoft, Intel, Sony, Siemens, Google,...
Stanford, MIT, CMU, Cambridge, INRIA, USP,...
Licença BSD permite o desenvolvimento de
software livre
comercial
13 | Mecatrônica – DAMM – IFSC TEM – Sistemas de Visão
História
1999 OPENCV nasce na Intel 2009 Lançamento da versão
2000 Primeira versão Beta 2.0
2006 Lançamento da versão 1.0 2011 Versão 2.3.1
2008 Willow Garage assume o
2012 Versão 2.4
desenvolvimento
2013 Versão 2.4.6, API para
Java
...
Atual Versão 4.1.1
14 | Mecatrônica – DAMM – IFSC TEM – Sistemas de Visão
Núcleos/Módulos
15 | Mecatrônica – DAMM – IFSC TEM – Sistemas de Visão
CxCORE
Define as estruturas e operações que permitem realizar a
edição e manipulação básica de imagem.
Estrutura Principal:
Mat: Representa uma imagem na memória na qual podemos
realizar diversas operações matemáticas.
Contém diversas características das imagens: Pontos, Número
de canais de cor; Profundidade (resolução de tonalidades);
Tamanho (largura e altura); dentre outros . . .
16 | Mecatrônica – DAMM – IFSC TEM – Sistemas de Visão
CxCORE
Outras estruturas básica:
Rect: define regiões de interesse nas imagens
Point: define coordenadas de um ponto da imagem
Size, ...
Estruturas Dinâmicas:
Sequências
Conjuntos
Grafos
17 | Mecatrônica – DAMM – IFSC TEM – Sistemas de Visão
CxCORE
Operações de Manipulação de Imagens
Básicas (identidade, negativa, exponencial,
logarítmica)
Aritméticas (+, -, *, /)
Lógicas (E, OU, NAO)
Estatísticas (média, variância)
Álgebra Linear (autovalor, autovetor, determinante)
Transformadas (DFT, DCT)
18 | Mecatrônica – DAMM – IFSC TEM – Sistemas de Visão
CV
Apresenta diversas ferramentas para manipulação de
imagens
Conversão de Espaços de Cor
Estatísticas (histogramas)
Filtragem (espaço e frequência; smoothing e sharpening)
Morfológicas (dilatação, erosão, abertura, fechamento)
Segmentação (similaridade, descontinuidade)
Transformadas (Hough)
Motion Tracking
Reconhecimento de Padrões
Calibração de Câmeras e Reconstrução 3D
19 | Mecatrônica – DAMM – IFSC TEM – Sistemas de Visão
HighGUI
Disponibiliza o controle dos seguintes componentes:
Gestão de um ambiente de janelas
Gestão de entradas do usuário
Leitura/Gravação de imagens
Aquisição de imagens
20 | Mecatrônica – DAMM – IFSC TEM – Sistemas de Visão
Prática
Exemplos e Exercícios
21 | Mecatrônica – DAMM – IFSC TEM – Sistemas de Visão
Exemplos
Ambiente de Desenvolvimento
Visão Geral das ferramentas
OpenCv 4.1.1 compilada com MinGw x86_64
IDE Code::Blocks portátil e
com compilador incluído
Imagens e vídeos de exemplo
Projeto para o Code::Blocks já configurado para utilizar a OpenCv, seguindo
Organização de diretórios apresentada. Obs: pode ser copiado e renomeado
para a criação de novos projetos.
22 | Mecatrônica – DAMM – IFSC TEM – Sistemas de Visão
Exemplos
Exemplos práticos
1. Criar e exibir uma imagem em tons de cinza que contenha o fundo preto e um
ponto branco no centro. (Projeto base – funcao_exemplo_01)
2. Criar e exibir uma imagem que contenha um retângulo vermelho. (Projeto base
– funcao_exemplo_02)
3. Ler e exibir a imagem Lena.jpg tanto em cinza quanto em cores. (Projeto base
– funcao_exemplo_03)
4. Ler e escurecer a imagem Lena.jpg em cinza e salvá-la com outro nome.
(Projeto base – funcao_exemplo_04)
5. Ler e escurecer a imagem Lena.jpg em cores e salvá-la com outro nome.
(Projeto base – funcao_exemplo_05)
6. Carregar a imagem frasco.jpg em cinza e torná-la binária (pontos em preto ou
branco), separando o fundo do frasco. (Projeto base – funcao_exemplo_06)
23 | Mecatrônica – DAMM – IFSC TEM – Sistemas de Visão
Exercícios
1)Criar imagem em cinza com dimensão 500X500 contendo uma linha diagonal.
2)Crie uma imagem de 255 por 255 que contenha um gradiente de intensidades
(degradê).
3)Carregar a imagem lena.jpg em cinza e descobrir a intensidade média.
4)Carregar a imagem lena.jpg em cinza e gerar a imagem negativa.
5)Carregar duas imagens em cinza (paris_a.jpg e paris_b.jpg) e combiná-las (média
das intensidades).
6)Carregue as imagens corredor.bmp e corredorobjeto.bmp em cinza. Faça a
diferença absoluta entre a primeira e a segunda imagem.
7)Carregar a imagem lena.jpg e espelhá-la verticalmente.
8)Carregar a imagem madeira.jpg em cinza e torná-la binária. Em seguida,
apresentar a localização do centro de gravidade do nó de madeira.
24 | Mecatrônica – DAMM – IFSC TEM – Sistemas de Visão
Dúvidas?
33 | Mecatrônica – DAMM – IFSC TEM – Sistemas de Visão