Processamento de Imagens
• Processamento de Imagens
•
•
•
•
•
•
Matemática por trás de Processamento de Imagens
Operações Aritméticas com imagens
Conceito de Filtro
Realçar e Borrar
Ampliar e Reduzir
Combinação de Imagens
•
•
•
•
Mistura
Transparência
Adição e Subtração
Morphing
• Outros Assuntos
• Dithering
• Animações com Sprites
Matemática por trás de
Processamento de Imagens
•
•
•
•
•
•
Teoria de Sinais
Freqüência de uma imagem
Transformada de Fourier 2D
Shannon / Nyquist
Convolução
Impulso
Operações Aritméticas com
Imagens
• Subtração de duas imagens:
– Útil para diferenças entre imagens
Ex: sequências em uma animação
• Adição de duas imagens
IMAGEM 1
Operação
IMAGEM 2
• Multiplicação por um escalar
IMAGEM
FINAL
FILTRO
IMAGEM
ORIGINAL
FILTRO
IMAGEM
FINAL
• Filtros de Amplitude
Atuam diretamente no espaço de cor das imagens
• Filtros Topológicos
Atuam no domínio da imagem
Filtros de Amplitude x Topológico
Gamma
Correction
PUNCH
Convolução Discreta 2D
Filtro representado
por uma Matriz 3x3:
1/9
Imagem (5x5):
6
4
5
6
8
9
0
4
8
5
1
1
1
3
2
3
4
2
1
1
1
9
2
3
6
1
1
1
1
7
8
9
0
4
Algoritmo:
Para cada pixel da imagem
•Posicionar centro do filtro sobre o pixel
•Calcular média ponderada dos pixels vizinhos segundo os valores do filtro
•pixel correspondente na imagem final ganhará essa média
Exemplo no pixel (2,4):
(2+3+4+2+3+6+8+9+0) / 9 ≈ 4
6
4
5
6
8
Considerações:
9
0
4
8
5
• Complexidade?
3
2
3
4
2
• Valores Negativos?
9
2
3
6
1
7
8
9
0
4
• O que fazer na borda?
Considerações quanto a
Convolução Discreta 2D
• Complexidade da operação entre uma imagem mxn e um filtro pxq?
 m•n•p•q
 Em alguns casos é possível melhorar através de duas passadas 1D
• Alguns filtros podem conter valores negativos, levando a resultados com
valores negativos (ou mesmo valores fora do espaço de cores)!
Duas soluções simples:
 arrendondar para o valor existente mais próximo (negativos→0)
 Transformação dos valores (offset + redistribuição de valores)
Considerações quanto a
Convolução Discreta 2D
Código da
convolução?
• Problemas na borda: Como estender o domínio?
 Extensão nula
 Extensão periódica

Extensão por reflexão
• Quantidade par de coeficientes por linha ou coluna!
Onde fica o centro do filtro?
?
?
?
?
Filtro BOX
1/9
1
1
1
1
1
1
1
1
1
Como será a imagem final após a filtragem pelo filtro BOX?
• Cada pixel será a média dos vizinhos
• Um pixel branco no meio de pixels azuis vai ficar azulado
• Portanto este filtro vai borrar a imagem
• É chamado de filtro passa baixa
(porque deixa passar apenas baixas freqüências,
as altas são filtradas)
Resultado de um Filtro BOX
BOX
• O Filtro BOX é anisotrópico
Filtro Gaussiano
1
16
1
64
n
2n
Máscara de coeficientes
1
2
11
2
4
121
3
8
1331
4
16
14641
5
32
1 5 10 10 5 1
6
64
1 6 15 20 15 6 1
7
128
1 7 21 35 35 21 7 1
8
256
1 8 28 56 70 56 28 8 1
1
3
3
1
3
9
9
3
3
9
9
3
1
3
3
1
1
256
1
2
1
2
4
2
1
2
1
1
4
6
4
1
4
16 24 16
4
6
24 36 24
6
4
16 24 16
4
1
4
1
6
4
Triângulo de pascal para
geração discreta da Gaussiana
Resultado do Filtro Gaussiano
Gauss
• O Filtro Gaussiano é isotrópico
Filtro Laplaciano
0
1
0
1
1
1
1
-4
1
1
-8
1
0
1
0
1
1
1
truncation
• Filtro passa alta.
• Somar à imagem original
para realçar os detalhes.
offset
Ampliação e Redução
8x5
Redução
10 x 8
Ampliação
Redução:
• Pixel resize (filtragem)
• Interpolação linear
bilinear resample
Ampliação:
• Pixel resize
•Interpolação não linear
bicubic resample
14 x 10
Combinação de Imagens
•
•
•
•
•
•
Pixels alternados
Imagens com as cores misturadas (blend)
Álgebra (adição e subtração)
Canal Alpha (composição)
Morphing
Profundidade *
Pixels Alternados
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
B
B
B
B
B
B
B
B
B
B
B
B
B
B
B
B
B
B
B
B
B
B
B
B
B
B
B
B
B
B
B
B
B
B
B
B
A
B
A
B
A
B
B
A
B
A
B
A
A
B
A
B
A
B
B
A
B
A
B
A
A
B
A
B
A
B
B
A
B
A
B
A
Blend de imagens
Imagem A
Imagem B
Imagem com 40% de A e 60% de B
Álgebra: 0.4·A + 0.6·B
Álgebra de imagens
IMAGEM 1
Operação
IMAGEM 2
IMAGEM
FINAL
Canal Alpha (composição)
Canal Alpha
Canal Alpha (composição)
Canal Alpha com 8 bits.
Exemplo: imagem1 com alpha, compondo com a imagem2
O pixel da imagem final (pf) será a composição do pixel
da imagem1(p1) com o da imagem2 (p2),
na proporção do alpha [0,1].
Para cada pixel:
pf = α·p1 + (1- α)·p2
OBS: imagem com 32 bits (8 bits para o canal Alpha)
Morphing
Dithering / Half Toning
Animações com Sprites
Canal Alpha
Seqüências coladas no mesmo fundo
Download

Processamento de Imagens