Imagem Digital Captura, Processamento, Interpretação, Criação, Reprodução, … Captura da radiância de uma cena num plano FORMAÇÃO DE UMA IMAGEM NUMA CÂMERA DIGITAL Câmera obscura e Câmera “pin-hole” Plymouth, UK Câmera Obscura -- efeito natural Bellinzona no canton Ticino Switzerland. Primeiras câmaras fotográficas 1839 Luis-Jacques-Mandé Daguerre (1787-1851) Câmeras digitais Captura da cor Sensores Emissão da radiância num plano MONITORES Primeira imagem colorida (início do sec. XX) James Clerk Maxwell (1831-1879) Scottish physicist. RBG Images Multi-fontes pontuais OLED Nexus_one_screen_microscope.jpg (wiki) Impressão Imagem: Modelo Matemático: Função Níveis de cinza 100% 80% 60% 40% 20% 0% x Posição ao longo da linha L L(u,v) L : 0, w 0, h 2 C u L v v u Função Imagem colorida v G R u B Imagem coloridas como 3 canais de cor R R(u,v) G G(u,v) v v u = B B(u,v) u + v u + Imagem Digital Amostragem, quantização e codificação Digitalização de Imagens Discretização espacial (amostragem) Processos básicos 64x54 amostragem Imagem de tons contínuos Imagem amostrada quantização 55 55 55 55 55 55 55 55 20 22 23 45 55 55 64x54 - 16 cores 55 55 10 09 11 55 55 55 55 43 42 70 55 55 55 55 28 76 22 55 55 8*55, 1*20, 1*22, 1*23, …. 55 55 55 55 55 55 55 codificação Imagem amostrada, quantizada e codificada Imagem amostrada e quantizada Áudio (Sinal 1D) Amostragem, quantização e codificação de f(x) f(x) amostra partição do eixo x x Amostragem, quantização e codificação de f(x) f(x) 6 5 4 3 2 amostra quantizada 1 0 x codificação = (3, 4, 5, 5, 4, 2, 2, 3, 5, 5, 4, 2) Problemas associados a re-amostragem de um sinal digital f(x) f(x) 6 5 4 3 2 1 função original função reconstruída pelo vizinho mais próximo 0 função reconstruída por interpolação linear x (a) aumento de resolução Re-amostragem de f(x) f(x) 6 5 4 3 2 1 função original função reconstruída pelo vizinho mais próximo 0 função reconstruída por interpolação linear x (b) redução de resolução Imagem Digital Conceitos, Processamento e Análise Parte 2 - Eliminação de ruídos e realce de arestas Aplicações da Transformada de Fourier Redução de ruídos • Dada uma imagem I com um ruído n, reduza n o máximo que puder (preferencialmente elimine n completamente) sem alterar significativamente I. Iˆ(i, j) I (i, j) n(i, j) s SNR n s SNRdB 10log10 n s 100 20 dB significam n Dois tipos básicos de ruídos • Ruído Gaussiano branco : processo estocástico de média zero, independente do tempo e dos espaço. n (i, j ) ~ n (i i0 , j j0 ) é o mesmo processo estocástico que não varia no tempo. n (i, j ) 0 n (i, j ) é uma variável aleatória com a distribuição: x2 G ( x) 1 2 2 e 2 Dois tipos básicos de ruídos • Ruído impulsivo: causado por erro de transmissão, CCDs defeituosos, etc... Também chamado de pico e de sal e pimenta. xl 0 nsp (i, j ) imin y (imax imin ) x l x, y 0,1 são v.a. uniformemente distribuídas imin, imax, e l são parâmetos de controle da quantidade de ruídos. Exemplo de ruído Gaussiano (=5) e Impulsivo ( =0.99) Imagem com ruído impulsivo Uso da mediana 223 204 204 204 204 204 204 204 204 204 204 204 204 223 171 120 120 120 18 120 50 120 120 120 120 120 120 171 171 120 120 120 116 120 120 120 120 120 120 120 120 171 138 120 120 120 120 120 50 120 97 120 120 120 120 171 171 120 120 120 120 120 120 120 120 120 187 120 120 242 172 120 120 120 120 120 120 120 120 120 120 120 120 171 171 120 120 120 120 120 179 120 120 120 120 167 120 171 171 120 120 120 120 120 120 235 120 120 120 120 120 171 171 120 120 120 120 120 120 235 120 76 175 120 120 171 171 120 120 120 120 120 120 120 120 120 120 120 120 171 171 120 120 120 120 120 120 120 123 120 120 214 120 114 171 120 120 120 120 120 120 120 120 120 120 120 143 171 171 120 120 120 232 120 120 198 120 120 120 120 120 171 203 171 171 171 171 171 171 171 171 205 171 171 171 203 Iij = mediana Ωij Sinal com ruído f3( x ) := 10 cos( 2 x )6 sin( 10 x ).8 cos( 40 x ) 20 15 10 5 0 -5 -10 -15 -20 Suavização f h f i 1 2 f i f i 1 hi 4 Filtragem Gaussiana 20 15 10 5 0 -5 -10 -15 -20 w1+w2+w3 filtro w1+w2 Imagem Digital: Histogramas Uma outra maneira de ver a informação da imagem: probabilidade de ocorrência de um determinado valor, uso do intervalo [0,255], contraste,... Histogramas de Imagem Colorida Propriedades básicas de uma Imagem Digital Convolução h( x) f g f (u) g ( x u)du t h( x ) g (t x) f ( x)dt t n 1 hi g ( k i ) f i k 0 Convolution • Pictorially f(x) h(x) Convolution h(t-x) x f(t) Convolution • Consider the function (box filter): 0 h ( x ) 1 0 x 12 12 x x 12 1 2 Convolution • This function windows our function f(x). f(t) Convolution • This function windows our function f(x). f(t) Convolution • This function windows our function f(x). f(t) Convolution • This function windows our function f(x). f(t) Convolution • This function windows our function f(x). f(t) Convolution • This function windows our function f(x). f(t) Convolution • This function windows our function f(x). f(t) Convolution • This function windows our function f(x). f(t) Convolution • This function windows our function f(x). f(t) Convolution • This function windows our function f(x). f(t) Convolution • This function windows our function f(x). f(t) Convolution • This function windows our function f(x). f(t) Convolution • This function windows our function f(x). f(t) Convolution • This function windows our function f(x). f(t) Convolution • This function windows our function f(x). f(t) Convolution • This function windows our function f(x). f(t) Convolution • This function windows our function f(x). f(t) Convolution • This function windows our function f(x). f(t) Convolution • This function windows our function f(x). f(t) Convolution • This function windows our function f(x). f(t) Convolution • This function windows our function f(x). f(t) Convolution • This function windows our function f(x). f(t) Convolution • This particular convolution smooths out some of the high frequencies in f(x). f(x)g(x) f(t) Ilustação da convolução t h( x ) g ( t x ) f ( x ) dt t Ilustração da convolução t h( x ) g ( t x ) f ( x ) dt t O problema de amostragem ALIAS Freqüência de Amostragem f(x) x f(x) x f(x) x Sinal sub-amostrado Estudo de sinais digitais Transformadas para o domínio da freqüencia Teorema de Nyquist e Alias revisão Harmônicos 8 A T 6 4 t+ -A A cos(t ) A 2 0 -2 0 0.01 0.02 0.03 0.04 -4 -6 -8 f 1 ( Hz ) T t 2ft 2 t (rad ) T 0.05 Integrais de senos e cosenos em [-,] revisão sin(nx) cos(nx) n=1 n=2 sin(nx)cos(nx) Áreas se compensam. Integrais resultam em 0. revisão Integrais de senos e cosenos em [-,] Funções ortogonais Série de Fourier f(t) Jean Baptiste Joseph Fourier (1768-1830) Paper de 1807 para o Institut de France: Joseph Louis Lagrange 0 (1736-1813), and Pierre Simon de Laplace (1749-1827). T t 2kt 2kt f (t ) a0 2 (ak cos bk sin ) T T k 1 Exemplo: Série de harmônicos 1.15 1.15 1.15 0.95 0.95 0.95 0.75 0.75 0.75 0.55 0.55 0.35 0.35 0.35 0.15 0.15 0.15 -0.05 -0.05 -0.05 -0.25 -0.25 -0.25 f(t) Série de Fourier: cálculo de a0 2 kt 2 kt f (t ) a0 2 (ak cos bk sin ) T T k 1 0 T 0 T 0 T T f (t )dt 0 t T 2 nkt 2 kt T ao dt ak cos( )dt bk sin( )dt 0 0 T T k 1 f (t )dt a0T 0 0 1 a0 T T 0 f (t ) dt Série de Fourier: an e bn f(t) 2 kt 2 kt f (t ) a0 2 (ak cos bk sin ) T T k 1 0 T 0 T t T 2 nt 2 n t 2 k t 0 2 a cos( ) cos( )dt 0 cos( ) f (t )dt n 0 T T k 1 T Tan 1 an T T 0 2 n t f (t ) cos( )dt ... T 1 bn T T 0 2 n t f (t ) sin( )dt T Resumindo f(t) 0 T t 2 kt 2 kt f (t ) a0 2 (ak cos bk sin ) T T k 1 1 T 2 kt ak f (t ) cos( )dt 0 T T 1 bk T T 0 2 kt f (t ) sin( )dt T k 0,1,2,3,... k 1,2,3,... 2 k k T 2 T Domínios f(t) 0 T t tempo ou espaço ak 0 bk 0 2 T w freqüencia w Coeficientes de funções pares e ímpares 1 0.8 0.6 0.4 0.2 0 -0.2 0 0.2 0.4 0.6 0.8 -0.4 -0.6 -0.8 -1 cos cos sin f-ímpar ak = 0 f-par bk = 0 sin 1 Periodicidade da Série de Fourier f(t) 0 t T 2 k 2 k f (t T ) a0 2 ak cos (t T ) bk sin (t T ) f (t ) T T k 1 f(t) 0 T t revisão Números complexos eixo imagnário y q x eixo real • • • • x é a parte real y é a parte imaginária A é a magnitude q é a fase z x iy A(cosq i sin q ) i 1 revisão Operação básicas com complexos ( x1 iy1 ) ( x2 iy2 ) ( x1 x2 ) i( y1 y2 ) a( x iy ) ax iay i 2 1 ( x1 iy1 )(x2 iy2 ) ( x1 x2 i 2 y1 y2 ) i( x2 y1 x1 y2 ) ( x1 x2 y1 y2 ) i( x2 y1 x1 y2 ) 2 2 2 2 ( x iy)(x iy) ( x y ) i( xy xy) x y x iy1 x2 iy2 1 x iy x iy x1 iy1 1 x2 iy2 x2 iy2 x22 y22 1 1 2 2 x2 iy2 eiq cosq i sin q revisão Derivada de eit d it e i e i t dt d cos t i sin t sin t i cos t dt 1 i ( sin t cos t ) i 1 i i 2 i i i 1 i(i sin t cost ) C.Q.D. Outras propriedades úteis eiq cosq i sin q i ei 1 -1 e i 2 i 1 revisão Outras propriedades úteis (2) e iq cosq i sin q eiq cosq i sin q iq cosq (e e 1 2 revisão iq ) cost 12 (eit eit ) i -1 t 1 t -i o cosseno corresponde a média de dois harmônicos de freqüências w e -w Outras propriedades úteis (2) revisão e iq cosq i sin q eiq cosq i sin q 1 i i i i 2 1 i sin q 21i (eiq eiq ) 2i (eiq eiq ) t i -1 t 1 -i o seno também corresponde a dois harmônicos: w e -w Outras propriedades úteis (3) z1 A1eiq1 A1 (cosq1 i sin q1 ) z2 A2eiq2 A2 (cosq2 i sin q2 ) z1 z2 A1 A2e i (q1 q 2 ) z1 A1 i (q1 q 2 ) e z2 A2 revisão revisão Amplitude e fase de complexos Dado um valor: z A(cosq i sin q ) x iy A2 x 2 y 2 zz A sin q -A Amplitude q A cos q A y tan q x Fase Série de Fourier com números complexos eiq e iq cosq 2 eiq e iq sin q 2i 2kt 2kt f (t ) a0 2 ak cos bn sin T T k 1 2kt i 2kt i b T f (t ) a0 ak e e T k k 1 i 2kt i i 2Tkt T e e 1 i bk i 2Tkt bk i 2Tkt f (t ) a0 ak e ak e i i k 1 2kt 2kt i i T T f (t ) F0 Fk e F k e k 1 i i i 2 1 i F0 a0 , Fk ak ibk , Fk an ibn Fk Fk f (t ) i ( 1 T Fk f (t )e T 0 F e k 2kt ) T i 2kt T k dt k 1,2,3,... Escrevendo em complexos 2kt 2kt f (t ) a0 2 (ak cos bk sin ) Fk e T T k 1 k 2 kt i T Fk ak ibk 1 T 2kt 1 T 2kt ak f (t ) cos( )dt , bk f (t ) sin( )dt 0 0 T T T T e i ( 2kt ) T 2kt 2kt cos( ) i sin( ) T T 1 Fk f (t )e T 0 T k 0,1,2,3,... i ( 2kt ) T dt k 0,1,2,3,... Serie de Fourier de Sinais Discretos Sinal discreto f (t ) fr 0 1 2 3 t 4 5 6 r N-1 t rt T N t fo , f1, f 2 ,, f r ,, f N 2 , f N 1, t f (t ) cos( 2kt ) T 0 t 1 2 3 4 5 tr rt N t T N t T 1 ak T T 0 2kt f (t ) cos( )dt T 1 N 1 2 kr ak f r cos( ) N r 0 N 1 N 1 2krt f k cos t Nt r 0 Nt ... 1 N 1 2 kr bk f k sin N r 0 N 1 N 1 2 kr ak f r cos( ) N r 0 N c00 a0 c a 1 1 10 N c( N 1) 0 a N 1 s00 b0 s b 1 1 10 N b s( N 1) 0 N 1 c01 c11 c( N 1)1 s01 s11 s( N 1)1 1 N 1 2 kr bk f k sin N r 0 N c0 ( N 1) f 0 c1( N 1) f1 c( N 1)( N 1) f N 1 s0 ( N 1) f 0 s1( N 1) f1 s( N 1)( N 1) f N 1 onde: 2 kr ckr cos( ) N onde: 2 kr skr sin( ) N N 1 1 Fk ak ibk f s e N s 0 E00 F0 E F 1 1 10 N F E( N 1) 0 N 1 N 1 f k Fr e i( E01 E11 E( N 1)1 i ( 2ks ) N E0( N 1) f 0 E1( N 1) f1 E( N 1)( N 1) f N 1 onde: Ekr e i 2 kr N 2kr ) N r 0 f 0 E '00 f E' 10 1 f N 1 E '( N 1) 0 E '01 E '11 E '( N 1)1 E '0 ( N 1) F0 E '1( N 1) F1 E '( N 1)( N 1) FN 1 onde: E 'kr e i 2 kr N Transformada Discreta f (t ) sin(2 10t ) 1.5 1 0.5 f a 200Hz 0 0 0.2 0.4 0.6 0.8 1 1.2 -0.5 N 256 -1 -1.5 1 t 0.005sec fa T 0.005 256 1.28 sec T - não é o período do sinal! N T N t fa sT f s sin( 2 10 ) N 1.4 Transformada Discreta de Fourier sT f s sin( 2 10 ) N 2ks N 1 i ( ) 1 N Fk f s e N s 0 k 1 1.5 1 0.5 0 0 0.2 0.4 0.6 0.8 1 1.2 1.4 -0.5 -1 -1.5 ampl 0.5 1 f 0.7813 /sec T 2 4.91 rad /sec T 10.15625, 0.46776 0.4 0.3 0.2 0.1 0 0 20 40 60 todas as feqüências computadas são multiplas destas 80 100 Outro exemplo f3( t ) := 10 cos( 2 t ) 6 sin( 10 t ) .8 cos( 40 t ) 20 15 10 5 0 -5 -10 -15 -20 Transformada fk 20 15 10 N 1 f k Fr e 5 0 -5 0 0.2 0.4 0.6 0.8 1 1.2 1.4 -10 i( 2 kr ) N r 0 -15 -20 2 k s ) N 4 3 2 1 0 0 20 20.31, 0.35 1 Fk f s e N s 0 i ( 5 4.69, 2.41 N 1 0.78, 4.52 ampl 40 60 80 100 120 Eixo de freqüência Discrete Cosine Transformation (DCT) (k ) N 1 (2s 1)k Ck f s cos N s 0 2N ( k ) (2s 1)k fs Cr cos N 2N k 0 N 1 1 (k ) 2 k 0 k 0 (2s 1)k cos 2N 1 0.8 0.6 0.4 0.2 0 -0.2 1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 -0.4 -0.6 -0.8 -1 cos( 2 ) sen( ) o cosseno pode substituir o seno 31 Resumindo f(t) 0 T t 2 kt 2 kt f (t ) a0 2 (ak cos bk sin ) T T k 1 1 T 2 kt ak f (t ) cos( )dt 0 T T 1 bk T T 0 2 kt f (t ) sin( )dt T k 0,1,2,3,... k 1,2,3,... 2 k k T 2 T f (t ) cos( 2kt ) T 0 t 1 2 3 4 5 tr rt N t T N t T 1 ak T T 0 2kt f (t ) cos( )dt T 1 N 1 2 kr ak f r cos( ) N r 0 N 1 N 1 2krt f k cos t Nt r 0 Nt ... 1 N 1 2 kr bk f k sin N r 0 N Aula 2 Serie de Fourier de Sinais Discretos Sinal discreto f (t ) fr 0 1 2 3 t 4 5 6 r N-1 t rt T N t fo , f1, f 2 ,, f r ,, f N 2 , f N 1, t N 1 1 Fk ak ibk f s e N s 0 E00 F0 E F 1 1 10 N F E( N 1) 0 N 1 N 1 f k Fr e i( E01 E11 E( N 1)1 i ( 2ks ) N E0( N 1) f 0 E1( N 1) f1 E( N 1)( N 1) f N 1 onde: Ekr e i 2 kr N 2kr ) N r 0 f 0 E '00 f E' 10 1 f N 1 E '( N 1) 0 E '01 E '11 E '( N 1)1 E '0 ( N 1) F0 E '1( N 1) F1 E '( N 1)( N 1) FN 1 onde: E 'kr e i 2 kr N Transformada fk 20 15 10 N 1 f k Fr e 5 0 -5 0 0.2 0.4 0.6 0.8 1 1.2 1.4 -10 i( 2 kr ) N r 0 -15 -20 2 k s ) N 4 3 2 1 0 0 20 20.31, 0.35 1 Fk f s e N s 0 i ( 5 4.69, 2.41 N 1 0.78, 4.52 ampl 40 60 80 100 120 Transformada de Fourier F ( w) f ( x)e i 2wx f ( x) F ( w)e i 2wx dx dw Exemplo 1: Função caixa (box) box(x) 0 se x b 2 f ( x ) box ( x ) a se x [ b 2, b 2] 0 se x b 2 a x b F ( w) box ( x )e i 2wx a e i 2wx i 2w b/2 i 2wx a e dx dx b / 2 a iwb iwb e e b / 2 i 2w a a eiwb e iwb sin(bw) w w 2i sin(bw) F ( w) ab wb b/2 Transformada da função box a sin(wb) F ( w) ab wb box(x) x b sin(bw) F ( w) ab bw ab F(w) sinc(bw) -3/b -2/b -1/b 0 1/b 2/b 3/b w Distribuição normal: Gaussiana gaus( x ) := e Gauss( x ) 1 2 e x2 2 2 2 ( x ) Exemplo 2: Gaussiana || F(w) || f(x) 0.1 8 0.1 8 0.1 3 0.1 3 0.08 0.08 0.03 0.03 w -0.02 x -0.02 1 x2 2 1 f ( x) e 2 2 F ( w) e w2 2 1 2 Transformada da Gaussiana 1 2 F ( w) e 2 e i 2wx dx 2 x2 1 2 e 2 cos(2wx) i sin(2wx)dx 2 x2 1 2 e x2 2 2 cos( 2wx )dx w 1 2 1 2 2 e , 2 2 2 e 2 2 w2 Exemplo 3: Delta de Dirac f(x) 0 se x b 2 ( x) lim1 / b se x [ b 2, b 2] b 0 0 se x b 2 1/b -b/2 b/2 x 1 b / 2 b / 2 b b f ( x)dx lim f ( ), , f ( x) ( x)dx lim b 0 b b 0 b 2 2 b / 2 b/2 f ( x) ( x)dx f (0) Delta de Dirac de Gaussianas ( x) lim 0 1 e 2 x 2 2 9e 4e x 2 1 2 3 x 2 1 2 2 1e x 2 1 1 2 Transformada do Delta de Dirac f(x) F ( w) ( x)e i 2wx dx e0 1 (x) x || F(w) || 1 w Transformada do cosseno 1.5 cos(w t ) F ( w) 1 i 2wx cos( w x e dx 0.5 0 x -0.5 -1 cos(w x)cos(2wx) i sin(2wx)dx -1.5 w 0 se w 2 cos(w x) cos(2wx)dx w se w 2 Exemplo 4: Cosseno 1.5 cos(w t ) || F(w) || (w w ) 1 (w w ) 0.5 0 x -0.5 w w w -1 -1.5 1 w w F ( w) ( w ) ( w ) 2 2 2 Exemplo 5: Sequência de impulsos f(x) || F(w) || -2b -b b 2b3b x -2/b -1/b w 1/b 2/b || F(w) || f(x) -2b -b 1b 2b 3b x (t ) (t kT0 ) k -2/b -1/b 1/b 2/b w 2 ( w) (t k ) T0 k Pares importantes Propriedades da transformada convolução Filtragem com Transformada de Fourier f (x ) f (x ) h(x ) h(x ) FT-1 FT FT FT H (w) F (w) X F (w) X H (w) Amostragem e Reconstrução Observando os domínio do espaço e das freqüências Sinal original domínio do espaço domínio das freqüências Sinal discretizado f k f (t ) (t kT0 )dt k Amostragem domínio do espaço produto domínio das freqüências convolução Sinal discretizado domínio do espaço domínio das freqüências Reconstrução domínio do espaço convolução domínio das freqüências produto Retorno ao sinal original domínio do espaço domínio das freqüências Sinal original com mais altas freqüências domínio do espaço domínio das freqüências Mesma taxa de amostragem domínio do espaço produto domínio das freqüências convolução Sinal amostrado domínio do espaço domínio das freqüências Não temos como reconstruir sem introduzir artefatos! Teorema de Nyquist Para que um sinal de banda limitada (i.e. aqueles cuja a transformada resultam em zero para freqüências f > B) seja reconstruido plenamente ele precisa ser amostrado numa freqüência f >= 2B. Um sinal amostrado na freqüência (f=2B) é dito amostrado por Nyquist e f=2B é a freqüência de Nyquist. Não há perda de informação nos sinais amostrados na freqüência de Nyquist, e não adicionamos nenhuma informação se amostrarmos numa freqüência maior. Aliasing • Esta mistura de espectros é chamada de aliasing. • Existem duas maneiras de lidarmos com aliasing. – Passar um filtro passa-baixa no sinal. – Aumentar a freqüência de amostragem. Alias Texture errors Imagem Digital Conceitos, Processamento e Análise Parte 2 - Eliminação de ruídos e realce de arestas Aplicações da Transformada de Fourier Filtragem Gaussiana 20 15 10 5 0 -5 -10 -15 w1+w2+w3 filtro w1+w2 -20 f i 1 2 f i f i 1 hi 4 Filtro • Um filtro é um operador que atenua ou realça uma determinada freqüência • Fácil de visualizar no domínio da freqüência onde: F ( ) f (t ) H ( ) F ( )G( ) h(t ) H ( ) h(t) é o f(t) filtrado Tipos de Filtros H ( ) F ( )G( ) F G H = Passa baixa = Passa alta = Passa banda Imagem filtrada com um filtro passa baixa Imagem filtrada com um filtro passa alta Filtragem no domínio espacial G( ) g ( x) F ( ) f ( x) H ( ) F ( )G( ) ou: h( x) H ( ) h( x) f g f (u) g ( x u)du • Filtragem no domínio espacialNaérealidade obtida é ao contrário: a TF é pela convolution (e vice-versa). uma ferramenta para filtragem. Mascara ou Filtro f i 1 2 f i f i 1 hi 4 ou: hi n 1 g k 0 ( k i ) fi se l 1 0 1 / 4 se l 1 g l 2 / 4 se l 0 1 / 4 se l 1 se l 1 0 Discretização da Gaussiana 1D 1 e 2 G ( x) 0.3 x2 2 0.2 0.1 -4 -3 1 1 4 -2 2 -1 0 1 1 1 64 1 2 1 1 16 6 15 20 15 3 4 6 6 1 4 4 1 2 Discretização da Gaussiana 2D G ( x, y ) 1 1 2 16 1 1 e 2 2 4 2 1 2 1 x2 y2 2 2 1 4 1 7 273 4 1 4 7 4 16 26 26 41 16 26 16 4 26 7 16 4 1 4 7 4 1 Separabilidade do filtro gaussiano 207 247 38 131 38 62 90 129 234 231 211 175 44 1 26 236 58 75 128 112 210 141 125 168 58 1 1 4 2 1 1 2 16 1 2 4 2 1 2 1 130 117 129 125 90 88 129 93 92 130 117 129 125 90 88 129 93 92 1 185 113 84 93 145 207 151 66 18 107 84 111 154 140 130 1 1 2 1 4 Transformada normalizada de Fourier w1 h 1 1 i 2 ( xr / w ys / h ) F (r , s) f ( x, y)e wh x0 y 0 w1 h 1 1 i 2 ( xr / w ys / h ) f ( x, y) F ( r , s )e wh r 0 s 0 Transformada normalizada de Fourier: separação w1 h 1 1 i 2 ( xr / w ys / h ) F (r , s) f ( x, y)e wh x0 y 0 i 2 ( xr / w) 1 w1 1 h1 i 2 ( ys / h ) F (r , s) f ( x, y )e e w x 0 h y 0 T ( x, s ) Transformada normalizada de Fourier: Matriz H 1 i 2 ( ys / h ) T ( x, s) f ( x, y ) e h y 0 h 1 H ( y, s ) 1 i 2 ( ys / h ) 1 e H ( y, s ) e h h i 2 h ys T fH f 00 f 10 f f ( h 1) 0 f 01 f11 f ( h 1)1 f1( h 1) f ( h 1)( h 1) f 0 ( h 1) f 0 ( h 1) T fH i 2 00 e h i 2 10 1 e h H h i 2 ( h 1)0 h e i 2 h 01 e i 2 11 h e i 2 ( h 1)1 h e e i 2 1( h 1) h e i 2 ( h 1)( h 1) h e i 2 h 0( h 1) 1 e F (r , s ) w x 0 w1 i 2 w xr T ( x, s ) W ( r , x) 1 e W (r , x) w i 2 w rx F WT WfH i 2 00 e h i 2 10 1 e h W w i 2 ( w1)0 e h i 2 h 01 e i 2 11 h e i 2 ( w 1)1 h e e i 2 1( w 1) h e i 2 ( w 1)( w 1) h e i 2 h 0( w 1) Problemas com a Transformada de Fourier f ( x1 , x2 ) F (k1 , k2 ) f ( x1 a, x2 b) F (k1 , k2 )e f ( x1 , x2 ) 1 i ( ak1 bk 2 ) k1 k2 F( , ) f ( x1 cosq x2 sin q , x1 sin q x2 cosq ) F (k1 cosq k2 sin q , k1 sin q k2 cosq ) Como tornar a TF invariante a rotação e escala? f ( x1 , x2 ) F (k1 , k2 ) y1 ln( ) z e y2 q iq F (k1 , k2 ) z eiq f ( y1 , y2 ) F (k '1 , k '2 ) Imagem Digital Conceitos, Processamento e Análise Parte 3 - Processamentos apenas no espaço das cores Correção gama Ajustes de contraste e iluminação Correção gama L L Probabilidade Função de densidade de probabilidade CDF(x) 1 DF(x) 0 Função de densidade acumulada de probabilidade 1 x0 x1 x x1 P{x0 x x1} DF ( x)dx x0 0 x 1 x CDF ( x ) P{0 x x} DF ( x)dx 0 DF ( x) x d CDF ( x ) dx Mudança de variavel y = f (x) x f 1 ( y) y=f(x) 1 1 Transformaçã o monotônica e limitada ao intervalo [0,1] 0 1 x 0 1 d d dx DF ( y ) CDF ( y ) CDF ( x) dx dy dy y dx DF ( x) dy DF(y) f ( x) CDF ( x) dy 1 DF (x ) dx DF ( x) DF ( y) 1 DF ( x) 0 1 x Equalização de Histograma L nj j 0 n L' f ( L) 1.6 nj n 1.4 1.2 1 0.8 0.6 0.4 0.2 0 1 2 3 4 5 6 7 8 9 10 11 L Equalização do histograma Tons de cinza e negativo Lx,y = 0.299Rx,y + 0.587Gx,y + 0.114Bx,y tons de cinza Lx,y = 255 - Lx,y Outros exemplos com o PaintShopProtm Quantização de cores Quantização de 24 para 8 bits A qualidade depende da imagem Corte mediano Corte mediano Imagem Digital Conceitos, Processamento e Análise Parte 4 - Codificação e armazenamento de Imagens compressão e formatos de arquivos Codificação uniforme Uniforme tons # pixels código tam. # bits 0 1900 000 3 5700 1/7 2500 001 3 7500 2/7 2100 010 3 6300 3/7 1600 011 3 4800 4/7 800 100 3 2400 5/7 600 101 3 1800 6/7 300 110 3 900 1 200 111 3 600 TOTAL 30000 Podemos melhorar? Construção da Árvore Huffman 1/7 2500 1/7 2500 2/7 2100 2/7 2100 0 1900 0 1900 3/7 1600 3/7 1600 4/7 800 4/7 800 5/7 600 5/7 600 6/7 300 n0 500 1 200 n0 6/7 1 Construção da Árvore Huffman 1/7 2500 1/7 2500 2/7 2100 2/7 2100 0 1900 0 1900 3/7 1600 3/7 1600 4/7 800 n1 1100 5/7 600 4/7 800 n0 500 n1 n0 5/7 6/7 1 Construção da Árvore Huffman 1/7 2500 1/7 2500 2/7 2100 2/7 2100 0 1900 0 1900 3/7 1600 n2 1900 n1 1100 3/7 1600 4/7 800 n2 4/7 n1 n0 5/7 6/7 1 Construção da Árvore Huffman 1/7 2500 n3 3500 2/7 2100 1/7 2500 0 1900 2/7 2100 n2 1900 0 1900 3/7 1600 n3 3/7 n2 4/7 n1 n0 5/7 6/7 1 Construção da Árvore Huffman n3 3500 n4 4000 1/7 2500 n3 3500 2/7 2100 1/7 2500 0 1900 n4 n3 3/7 n2 4/7 n1 n0 5/7 6/7 1 2/7 0 Construção da Árvore Huffman n4 4000 n5 6000 n3 3500 n4 4000 1/7 2500 n6 1/7 n3 3/7 n2 4/7 n1 n0 5/7 6/7 1 n4 n5 2/7 0 Construção da Árvore Huffman n6 n4 n5 n3 3/7 n2 110 4/7 n1 1110 n0 5/7 11111 6/7 111101 1 111100 1/7 2/7 0 10 01 00 Codificação de Huffman Uniforme tons Huffman # pixels código tam. # bits código tam. # bits 0 1900 000 3 5700 00 2 3800 1/7 2500 001 3 7500 10 2 5000 2/7 2100 010 3 6300 01 2 4200 3/7 1600 011 3 4800 110 3 4800 4/7 800 100 3 2400 1110 4 3200 5/7 600 101 3 1800 11111 5 3000 6/7 300 110 3 900 111101 6 1800 1 200 111 3 600 111100 6 1200 TOTAL 30000 TOTAL 27000 Redundância de Codificação r p(r) 0 1/7 2/7 3/7 4/7 5/7 6/7 1 0.19 0.25 0.21 0.16 0.08 0.06 0.03 0.02 1.00 Code 1 l(r) 000 001 010 011 100 101 110 111 3 3 3 3 3 3 3 3 Lavg= l(r)p(r) 0.57 0.75 0.63 0.48 0.24 0.18 0.09 0.06 3.00 Code 2 l(r) 11 01 10 001 0001 00001 000001 000000 2 2 2 3 4 5 6 6 Lavg= l(r)p(r) 0.38 0.50 0.42 0.48 0.32 0.30 0.18 0.12 2.70 rk = tons de cinza em uma imagem, k=0, 1, ..., 1 p(rk) = nk / n onde nk = número de pixels com tom rk n = número de pixels da imagem 01 10 001 Lavg 1 l r pr k 0 k 0001 k 00001 000000 000001 11 Resultado da Teoria da Informação 1 lopt rk log2 pr k r 0 1/7 2/7 3/7 4/7 5/7 6/7 1 p(r) 0.19 0.25 0.21 0.16 0.08 0.06 0.03 0.02 =1.00 Code 1 000 001 010 011 100 101 110 111 l(r) 3 3 3 3 3 3 3 3 Lavg = l(r)p(r) 0.57 0.75 0.63 0.48 0.24 0.18 0.09 0.06 3.00 núm erode bits Code 2 l(r) 11 01 10 001 0001 00001 000001 000000 2 2 2 3 4 5 6 6 Lavg = l(r)p(r) 0.38 0.50 0.42 0.48 0.32 0.30 0.18 0.12 2.70 log(1/p) log(1/p)*p 2.4 2.0 2.3 2.6 3.6 4.1 5.1 5.6 Lopt = 0.46 0.50 0.47 0.42 0.29 0.24 0.15 0.11 2.65 Compressão de imagens Compressão de Imagens Sem Perda Com Perda • Preserva exatamente o conteúdo da imagem • Taxas de compressão 3 : 1 • Preserva de forma controlada o nível de qualidade da imagem • Taxas de compressão que chegam a valores de mais de 100 : 1 Métodos de compressão • Sem perdas – Run length encoding (RLE) - repetição – Huffman coding - histograma – Predictive coding - diferenças – Block coding (LZW) - dicionário • Com perdas – Truncation coding - reduz a representação – Predictive coding - descarta diferenças altas – Block coding - dicionário aproximado – Transform coding - descarta frequencias altas Métodos compostos: JPEG, MPEG Processo de compressão e descompressão Dados da Imagem Original Dados da Imagem Original 32, 45, 57, 68, 23, 100, 98, ... 32, 45, 57, 68, 23, 100, 98, ... Compressão da imagem Descompressão da imagem 32, 45, 57, 68, 23, 100, 98, ... Imagem Comprimida Transporte e/ou Armazenamento 32, 45, 57, 68, 23, 100, 98, ... Imagem Comprimida Fundamentos da Compressão de Imagens A compressão de uma imagem é obtida quando se elimina a redundância de: •codificação •entre pixels •psico-visual Redundância entre pixels 640 colunas x 480 linhas x 1 byte/pixel = 300 KBytes 480*(1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0) = ~18 Kbytes onde 1 = 32 bytes de preto e 0 = 32 bytes de branco Compressão - RLE Objetivo Reduzir a quantidade de dados redundantes. Exemplo AAAAAAxxx 6A3x Caracterísiticas Simples e rápido, porém a eficiência depende da imagem a ser comprimida. Run-Length Encoding 76 76 76 76 76 78 76 | 5 79 79 78 | 1 79 79 80 79 | 4 80 80 | 2 imagem binária ... 0 0 0 0 7 0 0 0 1 1 1 4 1 0 0 0 5 0 0 1 Compressão do jpeg Aplicações são tecnologicamente complexas: exemplo: algoritmo do JPEG 8x8 blocks Source Image B R G DCT-based encoding FDCT Quantizer Entropy Encoder Table Table Compressed image data Equations for JPEG DCT • Forward DCT: 7 7 1 (2i 1) x (2 j 1) y DCT ( x, y) CxC y Spixel(i, j ) cos cos 4 16 16 x 0 y 0 whereCxC y 1 for x,y 0; otherwiseCx , C y 1. 2 • Inverse DCT: 1 7 7 (2 x 1) j (2 y 1) pixel ( x, y ) Ci C j DCT (i, j ) cos cos 4 x 0 y 0 16 i where Ci , C j 1 for i, j 0; otherwise Ci , C j 1. 2 Visualization of Basis Functions Increasing frequency Increasing frequency Organização de pixels num array no formato TGA (targa) y h-1 ... 3 2 1 0 b b Pixel (x,y) g g 0 r r a a b g r 1 a b … unsigned char *bgra_vector; … offset=4*(w*y+x); blue = bgra_vector[offset]; green = bgra_vector[offset+1]; red = bgra_vector[offset+2]; alpha = bgra_vector[offset+3]; g r w-1 a x Outra ordem no plano Tipo Abstrato Imagem /*- implementação do tipo Imagem Image *imgCreate (int w, int h); void struct image_imp { imgDestroy (Image *image); int width; /* largura (width) em pixels */ int height; /* altura (height) em pixels */ float int imgGetWidth(Image * image); */ *buf; /* buffer RGB */ }; int imgGetHeight(Image * image); float * imgGetRGBData(Image * image); void imgSetPixel3fv(Image *image, int x, int y, float * color); void imgSetPixel3ubv(Image *image, int x, int y, unsigned char *color); void imgGetPixel3fv(Image *image, int x, int y, float *color); void imgGetPixel3ubv(Image *image, int x, int y, unsigned char *color); Image * imgReadBMP(char *filename); int imgWriteBMP(char *filename, Image * image); Image * imgCopy(Image * image); Image * imgGrey(Image * image); Image * imgResize(Image * img0, int w1, int h1); Arquivos Targa RGBA Pixels (bgra,bgra, …,bgra) Cabeçalho unsigned char imageType=2 /* RGB(A) sem compressão */ unsigned char bitDepth=32; /* 32 bits por pixel */ unsigned char byteZero=0; short int shortZero=0; /* usado para escrever um byte zero no arquivo */ /* usado para escrever um short int zero no arquivo */ /* escreve o cabecalho */ putc(byteZero,filePtr); /* no. de caracteres no campo de id da imagem */ putc(byteZero,filePtr); /* imagem nao tem palheta de cores */ putc(imageType,filePtr); /* = 2 -> imagem "true color" (RGBA) */ putuint(shortZero,filePtr);/* info sobre a tabela de cores (inexistente) */ putuint(shortZero,filePtr); /* idem */ putc(byteZero,filePtr); /* idem */ putuint(shortZero,filePtr); /* =0 origem em x */ putuint(shortZero,filePtr); /* =0 origem em y */ putuint(img->width,filePtr); /* largura da imagem em pixels */ putuint(img->height,filePtr); /* altura da imagem em pixels */ putc(bitDepth,filePtr); /* numero de bits de um pixel */ putc(byteZero, filePtr); /* origem canto inf esquedo sem entrelacamento */ Organização de pixels num array no formato PPM (o mais simples) 0 0 1 2 3 ... h-1 1 00 01 02 03 04 15 16 17 18 ... y ... 2 05 06 07 08 09 10 x w-1 11 Pixel (x,y) unsigned char *rgb_vector; … offset=3*(w*y+x); red = rgb_vector[offset]; green = rgb_vector[offset+1]; blue = rgb_vector[offset+2]; 12 13 14 Formato PPM • File_signature "P6". • White_space (blanks, TABs, CRs, LFs). • Width, w, (ASCII decimal characters). • White_space (blanks, TABs, CRs, LFs). • Height, h, (ASCII decimal characters). • White_space (blanks, TABs, CRs, LFs). • Max_color, max, (ASCII decimal characters). • White_space (blanks, TABs, CRs, LFs). • Pixels, (3*w*h bytes rgb components of pixels) • Comments from # to the end of line • lines 70 characters Formato PPM exemplo P6 # Created by Paint Shop Pro 358 539 255 =?:?A<AC>CE@EFAFGBGHCGHCGHB . . . Gravação em PPM int ppm_write(int w, int h, unsigned char *rgb, char *file_name) { FILE *fp; fp = fopen(file_name, "wb"); if (fp == NULL) return 0; if (fprintf(fp, "P6\n%d %d\n255\n", w, h) <= 0) { fclose(fp); return 0; } if (fwrite(rgb, 3*w*h, 1, fp) != 1) { fclose(fp); return 0; } fclose(fp); return 1; } Leitura em PPM int ppm_read(int *p_w, int *p_h, unsigned char **p_rgb, char *file_name) { FILE *fp; char line[80]; int rgb_size; int max; fp = fopen(file_name, "rb"); if (fp == NULL) { printf(”Error reading %s",file_name); return 0;} fgets(line,80,fp); if(strcmp(line,"P6\n")) { printf(”Wrong signature\n"); return 0; } while (fscanf( fp, " %d ", p_w ) != 1) fgets(line, 80, fp); while (fscanf( fp, " %d ", p_h ) != 1) fgets(line, 80, fp); while (fscanf( fp, " %d", &max ) != 1) fgets(line, 80, fp); fgetc(fp); rgb_size=3*(*p_w)*(*p_h); (*p_rgb) = (unsigned char *) calloc(rgb_size, 1); if ((*p_rgb) != NULL) fread( (*p_rgb), rgb_size, 1, fp ); fclose(fp); return 1; } Programa Simples void main(void){ int w, h; // dimensões da imagem unsigned char *rgb; // bytes de rgb unsigned char r,g,b,grey; // componentes de cor int x,y; long int k; if (ppm_read(&w,&h,&rgb,"test_in.ppm")==0) return; for (y = 0; y < h; y++) { for (x = 0; x < w; x++) { k = 3*(y*w+x); r = rgb[k]; g = rgb[k+1]; b = rgb[k+2]; grey = (unsigned char)(0.3*r+0.6*g+0.1*b); rgb[k] = grey; rgb[k+1] = grey; rgb[k+2] = grey; } } ppm_write(w, h, rgb, "test_out.ppm"); free(rgb); } Arquivo BMP 16 17 18 ... 00 01 02 03 Pixel 0 04 Pixel 1 05 06 07 08 Pixel 2 Organização dos pixels de uma imagem RGB no arquivo BMP 09 10 Pixel 3 11 12 13 14 Pixel 4 colocado para garantir múltiplo de 4 15 Microsoft Windows Bitmap - BMP Características Principais • • • • Mono, 4-bit, 8-bit, 24-bit Tipo de compressão: RLE / não comprimido Tamanho máximo: 64K x 64K pixels Seções (versão 3): Header Info. Header Palette Bitmap Data BMP - Header typedef struct _Win3xBitmapHeader { WORD DWORD WORD WORD DWORD Type; /* Image file type 4D42h (“BM”)*/ FileSize; /* File size (bytes) */ Reserved1; /* Reserved (always 0) */ Reserved2; /* Reserved (always 0) */ Offset; /* Offset to bitmap data in bytes } WIN3XHEAD; */ BMP - Information Header typedef struct _Win3xBitmapInfoHeader { DWORD Size; /* Size of this Header (40) */ DWORD Width; /* Image width (pixels) */ DWORD Height; /* Image height (pixels) */ WORD Planes; /* Number of Planes (always=1) */ WORD BitCount; /* Bits per pixel (1/4/8 or 24)*/ DWORD Compression; /* Compression (0/1/2) */ DWORD SizeImage; /* Size of bitmap (bytes) */ DWORD XPelsPerMeter; /* Horz. resol.(pixels/m) */ DWORD YPelsPerMeter; /* Vert. resol.(pixels/m) */ DWORD ClrUsed; /* Num of colors in the image */ DWORD ClrImportant; /* Num of important colors */ } WIN3XINFOHEADER; BMP - Palette typedef struct _Win3xPalette { RGBQUAD Palette[ ]; /* 2, 16, or 256 elem. */ } WIN3XPALETTE; typedef { BYTE BYTE BYTE BYTE struct _Win3xRgbQuad Blue; /* 8-bit blue component */ Green; /* 8-bit green component */ Red; /* 8-bit red component Reserved; /* Reserved (= 0) } RGBQUAD; */ */ BMP - Image Data Notas Cada scan line em um arquivo BMP é sempre um múltiplo de 4. Imagens com1-, 4-, e 8-bits usam uma palheta de cores. Imagens com 24-bits guardam a cor diretamente, na ordem azul, verde e vermelho. O armazenamento da imagem é sempre feito a partir do canto esquerdo inferior. Esquemas de armazenamento de imagens Plano de Cores Azul Verde Verm. 06 Informação é uma componente da cor 06 07 08 09 ... 00 01 02 03 (Data Buffer – Java) 04 05 06 Organização dos pixels de uma imagem por planos de cores Transformações Geométricas na Imagem Amostragem e Reconstrução Transformações R2 R2 y p Exemplos: y x = y p´ = x p' T p x' ' y x f y x´ x' x2 ' y xy y´ x y x ' x cos( y ) ' y x sin( y ) x' 2x 5 y ' y x y Transformações lineares R2 R2 T (a1p1 a2p2 ) a1T (p1 ) a2T (p2 ), ai R e pi R2 Mostre que: T (0) = 0 A) T (0) T (p p) T (p) T (p) 0 B) y T 0 1 0 1 m12 = m22 T 1 0 1 0 x = m11 m21 x´ y´ = m11 m12 x m21 m22 y Transformações lineares: escala Redução (0< sx <1) , Aumento (sy >1) y b a= 0 T (j) sy x y c a´= x´ x j i y´ x' s x x s x s y y ' y 0 y 0 x s y y sx T (i) 0 sx S 0 x 0 sy Transformações lineares: espelhamento y y x´ p' = y´ p= x y x x´ = -1x y´ = y x' x 1 0 x y ' y 0 1 y 0 T ( j) j j 1 i 1 T (i) i 0 1 0 Ey 0 1 x Transformações lineares: rotação y p' x´ = y´ r qr p = x y x x' r cos( q ) y ' r sin( q ) x´ = x.cos q - y.sen q y´ = x.sen q + y.cos q sin( q ) sin cosq cos sinq cos( q ) cos cosq - sin sinq r cos cosq r sin sin q r cos cos q r cos sin q x' cosq y' sin q sin q x cosq y Transformações Lineares: matriz derivada pela geometria y cosq R sin q sin q T (j) cosq sin q cosq cosq T (i) sin q j q i x cosq R sin q sin q cosq Mudança de referêncial y y sin q T (j) cos q p'= cosq T (i) sin q y x´ y´ q j p x = q x i v p x = y ou y q x u v x u cosq R sin q sin q cosq u v = cos q -sen q x cos q y sen q u v = ux vx uy vy Para montarmos a matriz que transforma as coordenadas de um refencial xy para um novo refencial uv basta escrevermos as linhas como sendo os unitários das direções. x y Mudança de coordenadas entre sistemas rotacionados • As coordenas de um ponto rodado de um ângulo em relação a um sistema são iguais as coordenadas do ponto original em relação a um sistema que sofre a rotação inversa. • Como o novo sistema sofre a rotação inversa, a matriz de rotação é a inversa da matriz que levaria da base original para a este novo sistema. • As colunas de uma matriz de uma rotação são as transformadas dos vetores da base e a transposta desta matriz é a sua inversa (rotaçãomatriz ortonormal). • Logo as linhas da matriz que escreve uma mudança entre bases ortonormais rodadas são as coordenadas do vetores da nova base em relação a base original. Transformações lineares: cisalhamento (shear) y y y Cisalhamento em x j x x' x y tan 1 tan x y 1 y y' 0 x tg T ( j) 1 i 1 T (i) i 0 x 1 tg Shx 0 1 Exemplo de aplicação do cisalhamento y plano de projeção R c y a' m' x y m c' a x b Shy a' m' b' x Exemplo de aplicação do cisalhamento 4 5 y y c' y a x 2 4 2 4 1 x a' m' b' j T (j) x' x y' y x x 2 i x 0 x 1 x' x 1 y ' 2 y 2 1 y T (i) Decomposição Singular de Matrizes M USV rotações diagonal 1 tan300 1 0.5773 M 0 1 0 1 0 1 0.5773 0.601112 0.799165 0.752176 0.799165 - 0.601112 0 1 - 0.799165 0.601112 0 1.329476 0.601112 0.799165 0 1 tan300 cos(-530 ) - sin(-530 ) 0.752176 cos(370 ) - sin(370 ) 0 0 0 1.329476 sin(370 ) cos(370 ) 0 1 sin(-53 ) cos(-53 ) Shx (300 ) R(530 )S(0.752,1.329)R(370 ) Exemplo: cisalhamento como composição de rotações e escala Shx (300 ) 1 0.5773 0 1 R(530 ) 0.601112 0.799165 - 0.799165 0.601112 R(370 ) 0.799165 - 0.601112 0.601112 0.799165 S 0 0.752176 0 1.329476 Transformações Geométricas: Translação y p' t p = p' = tx x’ y’ x = + y tx ty ty x x´ y´ = x´ y´ = ? ? 1 0 x ? ? 0 1 Não pode ser escrito na forma y x y + tx ty Ruim para implementação Translação num plano do R3 w y x t w=1 xh yh x ' 1 0 t x x y ' 0 1 t y y 1 0 0 1 1 matriz de translação Concatenação y y y0 y0 x0 y x x0 1 0 x 0 0 1 y 0 0 0 1 y cos sin 0 sin cos 0 0 0 1 1 0 x 0 0 1 y 0 0 0 1 x x ' 1 0 y ' 0 1 1 0 0 x x x0 cos y0 sin 1 0 sin cos 0 0 1 0 x0 x 0 0 1 y0 y 1 0 0 1 1 Concatenação y y x y x T1 y T2 x y P’= T2 R2 E R1 T1 P x R1 y R2 E x x Coordenadas projetivas (ou homogêneas) wx wy w y x p = x = y w wx x y = wy w 1 p w=1 x = xh /w yh w>0 y = yh /w xh Ex.: 3 2 6 3 = 2 1 = 4 2 9 = 6 3 xh = yh w Vantagens das coordenadas homogêneas (pontos no infinito) w h1 w 2 u= y h2 = c2 c1 w=1 c3 3 h3 x u w=1 yh uh xh 2 3 0 = uh h1 h2 h3 h4 2 2 2 2 3 3 3 3 2 1 1/2 1/4 c1 c2 c3 c4 1 2 4 8 1.5 3 6 12 2 ... 3 0 ? ? infinito na direção (2,3) Reta no espaço projetivo w yh xh Reta paralelas no espaço projetivo w plano: ax+by+c1w=0 yh plano: w=1 xh plano: ax+by+c2w=0 Deformação sem paralelismo w w=1 w y w=1 x x yh xh y yh xh Matriz da Homografia v u3 v3 u2 v2 y H? u1 v1 u0 v0 x3 y3 u x0 y0 H APN A N P x2 y2 x1 y1 x [A] : Afim y A? x1 x0 A y1 y0 0 x2 x1 x0 1 A y2 y1 y0 1 0 x3 y3 x3 x0 y3 y0 0 x3 x0 y3 y0 0 x0 y0 1 1 x0 y0 1 x2 y2 1 x0 y0 x2 y2 x1 y1 x Obs: Se fosse um paralelograma a imagem do ponto 2 seria (1,1)T e não (α, )T [P] : Projetiva P? 0 0 P 0 0 1 1 1 [N] : Paralelograma para quadrado unitário v u2 v2 u3 v3 u0 v0 1 0 u 0 T 0 1 v0 0 0 1 N L1T u1 v1 u u3 u0 v3 v0 u1 u 0 v1 v 0 1 1 L1 u1 u0 L v1 v0 0 u3 u0 v3 v0 0 0 0 1 Fundamentals of Texture Mapping and Image Warping “Explained” A revisit of Paul Heckbert’s M.Sc. Thesis Um exemplo 1D f (u ) f c (u ) Textura discreta Textuta contínua u Sinal de entrada discreto u f c (u) wk rk (u uk ) kN Deformação da textura (warping) f c (u ) Textuta contínua x m(u ) gc (x) Textuta contínua deformada u m1 ( x) u f c (u) wk rk (u uk ) kN x gc ( x) f c (m1 ( x)) gc ( x) wk rk (m1 ( x) uk ) kN Limitando a freqüência gc (x) gc (x) x 1 gc ( x) f c (m ( x)) x gc ' ( x) gc ( x) h( x) Filtro de re-amostragem gc ' ( x) gc ( x) h( x) gc ' ( x) f c (m1 (t ))h( x t )dt R gc ' ( x) h( x t ) wk rk (m1 ( x) uk )dt R kN gc ' ( x) f (uk )k ( x) kN t m(u ) m(u ) dt du u k ( x) h( x t )rk (m1 (t ) uk )dt R m k ( x) h( x m(u ))rk (u uk ) du u R Reconstrução, warping, filtragem e amostragem Textura em imagem v v u u f c (u) f (uij )rk (u uij ) i, j Textura em imagem y v x m(u) u m1 (x) u f c (u) f (uij )rk (u uij ) i, j x gc (x) f c (m1 (x)) Filtro de re-amostragem no espaço de destino (espaço da imagem) gc ' (x) gc (x) h(x) gc ' (x) f c (m1 (t))h(x t)dAt A gc ' (x) h(x t) f (uij )rij (m1 (x) uij )dAt A i, j gc ' (x) f (uij )ij (x) i, j destination space integral ij (x) h(x t)rij (m1 (t) uij )dAt A Filtro de re-amostragem no espaço de origem (espaço da textura) gc ' (x) f (uij )ij (x) i, j ij (x) h(x t)rij (m1 (t) uij )dAt A t m(u) x u m(u) dt J du du det y u u u m 1 (t ) x v ( x y y x ) y u v u v v m ij (x) h(x m(u))rij (u uij ) du u R ij (x) h(x m(u))rij (u uij ) J du R Filtro de re-amostragem no espaço de origem (espaço da textura) ij (x) h(x m(u))rij (u uij ) J du R 1 1 1 1 1 x m(u) l(u) c Ju c u m (x) l (x) c J x c x1 Ju1 c x 2 Ju2 c x1 x2 J (u1 u2 ) x m(u ij ) m(m 1 (x) u ij ) x m(u) J (m 1 (x) u) ij (x) J h(J (m1 (x) u))rij (u uij )du R t u uij dt du ij (x) J h(J (m1 (x) uij t))rij (t)dt R u uij t Filtro de re-amostragem no espaço de origem (espaço da textura) ij (x) J h(J (m1 (x) uij t))rij (t)dt R h' (u) J h(J u) ij (x) h' ((m1 (x) uij ) t)rij (t)dt R ij (x) (h'rij )(m1 (x) uij ) texture space integral Mapeamentos lineares afins x m(u) l(u) c Ju c x a b y d e 1 0 0 c u f v 1 1 x a b u c y d e v f x u J y u x v a b y d e v u m1 (x) l 1 (x) c1 J 1x c1 u e d 1 v ae bd b a 1 0 0 h' (u) J h(J u) bf ce u cd af v ae bd 1 h' (u, v) (ae db)h(au bv, du ev) Elliptical Gaussian Resampling Gaussiana GV (x) xT V 1x x 1 2 π|V |1/2 1 2 y 0 G( x, y ) e 1 xT V 1x 2 0 x 2 2 x y 2 1 2 y 1 2 2 e x2 y 2 2 2 x2 G ( x) 2 0 V 2 0 1 2 e 2 2 V 1 2 0 0 Gaussiana G( x, y ) 1 2 2 e x2 y 2 2 2 x2 G ( x) 1 2 e 2 2 y2 G( y) 1 2 2 e 2 G( x, y) G( x)G( y) 1 2 2 e x2 2 2 e y2 2 2 1 2 2 e x2 y 2 2 2 Circulos e Elipses x y R 2 x 2 2 x y R 2 y a2 c2 u v ab cd x a b u y c d v a c a b u 2 u v R b d c d v ab cd u 2 R b 2 d 2 v A B u 2 R 2 u v B 2 C v Au2 Buv Cv 2 F Warping de domínios de Gaussianas 1 G (u, v) e 2 u 2 v 2 2 GV (x) 1 2 π|V |1/2 e 1 xT V 1x 2 A B / 2 V B / 2 C xT Vx Ax2 Bxy Cy 2 cont. Filtro Gaussiano de re-amostragem no espaço de origem (espaço da textura) Exemplo de reconstrução com Gaussiana Implementação do Filtro Gaussiano H Rk I k (x) gJ g V ( x) 1 2 π|V|1/2 1 T J e I (mk (x) uk ) 1 T 1 x V x 2 V J 1J T I Magnificação e mimificação Regiões que mapeiam num quadrado ou círculo Nosso problema Screen space Texture space Como tratar o caso geral x m(u) c Ju ... FIM Adding a lens “circle of confusion” • A lens focuses light onto the film – There is a specific distance at which objects are “in focus” • other points project to a “circle of confusion” in the image Lenses F focal point optical center (Center Of Projection) • A lens focuses parallel rays onto a single focal point – focal point at a distance f beyond the plane of the lens Thin lenses • Thin lens equation: – – – – Any object point satisfying this equation is in focus What is the shape of the focus region? How can we change the focus region? Thin lens applet: http://www.phy.ntnu.edu.tw/java/Lens/lens_e.html (by Fu-Kwun Hwang ) Depth of field f / 5.6 f / 32 • Changing the aperture size affects depth of field – A smaller aperture increases the range in Flower images from Wikipedia http://en.wikipedia.org/wiki/Depth_of_field which the object is approximately in focus Lentes reais Câmera obscura e Camera “pin-hole” Sensor Fujifilm O que é registrado nos sensores (CCD, CMOS...) yim sx sy 3 2 1 0 0 1 2 3 4 5 xim