Processamento de Imagens e Fotografia Digital Images Alive: Manipulação de gradientes Eric Jardim ericjardim@gmail.com 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 ⊂ R 2 → R 3 = E U = [ a, b ] × [ c, d ] = { ( x, y ) ∈ R 2 ; a ≤ x ≤ b, c ≤ x ≤ d } Representação matricial (discreta), associa um reticulado ∆ = (∆ x , ∆ y ) ao domínio U ∆ = { ( x j , y k ) ∈ U ; x j = j ∆ x, y k = ∆ 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 x ∇ I = I y 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 � � I 2 I x I y x G σ = ( ∇ I ∇ I T ) ∗ K σ = ∗ K σ I 2 I x I y y onde K σ é núcleo gaussiano de variança σ Mas como G σ é positiva e simétrica � � � � v T 0 λ 1 G σ = ΛΣΛ T = [ v 1 v 2 ] 1 v T 0 λ 2 2 podemos encontrar autovetores v 1 , v 2 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 � � � � u T 0 µ 1 1 D = [ u 1 u 2 ] u T 0 µ 2 2 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 u 1 e u 2 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 G B σ , ou seja, 1 e u 2 = v B u 1 = v B 2 Temos então 3 situações: B é homogêneo ( λ B 1 ≃ 0 ) e A tembém é ( λ A 1 ≃ 0 ) µ 1 = 0 , µ 2 = 0 B é homogêneo ( λ B 1 ≃ 0 ) e A não é ( λ A 1 > 0 ), retém a 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
Recommend
More recommend