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 [ Ix ] 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 G σ = ( I I T ) K σ = [ I 2 x I x I y I x I y I 2 y ] K σ onde K σ é núcleo gaussiano de variança σ Mas como G σ é positiva e simétrica [ G σ = ΛΣΛ T λ1 0 = [ v 1 v 2 ] 0 λ 2 ] [ v T 1 v T 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 [ µ1 0 D = [ u 1 u 2 ] 0 µ 2 ] [ u T 1 u T 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, u 1 = v B 1 e u 2 = 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 borda B não é homogêneo (λ B 1 perpendicular µ 1 = 1,µ 2 = 1 > 0), retém a > 0), projeta na direção µ = 0,µ = 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