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