Document

Propaganda
Imagens para as aulas de
PDI (TOCI-11)
Alexandre Gonçalves Silva
[email protected]
http://www.joinville.udesc.br/portal/professores/alexandre/
Sala F211
DCC/UDESC
Bibliografia
●
●
Livro texto
–
Rafael C. Gonzalez, Richard E. Woods. Processamento de Imagens Digitais.
Editora Edgard Blucher Ltda., 2000
–
Hélio Pedrini, William R. Schwartz. Análise de Imagens Digitais Hall,
Thomson, 2008.
Notas de aula
1) Fundamentos de Processamento de Imagem Digital, Alexandre X. Falcão e
Neucimar J. Leite, Unicamp.
2) Processamento e Análise de Imagens, Jacques Facon, PUC-PR, 2002.
●
Webliografia
1) Curso DIP para Khoros
http://www.dca.fee.unicamp.br/dipcourse/
2) Image Processing Fundamental http://www.ph.tn.tudelft.nl/Courses/FIP/frames/fip.html
3) CVonline
http://homepages.inf.ed.ac.uk/rbf/CVonline/
Programa
●
Processamento de Imagens
–
Motivação, objetivos, introdução
●
Ferramentas
●
Fundamentos – definições básicas
●
Realce – melhoramento da qualidade visual
●
Restauração – informação sobre a fonte de degradação
●
Segmentação – divisão em partes de interesse
●
Reconhecimento – identificação de objetos
Motivação
●
Formas de aquisição acessíveis
●
Poder de processamento
●
Aprimoramento de ferramentas computacionais
●
Mais diversas aplicações
–
Medicina, automação industrial, geologia,
artes, ...
Objetivos
●
●
Melhoramento de imagens para interpretação
humana
Armazenamento, transmissão e extração de
informações para percepção por máquinas
Introdução
●
(1)
Sub-área de processamento de sinais
–
Funções que contêm informações
●
–
Mecanismos
●
–
Texto, voz, música, imagens, vídeos
Telégrafo, telefone, rádio, radar, televisão
Transmissão
Aquisição
–
Compressão
Codificação
Descompressão
Decodificação
Recepção
Interpretação
Introdução
●
●
●
(2)
A imagem é um tipo de sinal bidimensional
Da aquisição à interpretação, a imagem pode ser
transformada, modificada e retransmitida
Áreas relacionadas
PI
Imagem
VC
CG
Descrição
IA
Introdução
●
(3)
Uma imagem monocromática é uma função f(x,y)
–
Onde x e y denotam as coordenadas espaciais e o
valor de f(x,y) é proporcional à intensidade de luz
(ou nível de cinza) no ponto ou pixel (x,y).
y
f(x,y)
x
Introdução
●
Uma imagem multibanda
consiste, para cada pixel
(x,y), em um vetor
(c0, c1, ..., cn-1), sendo o
componente ck , k∈[0,n1] , monocromático.
–
Uma imagem colorida é
multibanda com
k∈[0,2] , por
exemplo, c0=R (red),
c1=G (green), c2=B
(blue)
(4)
Ferramentas
●
Apropriadas
–
Khoros
–
MATLAB /
Octave
–
PhotoPixJ
–
Gimp
–
–
Photoshop
ImageMagik
●
(1)
Escolhidas
–
Python
●
●
–
Numpy
Gnuplot
C/C++
●
OpenCV
Ferramentas
●
(2)
Linguagem Python
–
Interpretada, orientada a objetos, trata erros e exceções, coleta de lixo
automática, com recursos avançados de estruturas de dados
–
Código aberto, gratuita e extremamente portável
–
Módulos nativos: os, cgi, ftplib, gzip, math, re, xmllib, sockets, entre
outros
–
Módulos instaláveis: administração de sistemas, interfaces gráficas,
internet, banco de dados, programação científica, inteligência
artificial, ...
–
Referências:
●
http://www.python.org/
●
http://www.python.org/doc/nonenglish/#portuguese
Ferramentas
●
(3)
Numerical Python
–
Módulo numérico do Python
–
Implementa um eficiente modelo de matriz (array)
multidimensional
–
Projetados sob influência de linguagens como MATLAB
e FORTRAN
–
Código aberto e gratuito
–
Rápida prototipação para Processamento de Imagens
–
Referência
●
http://www.numpy.org
Ferramentas
●
(4)
Modelo de programação
–
Perfis de programadores
–
Produtividade
–
Desempenho
Linguagem
de Sistema
Linguagem
Visual
•C
• C++
• Java
• Visual Basic
• Tcl
• Perl
• Python
Usuário
Ferramentas
●
(5)
Flexibilidade Python/Numpy
def xadrez1(s):
from Numeric import zeros
a = zeros(s)
for i in range(s[0]):
for j in range(s[1]):
a[i,j] = (i+j) % 2
return a
def xadrez2(s):
from Numeric import zeros
a = zeros(s)
a[ ::2,1::2] = 1
a[1::2, ::2] = 1
return a
def xadrez3(s):
from Numeric import indices
(i,j) = indices(s)
return (i+j) % 2
 1

 2

 
 N

