Images Alive

Transcrição

Images Alive
Processamento de Imagens e Fotografia
Digital
Images Alive: Manipulação de gradientes
Eric Jardim
[email protected]
IMPA - Instituto Nacional de Matemática Pura e Aplicada
Prof. Luiz Velho
Images Alive: Manipulação de gradientes – p. 1
Tema: Images Alive
Com a popularização de aparelhos com dispositivos
gráficos como celulares, handhelds, MP3 players e
câmeras digitais, o conceito de “imagem” ou “foto”
deixou de ser algo exclusivo para visualização em papel.
Com isso, existe a possibilidade de termos imagens
mais “vivas”, sejam com pequenas animações de uma
imagem ou cena original que dão um efeito de
movimento, sem perder a qualidade de imagem.
É nesse limiar entre imagem, animação e aplicações
interativas que reside o tema “Images Alive”.
Images Alive: Manipulação de gradientes – p. 2
Técnica escolhida
Edge Suppression by Gradient Field Transformation
Using Cross-Projection Tensors, dos autores Amit
Agrawal, Ramesh Raskar e Rama Chellappa.
A técnica consiste em utilizar as informações dos
gradientes das imagens tiradas de uma mesma cena
sob pequenas variações de iluminação ou com
pequenas alterações.
A partir de duas imagens, é possível gerar uma terceira
que combina informações das duas.
Images Alive: Manipulação de gradientes – p. 3
Exemplos de uso da técnica
Extração de objetos em primeiro plano
Images Alive: Manipulação de gradientes – p. 4
Exemplos de uso da técnica
Extração de reflexos
Images Alive: Manipulação de gradientes – p. 5
Técnica e o tema
Problema: como amarrar o tema com a técnica
escolhida?
Solução: transições suaves entre imagens resultantes e
originais (dissove)
Images Alive: Manipulação de gradientes – p. 6
Técnica: definições
Modelo funcional
f : U ⊂ R2 → R3 = E
U = [a, b] × [c, d] = {(x, y) ∈ R2 ; a ≤ x ≤ b, c ≤ x ≤ d}
Representação matricial (discreta), associa um
reticulado ∆ = (∆x , ∆y ) ao domínio U
∆ = {(xj , yk ) ∈ U ; xj = j∆x, yk = ∆yk}
j, k ∈ Z, ∆x , ∆y ∈ N}
O espaço de cor é representado por valores reais por
cada canal utilizando ponto flutuante.
Images Alive: Manipulação de gradientes – p. 7
Técnica: definições
Podemos olhar a imagem como o gráfico de
(x, y, f (x, y))
(x, y) ∈ U
Vamos agora denotar a imagem por I = f (x, y)
Definimos o gradiente de I como
∇I =
"
Ix
Iy
#
Para estimarmos os valores de ∇I utilizamos diferenças
finitas
Images Alive: Manipulação de gradientes – p. 8
Exemplo: gradiente
Gradiente de um canal de uma imagem
Images Alive: Manipulação de gradientes – p. 9
Técnica: definições
Vamos também definir o tensor de estrutura suavizado
por
T
Gσ = (∇I∇I ) ∗ Kσ =
"
Ix2
Ix Iy
Ix Iy
Iy2
#
∗ Kσ
onde Kσ é núcleo gaussiano de variança σ
Mas como Gσ é positiva e simétrica
Gσ = ΛΣΛT = [ v1 v2 ]
"
λ1
0
0
λ2
#"
v1T
v2T
#
podemos encontrar autovetores v1 , v2 e seus autovalores
associados λ1 , λ2 onde λ1 ≥ λ2
Images Alive: Manipulação de gradientes – p. 10
Exemplo: tensor de estrutura suavizado
Tensor de estrutura suavizado
Images Alive: Manipulação de gradientes – p. 11
Técnica: definições
Problema: queremos retirar bordas comuns de uma
imagem e preservar as outras
Como fazer para remover uma borda de um gradiente
de uma imagem?
Idéia: aplicar uma transformação afim para projetar o
vetor na direção perpendicular à borda.
Images Alive: Manipulação de gradientes – p. 12
Tensor de projeção cruzada
A forma do tensor de projeção cruzada
D = [ u1 u2 ]
"
µ1
0
0
µ2
#"
uT1
uT2
#
Utilizamos as informações do tensor de estrutura Gσ de
cada imagem, digamos A e B
Por convenção queremos:
remover as bordas de A que estão em B
preservar as bordas de A que não estão em B
Os valores µ1 e µ2 e os vetores u1 e u2 são baseados na
análise dos tensores de estrutura das duas imagens
Images Alive: Manipulação de gradientes – p. 13
Tensor de projeção cruzada
Vamos calcular o tensor de projeção cruzada
Utilizamos as direções dos autovetores de GB
σ , ou seja,
u1 = v1B e u2 = v2B
Temos então 3 situações:
A ≃ 0)
≃
0
)
e
A
tembém
é
(
λ
B é homogêneo (λB
1
1
µ1 = 0, µ2 = 0
A > 0), retém a
≃
0
)
e
A
não
é
(
λ
B é homogêneo (λB
1
1
borda
µ1 = 1, µ2 = 1
B não é homogêneo (λB
1 > 0), projeta na direção
perpendicular
µ1 = 0, µ2 = 1
Images Alive: Manipulação de gradientes – p. 14
Exemplos de uso
Remoção de sombras e reflexos
Images Alive: Manipulação de gradientes – p. 15
Inovações na técnica
Aplicar a transformação afim apenas a alguns canais
para obter efeitos artísticos
Images Alive: Manipulação de gradientes – p. 16
Inovações na técnica
Vamos fazer o reverso da aplicação. Vamos inserir um
objeto em outra cena
Primeiros utilizamos uma imagem de funda para retirar
o objeto da frente
Images Alive: Manipulação de gradientes – p. 17
Inovações na técnica
Images Alive: Manipulação de gradientes – p. 18
Inovações na técnica
Utilizamos as informações do tensor de estrutura para
combinar imagens
Onde existem bordas da imagem da frente, zeramos (ou
abaixamos) o gradiente do fundo
Images Alive: Manipulação de gradientes – p. 19
Sobre a implementação
O código foi reescrito na linguagem Python (os originais
eram MatLab). Vantagens:
Linguagem de alto nível com fácil aprendizado e
utilização
Roda em diversas plataformas
É livre, grátis (e não necessita obter uma cópia do
MatLab)
Foi utilizado Qt4 como toolkit, permitindo parametrizar o
algoritmo sem rescrever código.
Todo o código está liberado sobre licença livre.
Foram utilizadas rotinas numéricas de alto desempenho
(NumPy e SciPy).
Images Alive: Manipulação de gradientes – p. 20
Referências
Edge Suppression by Gradient Field Transformation Using
Cross-Projection Tensors
www.cfar.umd.edu/~aagrawal/cvpr06/EdgeSuprresion.
Python
www.python.org
Qt
www.trolltech.com
Numpy e SciPy
www.scipy.org
Images Alive: Manipulação de gradientes – p. 21