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.
xl
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  2ft 
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
2kt
2kt
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 eit
d it
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  cost )
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
)
cost  12 (eit  eit )
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  eiq )  2i (eiq  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

 2kt 
 2kt  
f (t )  a0  2  ak cos
  bn sin
 
 T 
 T 
k 1 

2kt
  i 2kt
i
 b
T
f (t )  a0    ak  e
 e T   k

k 1 

 i

2kt
i
 i 2Tkt

T 
e
e




1

i

bk  i 2Tkt 
bk  i 2Tkt 

f (t )  a0     ak  e
  ak  e

i 
i 

k 1  


2kt
2kt
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 , Fk  an  ibn
Fk  Fk
f (t ) 
i (
1 T
Fk   f (t )e
T 0

F e
k  
2kt
)
T
i
2kt
T
k
dt k  1,2,3,...
Escrevendo em complexos
2kt
2kt
f (t )  a0  2 (ak cos
 bk sin
)   Fk e
T
T
k 1
k  


 2 kt 
i

T


Fk  ak  ibk
1 T
2kt
1 T
2kt
ak   f (t ) cos(
)dt , bk   f (t ) sin(
)dt
0
0
T
T
T
T
e
i (
2kt
)
T
2kt
2kt
 cos(
)  i sin(
)
T
T
1
Fk   f (t )e
T 0
T
k  0,1,2,3,...
i (
2kt
)
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  rt
T  N t
 fo , f1, f 2 ,, f r ,, f N 2 , f N 1,
t
f (t ) cos(
2kt
)
T
0
t
1 2 3 4 5
tr  rt
N
t
T  N t
T
1
ak 
T

T
0
2kt
f (t ) cos(
)dt
T
1 N 1
2 kr
ak   f r cos(
)
N r 0
N
1 N 1
 2krt 

f k cos
t

Nt r 0
 Nt 
...
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 (
2ks
)
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
2kr
)
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
2ks
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(
2kt
)
T
0
t
1 2 3 4 5
tr  rt
N
t
T  N t
T
1
ak 
T

T
0
2kt
f (t ) cos(
)dt
T
1 N 1
2 kr
ak   f r cos(
)
N r 0
N
1 N 1
 2krt 

f k cos
t

Nt r 0
 Nt 
...
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  rt
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 (
2ks
)
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
2kr
)
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 2wx


f ( x)   F ( w)e

i 2wx
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 2wx

a

e i 2wx
 i 2w

b/2
i 2wx

a
e
dx
dx
b / 2


a
iwb
iwb

e

e
b / 2
 i 2w
a
a eiwb  e iwb

sin(bw)

w
w
2i
sin(bw)
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 2wx dx


  2

x2

 1
 2 
 
e 2 cos(2wx)  i sin(2wx)dx


  2

x2



1
 2
e
x2

2 2
cos( 2wx )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)  lim1 / 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 2wx dx  e0  1
(x)

x
|| F(w) ||
1
w
Transformada do cosseno
1.5
cos(w t )

F ( w) 
1
i 2wx


cos(
w
x
e
dx


0.5
0
x
-0.5
-1

  cos(w x)cos(2wx)  i sin(2wx)dx

-1.5
w


 0 se w  2
  cos(w x) cos(2wx)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
w1 h 1
1
i 2 ( xr / w ys / h )
F (r , s) 
f ( x, y)e

wh x0 y 0
w1 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
w1 h 1
1
i 2 ( xr / w ys / h )
F (r , s) 
f ( x, y)e

wh x0 y 0
 i 2 ( xr / w)
1 w1  1 h1
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




ys
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  00
 e h 

 


i 2 10

1   e h 
H

 

h 


i 2 ( h 1)0
  h 

 e



i 2

h
01


e





i 2 11
 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 
w1
i 2

w
xr

 T ( x, s )


W ( r , x)
1 
e
W (r , x) 

w
i 2

w




rx
F  WT  WfH
   i 2 00
  e h 
 


i 2 10

1   e h 
W




w 

 i 2 ( w1)0
 e  h 




i 2

h
01


 e



i 2 11
 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 pr 
k 0
k
0001
k
00001
000000
000001
11
Resultado da Teoria da Informação
 1 
lopt rk   log2 
 pr  

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çãomatriz 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  L1T
 u1 
 
 v1 
u
 u3  u0 


 v3  v0 
 u1  u 0 


 v1  v 0 
1
 
1
L1
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 )
kN
Deformação da textura (warping)
f c (u )
Textuta contínua
x  m(u )
gc (x)
Textuta contínua deformada
u  m1 ( x)
u
f c (u)   wk rk (u  uk )
kN
x
gc ( x)  f c (m1 ( x))
gc ( x)   wk rk (m1 ( x)  uk )
kN
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 (m1 (t ))h( x  t )dt
R
gc ' ( x)   h( x  t )  wk rk (m1 ( x)  uk )dt
R
kN
gc ' ( x)   f (uk )k ( x)
kN
t  m(u )
m(u )
dt 
du
u
k ( x)   h( x  t )rk (m1 (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  m1 (x)
u
f c (u)   f (uij )rk (u  uij )
i, j
x
gc (x)  f c (m1 (x))
Filtro de re-amostragem no espaço de destino
(espaço da imagem)
gc ' (x)  gc (x)  h(x)
gc ' (x)   f c (m1 (t))h(x  t)dAt
A
gc ' (x)   h(x  t) f (uij )rij (m1 (x)  uij )dAt
A
i, j
gc ' (x)   f (uij )ij (x)
i, j
destination space integral
ij (x)   h(x  t)rij (m1 (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 (m1 (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  (m1 (x)  u))rij (u  uij )du
R
t  u  uij
dt  du
ij (x)   J h(J  (m1 (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  (m1 (x)  uij  t))rij (t)dt
R
h' (u)  J h(J  u)
ij (x)   h' ((m1 (x)  uij )  t)rij (t)dt
R
ij (x)  (h'rij )(m1 (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  m1 (x)  l 1 (x)  c1  J 1x  c1
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
Download

A x - PUC-Rio