1
2

N
1 2  M 
0 1 0 1 

 2
1 2  M 
1 0 1 0 
+
%
2
=

 
    
0 1 0 1 
 N
1 2  M 
    


1
Instalação
●
Pacotes necessários
1
Python
http://www.python.org
2
Numpy
http://www.numpy.org
3
Gnuplot
http://www.gnuplot.info
4
Gnuplot.py
http://gnuplot-py.sourceforge.net
Experimentação
●
●
●
Abrir uma imagem fotográfica
–
Exibir a imagem
–
Exibir a imagem invertida
Criar uma cossenóide 2D
–
Exibir a imagem
–
Plotar algumas linhas
Aplicações ...
Programa
●
Processamento de Imagens
–
Motivação, objetivos, introdução
●
Ferramentas
●
Fundamentos – definições básicas
●
Realce – melhoramento da qualidade visual
●
Restauração – informação sobre a fonte de degradação
●
Segmentação – divisão em partes de interesse
●
Reconhecimento – identificação de objetos
Fundamentos
●
Percepção visual
–
Estrutura do olho
–
Formação da imagem
–
Adaptação
●
Modelo de imagem
●
Amostragem
●
Quantização
●
Conectividade
Percepção visual
●
Estrutura do olho
(1)
Percepção visual
●
Formação da imagem
(2)
Percepção visual
●
(3)
Adaptação à distância/perspectiva
Linha vertical
parece maior
Linha superior
parece maior
Percepção visual
●
(4)
Adaptação ao brilho
8 níveis
64 níveis
Modelo de Imagem
●
(1)
Dada uma imagem em níveis de cinza f(x,y)
–
Representação de 8 bits: 0 ≤ f(x,y) ≤ 255
–
Preto: f(x,y) = 0
Branco: f(x,y) = 255
Cinza: 0 ≤ f(x,y) ≤ 255
Modelo de Imagem
●
(2)
Dada uma imagem colorida f(c,x,y)
–
Componentes da representação RGB de 24 bits:
●
Vermelho R:
0 ≤ f(0,x,y) ≤ 255
●
Verde G:
0 ≤ f(1,x,y) ≤ 255
●
Azul B:
0 ≤ f(2,x,y) ≤ 255
R
G
B
Amostragem
●
Espaçamento entre valores discretos no domínio do
sinal
240x256
64x64
16x16
Quantização
●
Espaçamento entre valores discretos da função
8 bits
(256 intensidades)
3 bits
(8 intensidades)
1 bit
(2 intensidades)
Conectividade
●
(1)
Vizinhança de um pixel p na coordenada (x,y)
N4(p)
vizinhança-4 de p
(x-1,
(x ,
(x ,
(x+1,
y )
y-1)
y+1)
y )
N8(p)
vizinhança-8 de p
(x-1,
(x-1,
(x-1,
(x ,
(x ,
(x+1,
(x+1,
(x+1,
y-1)
y )
y+1)
y-1)
y+1)
y-1)
y )
y+1)
Nx(p)
vizinhança-x de p
(definido pelo
usuário)
Conectividade
●
Adjacência
–
●
(2)
Um pixel p é adjacente a um pixel q se eles são
conectados pela vizinhaça definida
Caminho
–
Seqüência de pixels (p0, p1, ..., pn) para que, a
partir de p0, se alcance pn, sendo pi conectado a
pi-1, i ∈ [1,n]
Conectividade
●
(3)
Exemplo de caminhos
N4(p)
N8(p)
Conectividade
●
Componente conexo
(4)
Fundamentos (continuação...)
●
Aquecimento
–
Sintetização de imagem de círculo
–
Produção de imagem colorida
●
Medidas de distância
●
Operações aritméticas
●
Operações lógicas
●
Operações de mínimo e máximo
●
Operações de vizinhança
Aquecimento
●
(1)
Sintetização de imagem de círculo
–
Equação
–
Função circulo(s,r,c):
●
●
Entradas:
–
s : dimensões (linhas,colunas).
–
r : raio
–
c : centro do círculo (xc,yc)
Saída: imagem binária de círculo
>>> f = circulo((5,7),2,(2,3))
>>>
[[0
[0
[0
[0
[0
print
0 0 1
0 1 1
1 1 1
0 1 1
0 0 1
f
0
1
1
1
0
0
0
1
0
0
0]
0]
0]
0]
0]]
Aquecimento
●
(2)
Produção de imagem colorida
–
Função figRGB(tam):
●
Entrada:
–
●
tam : tamanho da imagem (número de linhas igual
ao de colunas).
Saída: imagem do exemplo da aula
Medidas de distância
●
(1)
Para os pixels p1, p2 e p3, com coordenadas
(x1,y1), (x2,y2) e (x3,y3) respectivamente, D é
uma função distância ou métrica se
–
–
D(p1, p2) ≥ 0
(D(p1, p2) = 0 se e somente se p1= p2)
–
D(p1, p2) = D(p2, p1)
–
D(p1, p3) ≤ D(p1, p2) + D(p2, p3)
Medidas de distância
●
(2)
A distância Euclidiana:
–
De(p1, p2) = [ (x1 – x2)2 + (y1 – y2)2 ]1/2
●
●
A distância D4 (city block ou quarteirão):
–
D4(p1, p2) = | x1 – x2 | + | y1 – y2 |
●
●
A distância D8 (xadrez):
–
D8(p1, p2) = max( | x1 – x2 | , | y1 – y2 | )
Operações aritméticas
●
Operação global, pixel a pixel, entre uma imagem e uma
constante ou entre imagens
–
Adição (+)
(ex.: média para redução de ruído)
–
Subtração (-)
–
Multiplicação (*)
iluminação)
–
Divisão (/)
-
(ex.: detecção de movimento)
(ex.: efeitos, correção de
=
Operações lógicas
●
Operação global, pixel a pixel, entre imagens
binárias
A
NOT(A)
NOT(B)
B
–
Complemento (NOT)
–
–
A
E lógico (AND)
–
–
OU lógico (OR)
B
AND
A
=
B
OR
=
–
–
OU exclusivo (XOR)
A
B
XOR
=
Operações de mínimo e máximo
●
Operação global, pixel a pixel, entre imagens em
níveis de cinza
–
Imagens
–
Mínimo (min)
–
Máximo (ma
Programa
●
Processamento de Imagens
–
Motivação, objetivos, introdução
●
Ferramentas
●
Fundamentos – definições básicas
●
Realce – melhoramento da qualidade visual
●
Restauração – informação sobre a fonte de degradação
●
Segmentação – divisão em partes de interesse
●
Reconhecimento – identificação de objetos
Realce
●
Introdução
●
Operações globais
●
Operações de vizinhança
●
Realce ponto a ponto
–
Negativo, brilho e contraste, compressao de escala, fatiamento
–
Processamento de histograma, equalização, especificação
●
Realce local
●
Teorema da convolução
–
Domínio espacial, domínio da freqüência, relação entre
domínios
Filtragem espacial
●
Filtros de suavização
–
Filtros passa-baixas (lineares)
●
–
Filtros não-lineares:
●
●
Média
Mediana
Filtros de aguçamento
–
Filtros passa-altas (lineares)
●
Roberts, Prewitt, Sobel
Filtros de suavização
●
(1)
Filtros passa-baixas (lineares)
–
Filtro de Média
Original
1 1 1
1/9 1 1 1
1 1 1
1
1
1
1/49 1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
Filtros de suavização
●
(2)
Filtros não-lineares
–
Filtro Mediana
Original
–
Filtrada (viz. 5x5)
Filtros de aguçamento
●
(1)
Filtros passa-altas
–
Original
Filtro Roberts
1 0
0 -1
0 1
-1 0
a
b
(a2+b2)1/2
Filtros de aguçamento
●
(2)
Filtros passa-altas
–
Original
Filtro Prewitt
-1 -1 -1
0 0 0
1 1 1
-1 0 1
-1 0 1
-1 0 1
a
b
(a2+b2)1/2
Filtros de aguçamento
●
(3)
Filtros passa-altas
–
Original
Filtro Sobel
-1 -2 -1
0 0 0
1 2 1
-1 0 1
-2 0 2
-1 0 1
a
b
(a2+b2)1/2
Exercício
●
Escrever, em Python, a função conv(imagem, mascara)
–
Entradas:
●
●
>>>
>>>
>>>
>>>
[[
[
[
[
imagem em níveis de cinza
matriz contendo os pesos da máscara
–
Saída: imagem filtrada (normalizada de 0 a 255)
–
Exemplo de execução
f = Numeric.array([[0,0,0,0,0],[0,10,20,30,0],[0,60,50,40,0],[0,0,0,0,0]])
m = 1./9 * Numeric.ones((3,3))
g = conv(f,m)
print g
1.11111111
3.33333333
6.66666667
5.55555556
3.33333333]
7.77777778 15.55555556 23.33333333 15.55555556
7.77777778]
7.77777778 15.55555556 23.33333333 15.55555556
7.77777778]
6.66666667 12.22222222 16.66666667 10.
4.44444444]]
Introdução
●
●
●
O realce consiste em tornar a imagem mais apropriada
para uma aplicação específica
Normalmente se configura como um pré-processamento
ou filtragem, mas também pode ser o resultado final
de uma aplicação
Há dois objetivos principais e distintos no realce:
–
Melhora da qualidade visual da imagem
–
Destaque de alguma característica peculiar da
imagem para o processamento seguinte por
máquinas
Operações globais
●
●
As operações são globais quando aplicadas sobre toda a
imagem. Ou seja, cada pixel sofre a mesma operação,
independente de região.
Entre as operações globais, podem ser destacadas:
–
–
–
–
–
–
Negação, brilho e contraste
Normalização e equalização de histograma
Operações aritméticas e lógicas entre imagens
Operações de máximo e mínimo entre imagens
Limiarização global
Limiarização de Otsu
Operações globais
●
Negativo
(1)
Operações globais
●
Brilho e contraste
(2)
Operações globais
●
Compressao de escala
(3)
Operações globais
●
(4)
Fatiamento
–
–
Níveis de cinza
f
i=[80,100]
fi←128
bit 3
bit 5
bit 7
Planos de bits
Operações de vizinhança
●
●
●
Além de operações globais, podem ser consideradas
operações sobre cada região da imagem.
Neste caso, cada pixel é substituído pelo resultado de
uma determinada operação sobre os valores dos
pixels, por exemplo, em sua vizinhança.
Entre as operações de vizinhança, podem ser citadas:
–
–
–
–
Convolução
Filtro mediana
Filtro k-vizinhos
Limiarização de Niblack
Convolução
Imagem de entrada
Máscara
Imagem de saída
Teorema da convolução
●
●
(1)
Domínio espacial
–
Plano da própria imagem
–
Manipulação direta dos pixels
–
Convolução da imagem pela máscara
Domínio da freqüência
–
Modificação da transformada discreta de Fourier (DFT)
–
Multiplicação da DFT da imagem pela DFT da máscara
Teorema da convolução
●
(2)
Relação entro os domínios
–
Espacial:
g(x,y) = h(x,y) * f(x,y)
–
Freqüência:
G(u,v) = H(u,v) F(u,v)
g(x,y) = ℑ-1 [ G(u,v) ]
●
Considerações
–
Para máscaras suficientemente grandes, é mais
eficiente realizar a convolução no domínio da
freqüência por ser implementada através de
multiplicações simples.
Tópicos
●
Transformada Discreta de Fourier (DFT)
–
Formulação
–
Exemplos
–
Filtros passa-baixas e passa-altas
●
●
Ideal (seleção abrupta)
Butterworth
●
●
Modelo de cores
●
Pseudo-coloração
DFT
●
●
●
Transformação do domínio da imagem (x,y) para o
espaço de freqüências (u,v)
Melhor avaliação das particularidades da imagem e
interpretação para o projeto de filtros
Formulação
DFT
●
Formulação (continuação...)
–
Onde
N=128
parte real
N=128
parte imaginária
DFT de algumas imagens
Filtragens na freqüência
●
Filtro passa-baixa ideal
Filtragens na freqüência
●
Filtro passa-alta ideal
Filtragens na freqüência
●
Filtro passa-baixa de Butterworth
–
–
Filtragens na freqüência
●
Filtro passa-baixa de Butterworth (continuação...)
–
–
Pseudo-coloração
●
●
●
●
Pseudo-coloração: inserção de cores em imagens
monocromáticas.
Motivação: contraste de diferentes cores é maior
que o contraste de níveis de cinza próximos.
Aplicações: imagens médicas, detecção de
metais, etc.
Método: atribuição de uma cor a cada nível de
cinza.
Pseudo-coloração
Frequência
DFT
filtro 1
DFT-1
proc. R
filtro 2
DFT-1
proc. G
filtro 3
DFT-1
proc. B
Imagem colorida
Imagem em
níveis de cinza
●
Pseudo-coloração
●
Mapa de cores
hsv
hot
Programa
●
Processamento de Imagens
●
Ferramentas
●
Fundamentos – definições básicas
●
Realce – melhoramento da qualidade visual
●
Restauração – informação sobre a fonte de
degradação
●
Segmentação – divisão em partes de interesse
●
Reconhecimento – identificação de objetos
Restauração
●
Introdução
●
Modelo de degradação
●
Filtragem inversa
●
Filtro de Wiener
●
Exemplos
●
Modelagem de H(u,v)
●
Transformações geométricas
Introdução
●
Remoção ou redução da degradação da imagem
●
Modelos de ruídos
●
–
Gaussiana (borramentos), impulsiva (sal e pimenta)
–
Uniforme (movimentos), periódico (picos de freq.)
Modelo de degradação
N(u,v)
I(u,v)
H(u,v)
+
?
D(u,v)
R(u,v)
I'(u,v)
Modelo de degradação
●
Modelo no domínio espacial
●
–
d(x,y) = i(x,y) * h(x,y) + η(x,y)
Onde
●
●
●
●
d(x,y) é a imagem degradada
i(x,y) é a imagem original
h(x,y) é o processo de degradação
η(x,y) é o ruído presente na imagem degradada
●
●
Modelo no domíno de frequência
●
D(u,v) = I(u,v) ⋅ H(u,v) + N(u,v)
Modelo de degradação
●
O problema consiste em encontrar o filtro R(u,v)
que aproxima I'(u,v) do espectro I(u,v) da
imagem original.
●
Se a restauração for perfeita, então I'(u,v)=I(u,v)
●
Portanto
Filtragem inversa
●
●
●
Assumindo N(u,v) = 0,
Especial atenção quando H(u,v) = 0 para
algumas frequências (u,v)
Como normalmente H(u,v) tem características de
bassa-baixas, é comum assumir um frequência
de corte w (raio).
Filtragem de Wiener
●
Minimiza o erro quadrático médio
●
Resultando
é a relação ruído-sinal normalmente
constante
Exemplos
Filtro inverso
completo
Filtro inverso
com raio w
Filtro de
Wiener
Modelagem de H(u,v)
Rejeita-banda
Ideal
Rejeita-banda
de Butterworth
Rejeita-banda
Gaussiano
Modelagem de H(u,v)
●
Estimação da função de degradação
–
–
–
Observação:
– Experimentação:
H(u,v)=D(u,v) / I'(u,v)
Movimento:
H(u,v) = D(u,v) / A
Modelagem de H(u,v)
(Falcão, 2005)
Modelagem de H(u,v)
Download