Escolar Documentos
Profissional Documentos
Cultura Documentos
de
Sinais
Pgina 2
Pgina 3
ndice
1. Processamento Digital de Sinais ...................................................................... 6
1.1 Principais Tipos de Sinais ........................................................................... 7
1.2 Sistemas Discretos no Tempo..................................................................... 9
1.3 Sistemas Lineares e Invariantes no Tempo .............................................. 10
1.4 Operaes entre sequncias..................................................................... 14
1.5 Sistemas LTI como Filtros Seletores de Frequncia ................................. 16
1.6 Representao de Sequncias pela Transformada de Fourier ................. 19
1.6.1 Propriedades da Transformada de Fourier ......................................... 23
1.7 Cdigos do MatLab (Sinais e Operaes) ................................................. 25
1.8 Exerccios .................................................................................................. 34
1.8 Bibliografia Complementar ........................................................................ 37
2. A Transformada Z ........................................................................................... 38
2.1 Propriedades da Transformada Z.............................................................. 40
2.2 Pares de Transformadas Z ........................................................................ 43
2.3 Exemplos de Clculo da Transformada Z ................................................. 43
2.4 Propriedades da Regio de Convergncia ................................................ 51
2.5 A Transformada Z Inversa ......................................................................... 52
2.6 Exerccios .................................................................................................. 61
2.7 Bibliografia Complementar ........................................................................ 63
3. Teorema da Amostragem ............................................................................... 64
3.1 Teorema de Shannon................................................................................ 69
3.2 Re-Obteno do Sinal a partir de suas amostras ...................................... 74
4. Filtros Digitais ................................................................................................. 77
4.1 Filtros Digitais ............................................................................................ 79
4.2 Filtros FIR .................................................................................................. 83
4.3 Filtros IIR ................................................................................................. 106
4.4 Exerccios ................................................................................................ 112
4.5 Bibliografia Complementar ...................................................................... 113
5. Tcnicas de projeto de filtros ........................................................................ 114
5.1 Projeto de Filtros FIR .............................................................................. 117
5.1.1 Projeto usando janelas ..................................................................... 118
5.1.2 Tcnicas de Projeto por Amostragem em Frequncia ...................... 144
5.1.3 Projeto Equirriple timo .................................................................... 146
5.2 Projeto de Filtros IIR................................................................................ 149
5.2.1 Escala Relativa ................................................................................. 150
5.2.2 Caractersticas de Prottipos Analgicos ......................................... 153
5.3 Transformaes em Frequncia.............................................................. 162
5.4 Comparao entre Filtros FIR e IIR......................................................... 164
5.5 Exerccios ................................................................................................ 166
5.6 Bibliografia Complementar ...................................................................... 167
6. Transformada Discreta de Fourier ................................................................ 168
6.1 A Srie Discreta de Fourier ..................................................................... 169
6.2 A Transformada Discreta de Fourier ....................................................... 174
6.3 Propriedades da Transformada Discreta de Fourier ............................... 176
Pgina 4
Pgina 5
Pgina 6
computadores
microprocessadores
juntamente
com
diversos
x = {x[n]},
Pgina 7
- <n <
- <n <
0, n 0
1, n = 0
[ n] =
Pgina 8
x[ n] =
x[k ] [n k ]
k =
1, n 0
u[ n] =
0, n < 0
O degrau relaciona-se com o impulso como:
n
[k ]
u[n] =
k =
u[n] = [ n k ]
k =0
Pgina 9
- <n <
M2
1
2) Mdia mvel:
x[n k ]
M 1 + M 2 + 1 k = M1
Pgina 10
Ex: Acumulador:
y[ n ] =
x[ k ]
k =
- <n <
Pgina 11
x[ n] =
x[k ] [n k ]
k =
ento
y[ n] = T { x[ k ] [ n k ]}
k =
y[ n] =
k =
k =
y[ n] =
x[k ]h[n k ]
k =
(Eq. 1.1)
(Eq. 1.2)
Pgina 12
4) Conexo em Paralelo
Pgina 13
5) Causalidade
Como definido anteriormente, um sistema dito causal se sua resposta no
depende de eventos futuros. Ou seja, para calcular a sada de y[n0], precisamos
apenas de x[n], n n0. Isso implica na condio:
h[n] = 0, n < 0
Assim, para testar a causalidade basta testar se h[n] = 0 para n<0.
6) Estabilidade
A estabilidade garantida se:
S=
| h[n] | <
n =
a
k =0
y[ n k ] = bk x[ n k ]
k =0
(Eq. 1.3)
Pgina 14
Pgina 15
c) Mudana de escala:
Cada amostra de uma sequncia multiplicada por um escalar :
.{x[n]} = {.x(n)}
d) Deslocamento:
Cada amostra x(n) deslocada k posies:
y[n] = {x(n k)}
Seja m = n k, ento n = m + k e a operao pode ser vista como:
y[m + k] = {x(m)}
e) Inverso:
A sequncia posta de trs para frente. Seja x[n] uma sequncia de
comprimento k. Logo, y[n] ser:
y[n] = {x(k n)}
f) Soma de amostras:
Soma as amostras de uma sequncia dentro de um intervalo:
g) Produto de amostras:
i) Potncia:
A potncia mdia de uma sequncia peridica pode ser calculada como:
1
||
Pgina 16
o ar
Pgina 17
Pgina 18
Ce jn0
H ( ) =
0
1 < < 2
seno
Y ( ) = X ( ) H ( ) = CX ( )e jn0
Aplicando as propriedades da transformada de Fourier, obtemos a sada no
domnio do tempo:
Y[n] = C.x[n n0]
Consequentemente, a sada do filtro simplesmente uma verso escalonada e
atrasada do sinal de entrada. Tanto um atraso simples quanto uma diferena em
escala so considerados tolerveis e no distores do sinal. Portanto, filtros
ideais tm uma caracterstica de fase linear na banda de passagem que :
() = -n0
A derivada da fase em relao frequncia medida em unidades de atraso.
Assim, podemos definir o atraso do sinal como uma funo da frequncia como:
g ( ) =
d( )
d
Pgina 19
submetidos medida que ele passa da entrada sada do sistema. Note que,
quando () linear, g() = n0 = constante. Nesse caso, todas as componentes
de frequncia do sinal de entrada sofrem o mesmo atraso de tempo.
Como concluso, todos os filtros ideais tm caractersticas de magnitude
constante e fase linear dentro da banda de passagem. Em todos os casos, tais
filtros no so fisicamente realizveis, mas servem como idealizaes
matemticas para filtros prticos.
Assim como sinais do contnuo, os sinais discretos no tempo tambm podem ser
representados de formas diferentes. Uma das formas mais utilizadas atravs
da transformao do sinal para o domnio da frequncia atravs da
Transformada de Fourier. Muitas sequncias podem ser representadas por uma
integral de Fourier da forma:
1
x[n] =
2
j
jn
X
(
e
)
e
d
(Eq. 1.4)
X (e ) =
jn
x
[
n
]
e
n =
(Eq. 1.5)
Pgina 20
ou na forma polar:
X(ej) = |X(ej)| ejX(e^j)
As quantidades |X(ej)| e X(ej) so chamadas de magnitude e fase da
Transformada de Fourier (tambm chamada de espectro de Fourier ou,
simplesmente, espectro).
H casos onde a Transformada de Fourier para uma dada sequncia no
converge. Esses casos podem ser definidos atravs da Transformada Z como
veremos posteriormente.
Podemos verificar facilmente que as Eqs. 1.4 e 1.5 so inversas realmente.
Especificamente, considere:
1
2
^
jm jn
x[m]e
e d = x[n]
m
=
1
x[n] = x[m]
m =
2
^
j ( n m )
1
2
j ( n m )
sin( (n m)) 1, m = n
d =
=
( n m)
0, m n
= [n m]
Pgina 21
Assim:
x[n] =
x[m] [n m] = x[n]
m =
Exemplo 1:
Seja x[n] = anu[n].
A TF dada por:
x[n]e
X (e ) =
jw
jwn
= a e
n =
jwn
= ( ae jw ) n =
n =0
n=0
1
1 ae jw
OBS:
n=0
1
1
, para || < 1
Exemplo 2:
Vamos calcular a resposta ao impulso de um filtro passa-baixa ideal cuja
resposta em frequncia :
1, | w |< wc
H LPF (e ) =
0, wc <| w |<
jw
1
hLPF [n] =
2
jw
LPF
(e ) e
jwn
1
dw =
2
wc
wc
jwn
dw
hLPF [n] =
Pgina 22
sin( wc n)
, < n <
n
Exemplo 3:
Determine a resposta em frequncia H(ejw) de um sistema cuja resposta ao
impulso h(n) = (0,9)nu[n]. Plote a magnitude e a fase.
E a fase:
1
1 0,9
1
1
" " = #
=
1 0,9$%&' + 0,9&'
1,81 1,8$%&'
= arctan
Plotagem no MatLab:
0,9&'
1 0,9$%&'
w = [0:1:500]*pi/500;
H = exp(j*w)./(exp(j*w) - 0.9*ones(1, 501));
magH = abs(H); angH = angle(H);
subplot (2, 1, 1); plot (w/pi, magH); grid;
xlabel('frequency in pi units'); ylabel('|H|');
title('Magnitude response');
subplot (2, 1, 2); plot (w/pi, angH/pi); grid;
xlabel('frequency in pi units'); ylabel('Phase in pi Radians');
title('Phase response');
Pgina 23
Sequncia
a.x[n] + b.y[n]
Transformada de Fourier
a.X(ejw) + b.Y(ejw)
Deslocamento no Tempo
x[n nd]
e-jwndX(ejw)
Deslocamento na Freq
ejwonx[n]
X(ej(w w0))
Conjugao
x*[n]
X*(e-jw)
X(e-jw)
Reverso no Tempo
x[-n]
Diferenciao em Freq
n.x[n]
j dX(ejw)/dw
x[n]*y[n]
X(e-jw).Y(e-jw)
Convoluo
Modulao
x[n].y[n]
1
2
j
j ( w )
X
(
e
)
Y
(
e
) d
Pgina 24
Pgina 25
2.
x[n] = 2.[n + 2] - [n 4],
-5 n 5
>> n = [-5:5];
>> x = 2*impseq(-2, -5,5) - impseq(4, -5, 5);
>> stem (n, x); title ('Exemplo de Sequencia'); xlabel('n'); ylabel('x[n]');
Funo Degrau
function [x, n] = stepseq(n0, n1, n2) % Degrau
n = [n1:n2];
x = [(n-n0) >= 0];
stem (x);
Exemplos
1.
>> stepseq (5, 0, 10);
Pgina 26
2.
x[n] = n[u[n] u[n 10]] + 10e-0.3(n 10)[u[n 10] u[n 20]],
Pgina 27
0 n 20
>> n = 0:20;
>> x1 = n.*(stepseq(0,0,20) - stepseq(10,0,20));
>> x2 = 10*exp(-0.3*(n-10)).*(stepseq(10,0,20) - stepseq(20,0,20));
>> x = x1 + x2;
>> stem(n,x); title('Sequencia de Degraus'); xlabel('n'); ylabel ('x[n]');
Senide
function x = sinseq(n1,n2) % Senide
n = [n1:0.1:n2];
x = 3*cos(0.1*pi*n + pi/3) + 2*sin(0.5*pi*n);
stem (x);
Exemplo:
>> sinseq (0, 10);
Operaes em sequncias
Adio de sinais
y[n] = x1[n] + x2[n]
function [y,n] = sigadd(x1,n1,x2,n2)
n = min(min(n1),min(n2)):max(max(n1),max(n2));
y1 = zeros(1, length(n));
y2 = y1;
y1(find((n>=min(n1))&(n<=max(n1))==1)) = x1;
y2(find((n>=min(n2))&(n<=max(n2))==1)) = x2;
y = y1 + y2;
Multiplicao de sinais
y[n] = x1[n].x2[n]
function [y,n] = sigmult(x1,n1,x2,n2)
n = min(min(n1),min(n2)):max(max(n1),max(n2));
y1 = zeros(1, length(n));
y2 = y1;
y1(find((n>=min(n1))&(n<=max(n1))==1)) = x1;
y2(find((n>=min(n2))&(n<=max(n2))==1)) = x2;
y = y1.*y2;
Deslocamento
y[n] = x[n k]
function [y,n] = sigshift(x, m, n0)
n = m + n0;
y = x;
Inverso
y[n] = x[-n]
Pgina 28
Pgina 29
Pgina 30
Convoluo
Considere as sequncias:
x = [3, 11, 7, 0, -1, 4, 2],
h = [2, 3, 0, -5, 2, 1];
-3 n 3
-1 n 4
x[n]
Podemos usar a funo conv do MatLab diretamente:
h[n]
31
47
6 -51
-5
41
18 -22
-3
Pgina 31
ny =
-4
31
-3
47
-2
6 -51
-5
41
18 -22
-1
-3
5
8
6
2
7
para todo n
y[ n k ] = bk x[ n k ]
k =0
k =0
b = [1]
No MatLab, fazemos:
>> x = impseq(0, -20, 120);
>> n = [-20:120];
>> h = filter(b, a, x);
>> stem(n, h); title('Resposta ao impulso'); xlabel('n'); ylabel('h[n]');
Pgina 32
Pgina 33
c) O sistema estvel?
Como vimos, um sistema estvel se:
S=
| h[n] | <
n =
Pgina 34
1.8 Exerccios
1. Considere um sistema linear arbitrrio com entrada x[n] e sada y[n]. Mostre
que se x[n] = 0 para todo n, ento y[n] deve ser zero para todo n tambm.
2. Usando a definio de linearidade, mostre que o sistema de atraso ideal e a
mdia mvel so ambos lineares.
3. Para cada sistema abaixo, determine se ele (1) estvel, (2) causal, (3)
linear, (4) invariante no tempo e (5) sem memria:
a. T(x[n]) = g[n]x[n],
a e b nmeros reais
f. T(x[n]) = x[-n])
g. T(x[n]) = x[n] + 3.u[n + 1]
4. O sistema T abaixo invariante no tempo. Quando as entradas dele so
x1[n], x2[n] e x3[n], as sadas so y1[n], y2[n] e y3[n], respectivamente.
Pgina 35
b)
6. Considere o sistema com entrada x[n] e sada y[n] que satisfaz a equao de
diferenas:
y[n] = n.y[n 1] + x[n]
O sistema causal tal que, se x[n] = 0, para n < 0, ento y[n] = 0, para n < 0.
a) Se x[n] = [n], determine y[n] para todo n.
b) O sistema linear?
c) O sistema invariante no tempo?
Pgina 36
-5 n 5
-5 n 5
8. Seja x[n] = {1, -2, 4, 6, -5, 8, 10}, gere e plote no MatLab as seguintes
sequncias:
a) x[n] = 3.x[n + 2] + x[n 4] 2.x[n]
b) x[n] = 5.x[5 + n] + 4.x[n + 4] + 3.x[n]
9. Usando as seguintes sequncias:
x1[n] = u[n + 10] u[n 20]
Pgina 37
Pgina 38
2. A Transformada Z
A Transformada Z (TZ) uma ferramenta matemtica poderosa para anlise de
sinais e sistemas. A transformada Z constitui a forma discreta da transformada
de Laplace. Seja a Transformada de Fourier (TF) de uma sequncia dada por:
X (e ) =
jw
jwn
x
[
n
]
e
n =
X (z) =
x[n]z
n =
X ( z ) = x[n] z n
n =0
| x[n]z
|<
n =0
Pgina 39
X ( z) =
P( z )
Q( z )
Pgina 40
X (z) =
x[n]z
n =
X ( z) =
n =
ax [n]z
ax [n]z
+ bx2 [ n]z n =
n =
n
n =
bx [n]z
n =
= a x1[ n] z
+ b x2 [ n ] z n
n =
n =
= aX1(z) + bX2(z)
b) Deslocamento no tempo: x[n + n0] zn0.X(z), ROC = ROCx (cuidado deve ser
tomado observando o que acontece para z = 0 ou z = ).
Comentrios:
Suponha que y[n] = x[n n0]. Logo:
Y ( z) =
x[n n ]z
n =
Fazendo m = n n0:
Y (z) =
x[m]z
m =
Y ( z ) = z n0 . X ( z )
( m +n 0 )
x[m]z
m =
.z
n0
=z
n0
. x[ m]z m
m =
Pgina 41
X ( z) =
x[n]z
n =
x[ n] z n
n =
y[ n ] =
x [k ]x [n k ]
1
k =
Tal que:
Y ( z) =
y[n]z
n =
= x1 [k ]x 2 [n k ] z n
n = k =
Y ( z) =
x [k ] x [n k ]z
1
k =
n =
Pgina 42
m k
Y ( z ) = x1[k ] x 2 [m]z z
k =
m =
Assim, para valores de z dentro das regies de convergncia para X1(z) e X2(z),
podemos escrever:
Y ( z) = X 1 ( z) X 2 ( z)
e) Diferenciao no Domnio Z: n.x[n] -z.dX(z)/dz, ROC = ROCx (cuidado
deve ser tomado observando o que acontece para z = 0 ou z = ).
Comentrios:
Essa propriedade pode ser facilmente provada diferenciando a definio da TZ:
X (z) =
x[n]z
n =
dX ( z )
= ( n) x[n]z n 1
d ( z ) n =
. (-z)
dX ( z )
z
= z ( n) x[ n] z n 1
d (z)
n =
dX ( z )
z
= nx[ n] z n = Z {nx[n]}
d ( z ) n =
X ( z) =
x[n]z
n =
X (z) =
x[m]z
m =
x[m]( z
1 m
Pgina 43
= X ( z 1 )
m =
Pgina 44
x[n]z
X (z) =
n =
a
n =
u[ n] z
= a z
n
n =0
= ( az 1 ) n
n =0
ROC:
|az-1| < 1 |z| > |a|
X ( z ) = ( az 1 ) n =
n=0
1
z
=
, | z |>| a |
1 az 1 z a
Para a = 1:
Z
x[n] = u[n]
X ( z) =
1
, | z |> 1
1
1 z
Pgina 45
X (z) =
x[n]z
n=
a u[n 1]z
n
n =
X ( z) = a z
n
n =
= a nu[ n 1] z n
n=
= a z = 1 ( a 1 z ) n
n =1
n =0
ROC:
|a-1z|<1 |z|<|a|
X ( z ) = 1 ( a 1 z ) n = 1
n=0
1
z
=
, | z |<| a |
1
z
a
1 a z
Pgina 46
X ( z) =
x[n]z
n =
n
1 n
n
1
= u[n ] + u[ n] z
3
n =
2
1
1
n
X ( z ) = u[n]z + u[n]z n
3
n = 2
n =
n
1 n 1 n
X ( z ) = z + z
3
n =0 2
n =0
n
1 1 1 1
X ( z ) = z + z
n=0 3
n=0 2
(i)
(ii)
X ( z) =
1
1
+
1
1
1 z 1 1 + z 1
2
3
Para X(z), os plos so dados por z=1/2 e z=-1/3 e os zeros so z=0 e z=1/12.
Uma das propriedades da ROC que podemos observar aqui que os plos no
fazem parte dela.
X ( z) =
x[n]z
n =
n
1 n
n
1
= u[ n] u[ n 1] z
2
n =
3
1
1
n
X ( z ) = u[n]z u[ n 1]z n
3
n =
n = 2
1 n 1 1 n
X ( z) = z z
3
n=0
n = 2
1 n 1 n
X ( z ) = z z
3
n =0
n =1 2
1
1
X ( z ) = z 1 + 1 z
3
n =0
n=0
2
n
(i)
ROC(i) = |(-1/3).z-1| < 1 |z| > 1/3
ROC(ii) = |(1/2)-1.z| < 1 |z| < 1/2
ROC = ROC(i) ROC(ii) = 1/3 < |z| < 1/2
(ii)
Pgina 47
Pgina 48
ROC(i)
ROC(ii)
ROC:
X ( z) =
1
1
1
2z
+1
=
1
1 2 z 1 + 1 z 1 1 2 z
1 + z 1
3
3
Pgina 49
Exemplo 5:
Funo delta [n]: [n] = 0, n 0, e [n] = 1, n = 0
Transformada Z:
X (z) =
x[n]z
= 1.z 0 = 1
n =
X (z) =
x[n]z
n =
[n n ]z
0
= z n0
n =
Nos exemplos 5 e 6, x(n) finita. X(z) um polinmio de base z-1 e todo o plano
Z menos quando z = 0. Nesse ponto, a transformada no definida.
Exemplo 7: Determine a transformada Z da sequncia:
x[n] = (n 2).(0,5)(n-2)cos[(n 2)/3]u[n 2]
Considerando a propriedade do deslocamento no tempo (x[n + n0] zn0.X(z)),
temos:
X(z) = Z{x[n]} = z-2.Z{n(0,5)n.cos(n/3)u[n]}
Considerando agora a diferenciao no domnio Z (n.x[n] -z.dX(z)/dz), temos:
X(z) = Z{x[n]} = z-2.{-z.[d(Z{(0,5)n.cos(n/3).u[n]}/dz}
A transformada Z de (0,5)n.cos(n/3).u[n] , pela tabela da Seo 2.2:
z[(0,5) n cos(
n
3
1 (0,5. cos ) z 1
3
)u[n]] =
1 0,25z 1
z[(0,5) cos( )u[n]] =
3
1 0,5 z 1 + 0,25 z 2
Pgina 50
Assim:
d
1 0,25 z 1
X ( z) = z
dz 1 0,5 z 1 + 0,25 z 2
1
0.0781
Pgina 51
Pgina 52
X (z) =
x[n]z
n =
X ( z) z
C
k 1
dz =
k 1 n
x
[
n
]
z
dz
C n =
(1)
onde C denota o contorno fechado na ROC de X(z), tomado no sentido antihorrio. Como a srie converge nesse contorno, podemos mudar a ordem da
integrao e do somatrio no lado direito, ficando com:
X ( z) z
C
k 1
dz =
x[n] z
n =
k 1 n
dz
Pgina 53
(2)
1, n = k
1
k 1 n
z
dz
=
2j C
0, n k
(3)
onde C qualquer contorno que inclui a origem. Aplicando (3), o lado direito de
(2) reduz-se a 2j.x[k] e assim a frmula inversa alcanada:
x[k ] =
1
k 1
X
(
z
)
z
dz
2j C
(4)
Pgina 54
X ( z) =
1
1
1 z 1
2
|z|>
b z
X ( z) =
k =0
N
z k
k =0
X ( z) =
M N
Br z
r =0
Ak
1
k =1 1 d k z
Pgina 55
Exemplo 8: Suponha:
1 + 2 z 1 + z 2
1 + 2 z 1 + z 2
X ( z) =
=
3 1 1 2
1
1 z + z
(1 z 1 )(1 z 1 )
2
2
2
Vamos considerar que:
X ( z ) = B0 +
A1
A2
+
=
1 1 1 z 1
1 z
2
B0 (1
1 1
1
z )(1 z 1 ) + A1 (1 z 1 ) + A2 (1 z 1 )
2
2
1
(1 z 1 )(1 z 1 )
2
1
1
1
B0 (1 z 1 z 1 + z 2 ) + A1 (1 z 1 ) + A2 (1 z 1 )
2
2
2
=
1
(1 z 1 )(1 z 1 )
2
Logo:
3
1
1
( B0 + A1 + A2 ) + z 1 ( B0 A1 A2 ) + z 2 ( B0 )
2
2
2
X ( z) =
=
1 1
1
(1 z )(1 z )
2
1 + 2 z 1 + z 2
=
1
(1 z 1 )(1 z 1 )
2
Assim, temos:
Pgina 56
B0 + A1 + A2 = 1
3
1
B0 A1 A2 = 2
2
2
1
B0 = 1 B0 = 2
2
Com isso, ficamos com:
2 + A1 + A2 = 1
A1 + A2 = 1
3 A 1 A = 2 A + 1 A = 5
1
2
1 2 2
2
Resolvendo, temos:
A1 = -9 e A2 = 8
Logo:
X ( z) = 2 +
9
8
+
1 1 1 z 1
1 z
2
1
x[ n] = 2 [ n] 9.( ) n u[ n] + 8.u[ n]
2
X ( z) =
x[n]z
n =
X ( z ) = z 2 (1
Pgina 57
1 1
z )(1 + z 1 )(1 z 1 )
2
X ( z) = z 2
1
1
z 1 + z 1
2
2
X ( z )=
z
3z 2 4 z + 1
Primeiro, vamos re-arranjar X(z) tal que ela se torne uma funo em potncias
de z-1:
z 1
0 +z 1
X ( z )=
=
3 4 z 1 + z 2 3 4 z 1 + z 2
Usando o MatLab, temos1:
>> b = [0 1];
>> a = [3 -4 1];
>> [R, p, C] = residuez(b, a)
R=
0.5000
-0.5000
p=
1.0000
0.3333
1
Para mais informao sobre a funo residuez, digite help residuez no MatLab.
C=
Pgina 58
[]
que corresponde a:
X (z) =
0,5
1
1 z
0,5
1
1 z 1
3
0.3333
a=
1.0000 -1.3333
0.3333
que corresponde a:
1
0 + z 1
z 1
0 +z 1
3
X ( z )=
=
=
4 1 1 2 3 4 z 1 + z 2 3 4 z 1 + z 2
1 z + z
3
3
como antes.
X ( z) =
1
(1 0,9 z 1 ) 2 (1 + 0,9 z 1 ) ,
|z|>0,9
Pgina 59
>> a = poly([-0.9 -0.9 0.9]) % calcula os coeficientes do polinmio que tem essas
razes
a=
1.0000
[]
Isso significa que X(z) pode ser expandido em fraes parciais como:
X ( z) =
0,25
0,5
0,25
+
+
1 0,9 z 1 (1 0,9 z 1 ) 2 1 + 0,9 z 1
0,25
0,5
0,9 z 1
0,25
X ( z) =
+
z
+
1 0,9 z 1 0,9 (1 0,9 z 1 ) 2 1 + 0,9 z 1
5
x[ n] = 0,25.(0,9) n u[ n] + ( n + 1)(0,9) n +1 u[n + 1] + 0,25(0,9) n u[n]
9
Vamos tentar deixar todas as parcelas em funo de u[n]. Para tanto, vamos
trabalhar na segunda parcela:
5
( n + 1)(0,9) n+1 u[n + 1]
9
Observe que: a.u[n + 1] = a.u[n -1] + a.u[n]. Logo:
Pgina 60
5
5
5
(n + 1)(0,9) n+1 u[ n + 1] = ( n + 1)(0,9) n+1
+ ( n + 1)(0,9) n+1 u[n]
9
9
9
n= 1
5
5
(n + 1)(0,9) n+1 u[n + 1] = (n + 1)(0,9) n+1 u[n ]
9
9
5
= (n + 1).0,9.(0,9) n u[n] = 0,5(n + 1)(0,9) n u[n ]
9
1.0000
0.9000
1.6200
1.4580
1.9683
1.7715
2.1258
1.9132
1.7715
2.1258
1.9132
1.0000
0.9000
1.6200
1.4580
1.9683
Pgina 61
2.6 Exerccios
1. Calcule a transformada Z das sequncias:
a. x[n] = -(1/2)nu[-n 1]
b. y[n] = (-1/2)nu[n] + (1/3)nu[-n 1]
c. y[n] =2[n 3] + (-1/4)nu[-n - 1] + (1/2)nu[n]
2. Calcule a transformada Z das seguintes sequncias usando as suas
propriedades e a tabela da Seo 2.2 e verifique seus resultados usando
MatLab.
a. x[n] = 2.[n-2] + 3u[n 3]
b. x[n] = (1/3)nu[n 2] + (0,9)n-3u[n]
3. Seja x[n] uma sequncia com transformada Z dada por X(z). O que se pode
dizer sobre as sequncias que geram as seguintes transformadas:
a. X1(z) = [(z 1)/z]X(z)
b. X2(z) = z.X(z-1)
4. Ache a transformada inversa de:
a. X ( z ) =
1
,
1 1
1+ z
2
b. X ( z ) =
1
,
1 1
1+ z
2
1 1
z
2
c. X ( z ) =
,
3 1 1 2
1+ z + z
4
8
1
Pgina 62
1 z 1 4 z 2 + 4 z 3
X 1 ( z) =
11
13
1
1 z 1 + z 2 z 3
4
8
4
sabendo que a sequncia causal.
6. Suponha que X(z) :
2 + 3 z 1
X1 (z) =
1 z 1 + 0,81z 2
Pgina 63
Pgina 64
3. Teorema da Amostragem
Sinais discretos no tempo podem ser gerados de diferentes formas, mas a mais
comum sendo uma representao de sinais contnuos no tempo. Em parte,
isso devido ao fato que o processamento de sinais contnuos no tempo feito
atravs do processamento discreto no tempo de sequncias obtidas atravs de
amostragem. Um sinal contnuo no tempo pode ser representado por amostras
como na Fig. 3.1.
Fig. 3.1. Exemplo: (esquerda) sinal original e (direita) amostragem desse sinal.
A forma mais comum de obter uma representao discreta no tempo de um sinal
contnuo no tempo atravs de uma amostragem peridica, quando a
sequncia de amostras x[n] obtida de um sinal contnuo no tempo xc(t) de
acordo com a relao:
x[n] = xc(nT),
- < n <
(Eq. 3.1)
Pgina 65
simplicidade
no
projeto
de
circuitos
facilidade
de
Pgina 66
Pgina 67
do
canal,
combatendo
os
efeitos
do
rudo,
interferncias, etc.
11. Aplicaes de tcnicas de criptografia, garantindo a privacidade e
autenticidade da comunicao.
A digitalizao de sinais analgicos vem tornando-se cada vez mais importante,
principalmente, com o desenvolvimento das redes digitais de servios
integrados.
Pgina 68
Pgina 69
Ts (t ) =
(t nTs )
n =
f s (t ) = f (t ). Ts (t ) =
f (t ). (t nTs)
n =
f s (t ) =
f (nTs). (t nTs)
n =
Pgina 70
Fig. 3.4. (topo) Exemplo de um sinal e sua transformada banda limitada em wm.
(centro) Trem de impulsos e sua transformada e (embaixo) o resultado da
amostragem do sinal; sua transformada analisada a seguir.
O espectro do sinal amostrado fs(t) pode ser determinado com o auxlio do
teorema da convoluo na frequncia:
f1(t).f2(t) (1/2)F1(w)*F2(w)
onde * a operao de convoluo. Segue, ento, que:
1
f (t ) T (t )
F ( w) * ws ( w nwS )
2
n =
Se:
fs(t) Fs(w)
Ento, o espectro de fs(t) dado por:
1
w
Fs ( w) =
F ( w) * ws ( w nwS ) = s
2
2
n =
1
Fs ( w) =
Ts
Pgina 71
F ( w) ( w nw
n =
F ( w) (w nw
n =
) , com ws = 2/Ts
e, finalmente,
1
Fs ( w) =
Ts
F (w nw
n =
Este espectro esboado para vrios valores de ws, isto , vrios valores para o
espaamento Ts entre amostras.
A escolha do valor de Ts e, consequentemente, de ws importante para evitar a
sobreposio entre sinais no domnio da frequncia. A fig. 3.5 apresenta trs
casos onde o valor de ws maior, igual ou menor a wm (frequncia limite da
banda do sinal de entrada). Nesses trs casos, pode-se ver que no h
sobreposio quando ws 2wm. Ento, o uso de um filtro passa-baixa ideal
permite recuperar o sinal perfeitamente sem distores (Fig. 3.6). A
sobreposio dos sinais chamada de aliasing e deve ser evitada.
Pgina 72
a)
b)
c)
d)
Fig. 3.5. a) Sinal original banda limitado em wm; resultado no domnio da
frequncias de amostragens com: b) ws > 2wm, c) ws = 2wm, d) ws < 2wm
(sobreposio de sinais aliasing).
Pgina 73
Casos hbridos
Esses problemas podem ser vistos na Fig. 3.7. A Figura 3.8 mostra uma
distoro desse tipo em uma imagem. Esse problema (conhecido como efeito
Moire) surgiu por causa de uma baixa resoluo utilizada na digitalizao da
imagem. Ele se apresenta de forma mais forte em partes da imagem que
tenham um padro repetitivo (como essas linhas circulares).
Pgina 74
Fig. 3.7. Distores que podem ser provocadas por escolha errada na banda de
passagem do fitro passa-baixa para recuperao do sinal de entrada aps a
amostragem.
Pgina 75
Ts wm
f (t ) =
f
(
nT
)
(
t
nT
)
s
s * Sa ( wm t )
n=
f (t ) =
Ts wm
f (nT )[ (t nT ) * Sa (w t )]
s
n =
f (t ) = 2 f m .Ts
f (nT )Sa (w
s
(t nTs ))
n =
f (t ) =
n =
f(
n
) Sa( wmt n )
2 fm
Pgina 76
Pgina 77
4. Filtros Digitais
Um sistema discreto no tempo definido matematicamente como uma
transformao que mapeia uma sequncia de entrada x[n] em uma sequncia
de sada y[n]. Isso pode ser denotado por:
y[n]=T{x[n]}
como representado na Fig. 4.1.
x[ n] =
x[k ] [n k ]
k =
ento
y[ n] = T { x[ k ] [ n k ]}
k =
y[ n] =
k =
k =
Pgina 78
x[k ]h[n k ]
y[ n] =
k =
(Eq. 4.1)
y[n] = x[n]*h[n]
a
k =0
y[ n k ] = bk x[ n k ]
k =0
(Eq. 4.3)
Pgina 79
somadores
elementos
de
retardo
(delay).
Desses,
Pgina 80
Pgina 81
H (z) =
b
1 a1 z 1 a 2 z 2
k =1
k =0
y[ n] a k y[ n k ] = bk x[ n k ]
com funo de sistema correspondente:
M
b z
H ( z) =
k =0
N
1 ak z k
Y ( z)
X ( z)
k =1
k =1
k =0
Pgina 82
y[ n] = ak y[ n k ] + bk x[ n k ]
que pode ser representada em diagrama de blocos como na Fig. 4.5.
v[ n] = bk x[ n k ]
k =0
N
y[ n] = v[ n] + ak y[ n k ]
k =1
Pgina 83
Pgina 84
E, para n = 1:
Pgina 85
y[n] = bk x[n k ]
k =0
H ( z ) = bk z k
k =0
b
h[n] = n
0
0 n M 1
seno
Pgina 86
Causalidade
Linearidade
Invarincia no tempo
Pgina 87
Pgina 88
Pgina 89
que o mesmo que y[n] = (x[n] + x[n 1])/2. Por isso, filtros passa-baixa so
chamados, s vezes, de filtro da mdia.
Um filtro com coeficientes [0,5 -0,5] corresponde a um filtro passa-alta, chamado
de filtro de diferenciao. O seguinte cdigo no MatLab apresenta a
transformada de Fourier para uma sequncia de coeficientes. A Fig 4.11
apresenta os resultados para os coeficientes [0,5 0,5] e [0,5 -0,5].
x = [0.5, -0.5];
f = fft(x,8192);
Freq = -5:10/8192:5-1/8192;
plot(Freq, abs(fftshift(f)));
Fig. 4.11. (esquerda) Sequncia [0,5 0,5] e sua transformada de Fourier (um
FPB) e (direita) a sequncia [0,5 -0,5] e sua transformada (um notch FPA).
Vamos analisar o FPA:
y[n] = (x[n] - x[n 1])/2
Pequenas diferenas entre as amostras resultam em valores pequenos; grandes
diferenas resultam em valores grandes. Assim, a resposta em frequncia desse
filtro deve atenuar mudanas suaves no sinal (como as relacionadas com as
Pgina 90
Pgina 91
para
implementar
operaes
seletivas
de
frequncia.
Assim,
Pgina 92
|| <
1
hid [n] =
2
jn
1
d =
2
j ( n )
Pgina 93
1
1
1
1
e ( j jn ) =
e j ( n ) =
2 j (n )
2 j ( n )
1
1
[e j ( n ) e j ( n ) ]
2 j (n )
Sabendo que
sen = (e j e j ) / 2 , temos:
1
1
1
[e j ( n ) e j ( n ) ] =
sen[ (n )]
2 j (n )
(n )
hid [n] =
sen[ ( n )]
(n ) ,
-< n <
(Eq. 1)
Assim
y[n] =
k =
x[k ]
sen[ ( n )]
(n )
sen[ (n k )]
(n k )
y[n] = x[ n] * [n nd ]
Ou seja, a mesma sequncia de entrada apenas deslocada de nd amostras.
Pgina 94
- < <
Por exemplo, considere uma resposta em frequncia com fase linear da forma
H(ej) = |H(ej)|e-j,
|| <
e j ,
| |< c
H LP (e ) =
c <| |
0,
j
hLP [n] =
sen[c (n )]
(n )
hLP [2nd n] =
sen[c (2nd n nd )]
=
( 2nd n nd )
hLP [ 2nd n] =
Nesse caso, temos um sistema de fase zero (zero phase system). Se = -nd:
^
H LP (e ) = H LP (e )e
jnd
=| H LP (e ) | h LP [n] = h LP [n]
Pgina 95
(Eq. 2)
0<<
H (e ) =
h[n]e
n =
j n
n =
n =
H (e ) =
h[n]e
j n
n =
n =
n =
Pgina 96
h[n]cos n j h[n]senn
A(e ) cos( ) =
h[n] cos n
n =
n =
Com isso:
sen( )
=
tg ( ) =
cos( )
h[n]senn
n =
h[n] cos n
n =
Fazendo uma multiplicao cruzada dos dois lados da igualdade acima, temos:
n =
n =
n =
n =
n =
n =
h[n]sen( + n) = 0
n =
Pgina 97
h[n]sen[ (n ) + ] = 0
(Eq. 3)
n =
ou
(Eq. 4)
h[n]sen[ (n )] = 0
(Eq. 5)
n =
h[n] cos[ (n )] = 0
(Eq. 6)
n =
n =
n =
(Eq. 7)
Pgina 98
i)
= 0 ou
2 = M inteiro
h[2 - n] = h[n]
ii)
= /2 ou 3/2
2 = M inteiro
h[2 - n] = -h[n]
Sistemas Causais de Fase Linear Generalizada
Se o sistema for causal, a Eq.3 torna-se:
h[n]sen[ (n ) + ] = 0
n =0
h[2 n] =
sen (2 n ) sen ( n)
sen ( n )
=
=
= h[n]
( 2 n )
( n)
(n )
Pgina 99
0nM
com M um inteiro par (observe que isso gera um nmero mpar de amostras). O
atraso M/2 um inteiro. A resposta em frequncia :
M
H (e ) = h[ n]e jn
j
n=0
H (e ) = e
jM / 2
M /2
a[k ] cos(k )
k =0
k = 1, 2, 3, ..., M/2
Pgina 100
0nM
mas com M um inteiro mpar. Nesse caso, H(ejw) pode ser expresso como:
j
H (e ) = e
jM / 2
( M +1) / 2
k =1
1
b[k ] cos[ (k ]}
2
onde
b[k] = 2.h[(M + 1)/2 - k],
k = 1, 2, ..., (M + 1)/2
jw
jw
-jwM/2
0nM
H (e ) = je
jM / 2
M /2
c[k ]sin(k )
k =0
onde
c[k] = 2h[(M/2) - k],
k = 1, 2, ..., M/2
0nM
H (e ) = je
jM / 2
( M +1) / 2
k =1
1
d [k ] sin[ (k ]}
2
Pgina 101
onde
d[k] = 2h[(M+1)/2 - k],
e H(ejw) tem a forma:
H(ejw) = AI(ejw)e-jwM/2 + j/2
Exemplos:
a) Tipo I, resposta simtrica, M par
h[n] = 1, 0 n 4, e 0, caso contrrio
h[n] = h[M n]
A resposta em frequncia :
4
H (e ) = e
jw
jwn
n=0
1 e jw 5
jw 2 sin(5w / 2)
=
=
e
sin(w / 2)
1 e jw
Magnitude e fase:
k = 1, 2, ..., (M + 1)/2
h[n] = h[M n]
A resposta em frequncia :
H (e jw ) = e jw ( 5 / 2)
sin(3w)
sin( w / 2)
Magnitude e fase:
Pgina 102
Pgina 103
Pgina 104
Pgina 105
Pgina 106
0,6
0,44
0,176
....
....
Pgina 107
0,6
0,8
0,8
....
....
Esse um filtro IIR. A sada ser sempre 0,8 mesmo a entrada permanecendo
0. Nesse prximo exemplo, a sada cresce mesmo com entrada zero.
Entrada Sada
0
0,6
0,86
0,946
....
....
k =1
k =0
y[ n] a k y[n k ] = bk x[ n k ]
com a seguinte funo de sistema:
k
b
z
k
H ( z) =
k =0
N
1 a k z k
k =1
Pgina 108
1 + 2 z 1 + z 2
H ( z) =
1 0.75 z 1 + 0.125 z 2
A forma direta I e II podem ser desenhadas como:
Forma direta I:
e
Forma direta II:
Pgina 109
Pgina 110
1 + 2 z 1 + z 2
1 + z 1
1 + z 1
H (z) =
=
.
1 0.75 z 1 + 0.125 z 2 1 0.5 z 1 1 0.25 z 1
Como os plos e zeros so reais, uma estrutura em cascata tem sees com
coeficientes reais. Duas estruturas em cascata equivalentes podem ser criadas
para essa funo:
i)
ii)
1 + 2 z 1 + z 2
7 + 8 z 1
H ( z) =
=8+
1 0.75 z 1 + 0.125z 2
1 0.75 z 1 + 0.125 z 2
Pgina 111
A forma paralela para esse sistema com uma seo de segunda ordem :
Como os plos so reais, podemos obter ainda uma forma paralela alternativa
expandindo H(z) como:
7 + 8 z 1
18
25
H (z) = 8 +
=
8
+
1 0.75z 1 + 0.125z 2
1 0.5 z 1 1 0.25z 1
que gera o diagrama abaixo apenas com sees de primeira ordem:
Pgina 112
4.4 Exerccios
1. Um filtro IIR definido por:
10 + 2.5 z 2 0.5 z 3
H ( z) =
1 0.25 z 2
Desenhe sua estrutura na Forma Direta I ou na Forma Direta II.
2. Um filtro causal e invariante no tempo definido por:
H ( z ) = 1 + z 1 + 0.25z 2 + 0.25z 3
Desenhe sua estrutura na Forma Direta I ou na Forma Direta II. Esse filtro FIR
ou IIR?
3. Um filtro IIR definido por:
1 + 2 z 1 + z 2
H ( z) =
3
1
1 z 1 + z 2
4
8
Desenhe sua estrutura na Forma Direta I ou na Forma Direta II.
4. Modifique os cdigos das pginas 86 e 87 para implementar exemplos de
filtros FIR dos tipos III e IV.
Pgina 113
Pgina 114
para
implementar
operaes
seletivas
de
frequncia.
Assim,
Pgina 115
| H (e j ) |
0
escala dB = 20 log 10
| H (e j ) | max
Essa a forma mais comum na prtica e usada tanto para filtros FIR quanto
IIR. Vamos considerar o projeto de um filtro passa-baixa como exemplo.
Uma especificao absoluta de um filtro passa-baixa mostrada na Fig. 5.1 na
qual:
Pgina 116
RP = 20 log10
1 1
>0
1 + 1
AS = 20 log10
2
>0
1 + 1
Exemplo:
As especificaes de um FPB definem as ondulaes da banda de passagem
em 0,25 dB e a atenuao na banda de corte em 50 dB. Determine 1 e 2.
RP = 0,25 = -20 log10 [(1 - 1)/(1 + 1)] 1 = 0,0144
AS = 50 = -20 log10 [2/(1 + 1)] 2 = 0,0032
Pgina 117
Pgina 118
1.e j ,
| | c
H d (e ) =
c <| |
0,
j
1
hd [ n] = [ H d (e )] =
2
j
1
hd [ n] =
2
j
jn
H
(
e
)
e
d
d
j jn
1
.
e
e d =
sen[c ( n )]
(n )
Para obter um filtro FIR a partir de hd[n], precisamos truncar hd[n] em ambos os
lados. Para obter um filtro FIR causal de fase linear h[n] de comprimento M,
devemos ter:
Pgina 119
hd [n], 0 n M 1
h[n] =
seno
0,
e
= (M 1)/2.
Essa operao chamada de janelamento. Em geral, h[n] pode ser pensado
como sendo formado pelo produto de hd[n] e uma janela w[n] tal que:
h[n] = hd[n].w[n]
onde w[n] alguma funo simtrica com respeito a no intervalo 0 n M 1
e 0 fora desse intervalo.
Dependendo de como obtivermos w[n] acima, temos diferentes projetos de
filtros. Por exemplo:
1, 0 n M 1
w[n] =
seno
0,
uma janela retangular.
No domnio da frequncia, a resposta H(ejw) do filtro FIR causal dada pela
convoluo de Hd(ejw) e a resposta da janela W(ejw):
1
H (e ) = H d (e ) * W (e ) =
W (e j ) H d (e j ( w ) )d
2
jw
jw
jw
Podemos ver essa convoluo na Fig. 5.3 para uma janela comum.
Pgina 120
Pgina 121
1) Janela Retangular
Essa a janela mais simples, mas que prov o pior desempenho em termos de
atenuao da banda de corte. Ela definida como:
1, 0 n M
w[n] =
seno
0,
sendo sua resposta em frequncia:
W (e ) = e
jw
n =0
jwn
1 e jw( M +1)
jwM / 2 sen[ w( M + 1) / 2]
=
=
e
sen( w / 2)
1 e jw
Pgina 122
Pode ser provado que a largura do lbulo central wm = 4/(M + 1) para uma
janela retangular. O primeiro zero de W(ejw) ocorre quando:
sen (w(M + 1)/2) = 0 w(M + 1)/2 = 2/(M + 1)
Assim, a largura do lbulo central o dobro desse valor (j que envolve os
valores negativos e positivos):
2w = 4/(M + 1)
Observa-se
tambm
que
magnitude
do
primeiro
lbulo
lateral
sen[(w( M + 1) / 2)]
=
sen( w / 2)
sen(3 / 2)
2( M + 1)
3
3
sen
2( M + 1)
medida que M cresce, a largura de cada lbulo lateral diminui, mas a rea
sobre cada um permanece constante. Assim, as amplitudes relativas dos picos
laterais vo permanecer constantes e a atenuao da banda de passagem
permanece em cerca de 21 dB. Isso significa que as ondulaes vo sofrer um
pico perto das bordas das bandas. Isso conhecido como fenmeno de Gibbs
(Fig. 5.5). Esse fenmeno ocorre por causa da transio brusca de 0 para 1 (e
de 1 para 0) da janela retangular.
Pgina 123
Fig. 5.5. Fenmeno de Gibbs: Pico das ondulaes nas fronteiras entre as
bandas.
2) Janela Triangular ou de Bartlett
Bartlett sugeriu uma transio mais suave para evitar o fenmeno de Gibbs. Isso
seria conseguido atravs de uma janela triangular da forma:
2n
M
2n
w[ n] = 2
M
0 n M /2
, M /2 < n M
,
seno
Essa janela e sua resposta em frequncia podem ser vistas na Fig. 5.6
Pgina 124
Pgina 125
Tambm similar s duas anteriores, mas tem um segundo harmnico o que faz
com que ela se aproxime de zero com mais suavidade.
Pgina 126
Tipo de
janela
Retangular
Bartlett
Hanning
Hamming
Blackman
Largura de
transio exata
1,8/M
6,1/M
6,2/M
6,6/M
11/M
Pico do
lbulo
lateral (dB)
-21
-25
-44
-53
-74
I 0 1 1
M
w[n] =
, 0nM
I 0 [ ]
0,
seno
( x / 2) n
I 0 ( x) = 1 +
n!
n=1
Pgina 127
0,112( A 8,7)
, A > 50
0
, A < 21
Pgina 128
(Eq. 5.1)
M=
A8
2,285w
Pgina 129
h[ n] = hd [n]w[n] =
sen[ wc ( n M / 2)]
w[n]
(n M / 2)
Implementaes no MatLab
O MatLab tem diversas funes para implementar janelas:
1. w = rectwin(M): Janela retangular
2. w = bartlett(M): Janela de Bartlett
3. w = hanning(M): Janela de Hanning
4. w = hamming(M): Janela de Hamming
5. w = blackman(M): Janela de Blackman
6. w = kaiser(M, beta): Janela de Kaiser
Antes de projetarmos alguns exemplos, vamos implementar duas funes base
importantes para os exemplos a seguir. Uma implementa uma resposta ao
impulso ideal de um filtro passa-baixa hd[n]. A outra funo implementa a
plotagem no domnio da frequncia, apresentando tambm a resposta em
magnitude absoluta e em escala dB ( uma variao da funo freqz do
MatLab).
Funo 1:
function hd = ideal_lp(wc, M)
% Ideal low pass filter
% wc = cutoff frequency
% M = length of the ideal filter
alpha = (M - 1)/2
n = [0:(M-1)];
m = n - alpha + eps;
hd = sin(wc*m)./(pi*m);
Pgina 130
Funo 2:
function [db, mag, pha, w] = freqz_m(b, a)
% Versao modificada da funcao freqz
[H, w] = freqz(b, a, 1000, 'whole');
H = (H(1:501))';
w = (w(1:501))';
mag = abs(H);
db = 20*log10((mag + eps)/(max(mag)));
pha = angle(H);
Exemplo 1:
Projetar um filtro passa-baixa FIR com as seguintes especificaes wP = 0,2,
RP = 0,25 dB, wS = 0,3 e AS = 50 dB.
Tanto a janela de Hamming quanto a de Blackman provem atenuao de mais
de 50 dB. Vamos escolher a janela de Hamming que prov a menor banda de
transio e assim tem a menor ordem.
wp = 0.2*pi; ws = 0.3*pi;
tr_width = ws - wp;
M = ceil(6.6*pi/tr_width) + 1
n = [0:M-1];
wc = (ws + wp)/2;
hd = ideal_lp (wc, M);
w_ham = (hamming(M))';
h = hd.*w_ham;
[db, mag, pha, w] = freqz_m(h, [1]);
delta_w = 2*pi/1000;
Rp = -(min(db(1:wp/delta_w+1)))
As = -round(max(db(ws/delta_w+1:501)))
subplot(1, 1, 1)
subplot (2, 2, 1); stem(n, hd); title('Resposta ao Impulso Ideal');
axis([0 M-1 -0.1 0.3]);xlabel('n');ylabel('hd[n]');
subplot (2, 2, 2); stem(n, w_ham); title('Janela de Hamming');
axis([0 M-1 0 1.1]);xlabel('n');ylabel('w[n]');
Pgina 131
Pgina 132
Exemplo 2:
Resolva o exemplo anterior usando uma janela de Kaiser.
wp = 0.2*pi; ws = 0.3*pi; As = 50;
tr_width = ws - wp;
M = ceil((As - 7.95)/(14.36*tr_width/(2*pi))+1) + 1
n = [0:M-1];
beta = 0.1102*(As - 8.7)
wc = (ws + wp)/2;
hd = ideal_lp (wc, M);
w_kai = (kaiser(M, beta))';
h = hd.*w_kai;
[db, mag, pha, w] = freqz_m(h, [1]);
delta_w = 2*pi/1000;
As = -round(max(db(ws/delta_w+1:501)))
subplot(1, 1, 1)
subplot (2, 2, 1); stem(n, hd); title('Resposta ao Impulso Ideal');
axis([0 M-1 -0.1 0.3]);xlabel('n');ylabel('hd[n]');
subplot (2, 2, 2); stem(n, w_kai); title('Janela de Kaiser');
axis([0 M-1 0 1.1]);xlabel('n');ylabel('w[n]');
subplot (2, 2, 3); stem(n, h); title('Resposta ao Impulso Atual');
axis([0 M-1 -0.1 0.3]);xlabel('n');ylabel('h[n]');
subplot (2, 2, 4); plot(w/pi, db); title('Magnitude em dB');grid
axis([0 1 -100 10]);xlabel('frequencia em pi unidades');ylabel('Decibeis');
M = 61
beta = 4,5513
alpha = 30
As = 52
Pgina 133
Pgina 134
Exemplo 3:
Vamos projetar o filtro com as seguintes especificaes (conforme a figura
abaixo):
Borda da banda de corte mais baixa: w1s = 0,2, As = 60 dB
Borda da banda de passagem mais baixa: w1p = 0,35, As = 1 dB
Borda da banda de corte mais alta: w2s = 0,65, As = 1 dB
Borda da banda de passagem mais alta: w2p = 0,8, As = 60 dB
Pgina 135
Pgina 136
75
alpha = 37
Rp =
0,0030
As =
75
Pgina 137
Exemplo 4:
A resposta em frequncia de um filtro passa-faixa ideal dada por:
0 | w |< / 3
1 ,
H e (e jw ) = 0 , / 3 | w | 2 / 3
1 , 2 / 3 <| w |
= 0,1102( AS 8,7)
Vamos agora implementar a janela de Kaiser e observar a atenuao na banda
de corte.
M = 45; As = 60; n=[0:M-1];
beta = 0.1102*(As - 8.7)
w_kai = (kaiser(M, beta))';
wc1 = pi/3; wc2 = 2*pi/3;
hd = ideal_lp(wc1, M) + ideal_lp(pi, M) - ideal_lp(wc2, M);
h = hd.*w_kai;
[db, mag, pha, w] = freqz_m(h, [1]);
subplot (1, 1, 1);
subplot (2, 2, 1);
stem(n,hd); title('Resposta ao Impulso Ideal');
axis([0 M-1 -0.2 0.8]); xlabel('n'); ylabel ('hd[n]');
subplot (2, 2, 2); stem (n, w_kai); title ('Janela de Kaiser');
axis ([0 M-1 0 1.1]); xlabel('n'); ylabel('w[n]');
subplot (2, 2, 3); stem(n, h); title('Resposta ao Impulso Atual');
axis([0 M-1 -0.2 0.8]);xlabel('n');ylabel('h[n]');
subplot (2, 2, 4); plot(w/pi, db); title('Magnitude em dB');grid
Pgina 138
Observe que, com esse valor, a mnima atenuao da banda de corte menor
que 60 dB (observe que h lbulos na banda de corte com pico acima de 60 na
escala negativa - ou seja, menor que 60 em mdulo resposta em magnitude
na figura acima, destacada em vermelho). Assim, precisamos aumentar BETA
para aumentar a atenuao para 60 dB. Vamos colocar um acrscimo no valor
calculado de BETA para conseguir uma atenuao maior. Observamos que,
assim, a atenuao fica maior que 60 dB na banda de corte.
M = 45; As = 60; n=[0:M - 1];
beta = 0.1102*(As - 8.7) + 0.3
w_kai = (kaiser(M, beta))';
Pgina 139
Pgina 140
Exemplo 5:
A resposta em frequncia de um filtro diferenciador digital ideal dada por:
jw , 0 < w
H d (e jw ) =
jw , < w < 0
Usando uma janela de Hamming de comprimento 21, projete um diferenciador
FIR. Plote as respostas no domnio do tempo e da frequncia.
A resposta ao impulso de um diferenciador ideal com fase linear dada por:
hd [n] = [ H d (e )e
jw
1
=
2
jw
( jw)e
(e jw )e jw e jwn dw
jw
1
]=
2
jwn
1
dw + ( jw)e jw e jwn dw
2 0
cos (n )
, n
= (n )
0
, n =
A resposta ao impulso acima pode ser implementada no MatLab atravs da
janela de Hamming para projetar o diferenciador requisitado. Note que se M
um nmero par, ento = (M - 1)/2 no um inteiro e hd[n] ser zero para todo
n. Assim, M deve ser um nmero mpar e teremos um filtro FIR de fase linear do
tipo III.
Para projetar um filtro FIR de fase linear (de qualquer tipo) usamos o cdigo
abaixo:
function [Hr, w, coef, L] = Hr_Type(h, type)
% Calcula a resposta em ampiltude Hr[w] para filtros FIR tipo I, II, III e IV
% type = tipo de filtro
M = length(h);
if ((type == 1) | (type == 2))
L = (M - mod(type, 2))/2;
if (type == 1)
Pgina 141
Pgina 142
Exemplo 6:
Projete um filtro transformador digital de Hilbert de comprimento 25 usando uma
janela de Hanning. A resposta em frequncia ideal de um transformador de
Hilbert de fase linear dada por:
je jw , 0 < w <
H d (e ) = jw
, < w < 0
je
jw
Pgina 143
2 sen 2 [ (n ) / 2]
, n
hd [ n] =
(n )
0
, n =
que pode ser implementado no MatLab. Como M = 25, o projeto do filtro do
tipo III:
M = 25; alpha = (M - 1)/2;
n = 0:M-1;
Pgina 144
H ( z ) = h[n]z
n=0
1 z M
=
M
M 1
H [k ]
1 j 2k / M
e
1 z
k =0
1 e jwM
H (e ) =
M
jw
com
M 1
H [k ]
jw j 2k / M
e
k =0 1 e
(Eq. 5.2)
Pgina 145
,
k =0
H [0]
H [k ] = H (e j 2k / M ) =
H *[ M k ] , k = 1,..., M 1
Para um filtro FIR de fase linear temos:
h[n] = h[M 1 - n], n = 0, 1, ..., M-1
onde o sinal positivo indica filtros FIR de fase linear dos tipos1 e 2 e o negativo
para filtros FIR de fase linear dos tipos 3 e 4. Ento H[k] dado por:
2k jH [ k ]
H [k ] = H r
e
M
onde
H r [0]
,
k =0
2k
Hr
= H 2 ( M k ) , k = 1,..., M 1
M r
M
e
M 1 2k
M 1
,
k
0
,...,
=
2
2 M
H [k ] =
+ M 1 2 ( M k ) , k = M 1 + 1,..., M 1
2
2 M
(para tipos 1 e 2)
ou
M 1 2k
M 1
,
k = 0,...,
2 2 M
2
H [ k ] =
+ M 1 2 ( M k ) , k = M 1 + 1,..., M 1
2
2 2 M
(para tipos 3 e 4)
Pgina 146
Pgina 147
Pgina 148
M = M + 1;
h = remez(M - 1, f, m, weights);
[db, mag, pha, w] = freqz_m(h, [1]);
delta_w = 2*pi/1000;
wsi = ws/delta_w + 1;
Asd = -max(db(wsi:501))
end
subplot (2, 1, 1); stem(h); title('Resposta ao Impulso Atual');
axis([0 M-1 -0.1 0.3]);xlabel('n');ylabel('h[n]');
subplot (2, 1, 2); plot(w/pi, db); title('Magnitude em dB');grid
axis([0 1 -100 10]);xlabel('frequencia em pi unidades');ylabel('Decibeis');
M=
43
Asd = 48.8689
Asd = 47.8404
M=
M=
Asd = 49.8241
44
46
Asd = 48.2131
M=
M=
Asd = 51.0857
45
47
Pgina 149
Filtros IIR tm resposta infinita ao impulso, assim eles podem ser igualados a
filtros analgicos, os quais, em geral, tm resposta ao impulso infinitamente
longa. Assim, a tcnica bsica de projeto de filtros IIR transforma filtros
analgicos bem conhecidos em filtros digitais. A vantagem dessa tcnica est no
fato que tanto tabelas de filtros analgicos quanto as converses esto
vastamente disponveis na literatura. Essa tcnica chamada de transformao
de filtro analgica-digital (A/D). No entanto, as tabelas de filtros s esto
disponveis para filtros passa-baixa. Para gerar outros filtros seletores de
frequncia, temos que aplicar transformaes a filtros passa-baixa. Essas
transformaes tambm esto disponveis na literatura. Existem duas formas de
projeto de filtros IIR:
1)
2)
Pgina 150
1
| H a ( j) |2 1 ,
2
1+
0 | H a ( j) |2
1
A2
|| P
S ||
| H a ( j ) | 2 =
1
1+ 2
1
| Ha ( j) | = 2
A
em = P
em = S
Pgina 151
RP = 10 log10
1
RP / 10
=
10
1
2
1+
(Eq. 5.3)
AS = 10 log10
1
AS / 20
A
=
10
A2
(Eq. 5.4)
2 1
1 1
1
=
1 + 1
1+ 2
1 1
e
2
1
1 + 1
= A=
1 + 1 A
2
Especificaes de filtros analgicos no tm informao de fase. Para calcular a
funo de sistema Ha(s) no domnio-s considere:
H a ( j ) = H a ( s ) = s / j
ento temos
| H a ( j ) |2 = H a ( j ).H a * ( j ) = H a ( j ).H a ( j ) = H a ( s ) H a ( s ) s = j
ou
H a ( s ).H a ( s ) = | H a ( j) |2
=s / j
Observao:
O domnio-s ou plano-s o nome do plano complexo no qual a transformada de
Laplace apresentada graficamente. A transformada de Laplace se relaciona
com a transformada de Fourier, mas enquanto a transformada de Fourier
Pgina 152
L{ f (t )} =
f (t )e st dt
X ( s ) = x[n]e nsT
n =0
Pgina 153
| H a ( j ) | 2 =
1
1 +
c
2N
Pgina 154
H a ( s ) H a ( s ) = | H a ( j) |
2
=s / j
1
s
1 +
j c
2N
( j) 2 N
= 2N
s + ( j c ) 2 N
+ 1)/2N
i) em = P,
10 log 10 | H a ( j) | 2 = R P
1
10 log10
2N
1 + ( P / c )
ou
= RP
e
ii) em = S,
10 log 10 | H a ( j ) |2 = AS
1
10 log10
2N
1 + ( S / c )
= AS
ou
Pgina 155
C =
2N
10 RP / 10 1
C =
S
2N
10 AS / 10 1
C =
0,2
2.3
10
0, 7
= 0,4985
Pgina 156
C =
0,3
2.3
10 1
1, 6
= 0,5122
Podemos escolher c entre esses dois valores, por exemplo c = 0,5. Temos
que projetar um filtro Butterworth com N = 3 e c = 0,5. Ou seja:
| H a ( j) |2 =
1+
0
,
5
| H a ( s ) |2 =
1
S
1 +
0,5 j
1
1
=
1 26 s 6 1 64s 6
cujos plos podem ser calculados no MatLab (ou calculando pK, como antes):
>> a = [-64 0 0 0 0 0 1];
>> b = roots(a)
b=
-0.5000
-0.2500 + 0.4330i
-0.2500 - 0.4330i
0.5000
0.2500 + 0.4330i
0.2500 - 0.4330i
Pgina 157
H a ( s) =
1
( s + 0,5)( s + 0,25 + j 0,433)( s + 0,25 j 0,433)
H a (s) =
1
( s + 0,5)( s 2 + 0,5s + 0,25)
Vamos ajustar o numerador para que o ganho na frequncia zero seja unitrio.
Ou seja, no denominador, quando s = 0, temos:
(s + 0,5)(s2 + 0,5s + 0,25) = 0,5.0,25 = 0,125
Logo, o numerador multiplicado por um fator de 1/8 e temos:
H a ( s) =
1/ 8
0,125
=
( s + 0,5)( s 2 + 0,5s + 0,25) ( s + 0,5)( s 2 + 0,5s + 0,25)
2 1 z 1
1 + sT / 2
s=
z
=
T 1 + z 1
1 sT / 2
(Eq. 5.5)
1 z 1
s=2
H a ( z ) = H a ( s) s=21 z 1 =
1
1+ z
1+ z 1
H a ( z) =
Pgina 158
0,125
2
1 z 1
1 z 1
1 z 1
2 1 + z 1 + 0,5 2 1 + z 1 + 0,5 2 1 + z 1 + 0,25
H ( s) =
b
s+a
(Eq. 5.6)
dy (t )
+ a. y (t ) = b.x(t )
dt
Ao invs de substituir uma diferena finita pela derivada, suponha que
integramos a derivada e aproximamos a integral pela frmula trapezoidal. Assim:
t
y (t ) = y ' ( ) d + y (t0 )
t0
y (nt ) =
T
[y ' (nT ) + y ' (nT T )] + y (nT T )
2
(Eq. 5.7)
(Eq. 5.8)
Usamos a Eq. 5.8 na Eq. 5.7 e obtemos a equao de diferenas para o sistema
discreto no tempo equivalente. Com y(n) y(nT) e x(n) x(nT), obtemos o
resultado:
Pgina 159
bT
aT
aT
(x(n) + x(n 1) )
1 +
y ( n ) 1
y ( n 1) =
2
2
2
cuja transformada Z
bT
aT
aT 1
1
+
Y
(
z
)
z
Y
(
z
)
=
1 + z 1 X ( z )
2
2
2
Y ( z)
(bT / 2)(1 + z 1 )
H ( z) =
=
X ( z ) 1 + aT / 2 (1 aT / 2) z 1
ou, equivalentemente:
H ( z) =
b
2 1 z 1
+a
1
T 1+ z
(Eq. 5.9)
Notadamente, comparando a Eq. 5.9 com a Eq. 5.6, ou seja, mapeando o plano
s com o plano z, temos:
2 1 z 1
s =
1
T 1+ z
que a chamada transformao bilinear.
2) Filtro Passa-Baixa de Chebyshev
Existem dois tipos de filtros de Chebyshev. O Chebyshev do tipo I tem resposta
equirriple na banda de passagem e o tipo II, na banda de corte. Os filtros
Butterworth tm resposta monotnica em ambas as bandas. Lembramos que um
filtro de resposta equirriple tem menor ordem. Assim, um filtro de Chebyshev tem
menor ordem que um de Butterworth para as mesmas especificaes. Veja o
exemplo na Fig. 5.13 gerado usando o fdatool do MatLab. Nele, temos dois
Pgina 160
| H a ( j ) | 2 =
1
1 + 2TN2
c
| H a ( j ) | 2 =
1 + 2TN2 c
Pgina 161
Fig. 5.13. Dois filtros com as mesmas especificaes gerados como Butterworth
e Chebyshev tipo I: o de Chebyshev tem menor ordem.
3) Filtro Passa-Baixa Elptico
Esses filtros apresentam ondulaes na banda de passagem e de corte. So
similares em magnitude a filtros FIR equirriple. So filtros timos no sentido que
eles alcanam a menor ordem N para as dadas especificaes. Esses filtros so
muito difceis de projetar e analisar. No possvel projet-los com ferramentas
simples, sendo necessrio uso de tabelas e computadores.
Pgina 162
| H a ( j) |2 =
1 + 2U N2
N=
K (k ) K ( 1 k1 )
K (k1 ) K ( 1 k 2 )
onde
k= P
S
k=
/2
A 1
2
K ( x) =
1
1 x sen
2
H ( z ) = H PB ( Z ) Z 1 =G ( z 1 )
Pgina 163
e j = G (e jw )
e j =| G(e jw ) | e jG (e
jw
De forma que:
|G(e-jw)| = 1
e
-= G(e-jw)
A forma mais geral da funo G(z-1) que satisfaz s condies acima :
z 1 k
= G ( z ) =
1
k =1 1 k z
1
z 1
= G( z ) =
1 z 1
1
Pgina 164
Nessa tabela, vale a pena comentar a transformao passa-baixa para passabaixa (primeira converso da tabela). Isso feito para que se possa construir um
filtro passa-baixa que pode ser modificado apenas com a variao de um
parmetro: .
M
3
N
Isso mostra que, para a maior parte das aplicaes, filtros IIR elpticos so
desejveis do ponto de vista computacional. As condies mais favorveis para
filtros FIR so:
1. Grandes valores de 1;
2. Pequenos valores de 2;
3. Grande largura da banda de transio.
Pgina 165
Pgina 166
5.5 Exerccios
1. Projete um filtro passa-faixa, usando filtros passa-baixa ideais e janela de
Hamming, de acordo com a seguinte resposta em frequncia:
0 | w |< 0,3
1,
0, 0,3 | w |< 0,4
jw
H e (e ) = 1, 0,4 | w |< 0,5
0, 0,5 | w |< 0,6
1,
0,6 | w |<
AS = 50 dB e RP = 0,5 dB
Plote a resposta ao impulso e a resposta em magnitude do filtro.
2. Projete um filtro passa-alta, usando filtros passa-baixa ideais e janela de
Hanning, de acordo com as seguintes especificaes:
Frequncia da Banda de corte: 0,4
Frequncia da Banda de passagen: 0,6
AS = 60 dB e RP = 0,5 dB
Plote a resposta ao impulso e a resposta em magnitude do filtro. Modifique o que
for necessrio do filtro para que as especificaes sejam completamente
atendidas.
3. A resposta em frequncia de um filtro passa-faixa ideal dada por:
0 | w |< / 3
0 ,
H e (e jw ) = 1 , / 3 | w | 2 / 3
0 , 2 / 3 <| w |
Pgina 167
0 |w| 0,2
|H(ejw)| 0,17783,
0,3 |w|
Pgina 168
F ( w) { f (t )} =
f (t )e
j 2wt
dt
1
f (t ) {F ( w)}
2
1
F ( w) e
j 2wt
dw
Pgina 169
1
x[n] =
N
N 1
X [k ]e
2
kn
N
k =0
n = 0, 1, ....
(Eq. 6.1)
N 1
X [k ] = x[n]e
n =0
2
kn
N
k = 0, 1, ....
6.2)
(Eq.
Pgina 170
W N = e-j(2/N)
e assim o par de equaes torna-se:
N 1
Equao de anlise:
Equao de sntese:
X [k ] = x[n]WNkn
n =0
1
x[n] =
N
N 1
X [k ]W
kn
N
k =0
X [ k ] = x[ n]W4kn
n =0
Assim:
Pgina 171
X [0] = x[n]W
0.n
4
n=0
De forma similar:
3
X [1] = x[n]W
1.n
4
n=0
= x[n]( j ) n = 2 + 2 j
n=0
X [ 2] = x[n]W
2.n
4
n =0
= x[n]( j ) 2 n = 2
n=0
X [3] = x[n]W
3.n
4
n=0
= x[n]( j )3n = 2 2 j
n=0
aos
perodos
primrios
das
sequncias
x[n]
X[k],
Pgina 172
-2 + 2i
-2 - 0i
-2 - 2i
1 - 0i
2 - 0i
3 + 0i.
Exemplo:
Considere uma sequncia representando uma onda quadrada peridica:
No MatLab:
>> L = 5; N = 20; k = [-N/2:N/2];
>> xn = [ones(1, L), zeros(1, N-L)];
>> Xk = dfs(xn, N);
>> magXk = abs([Xk(N/2+1:N) Xk(1:N/2+1)]); % DFS magnitude
>> stem(k, magXk); axis([-N/2, N/2, -0.5, 5.5]);xlabel('k'); ylabel('X[k]');
Pgina 173
Pgina 174
~
x [ n] =
x[n rN ]
r =
Pgina 175
~
X [k ], 0 k N 1
X [k ] = DFT ( x[n]) =
seno
0,
ou
N 1
X [k ] = x[ n]W Nkn ,
n =0
0kN1
Note que X[k] tambm uma sequncia de N-pontos, ou seja, ela no definida
fora do intervalo de 0 k N 1.
A transformada discreta de Fourier inversa de uma DFT de N-pontos X[k] dada
por:
x[n] = IDFT ( X [k ])
ou
1
x[n] =
N
N 1
kn
X
[
k
]
W
N
,
k =0
0nN1
Pgina 176
2mn
2mn
X [ m] = x[n]cos
jsen
N
n =0
N
N 1
Pgina 177
x[n m] W NkmX[m]
3) Dualidade
Se
x[n] X[k]
ento
X[n] N.x[-k]
4) Simetria
A simetria pode poupar muito esforo computacional. Quando a sequncia do
sinal for real, ento X[N m]* = X[m]. Ou seja, basta que calculemos as
componentes de X[m] para 0 m N/2 .
Prova:
N 1
X [ k ] = x[ n]e
2
kn
N
n=0
Logo
*
2
2
2
j n ( N m )
j nN j nm
N 1
N 1
N
N
X [ N m] = x[ n]e
e N
= x[ n]e
n= 0
n= 0
2
j nm
N 1
*
j 2n
X [ N m] = x[ n]e
e N
n =0
2
j nm
N 1
*
X [ N m] = x[n]e N
n= 0
X [ N m] = x[n]e
*
2
nm
N
= X [ m]
n =0
5) Convoluo Peridica
N 1
x [ m ] x [ n m] X [ k ] X
1
m =0
[k ]
Pgina 178
Pgina 179
Para duas dimenses, a DFT e sua inversa podem ser vistas como:
Pgina 180
Pode ser vista como uma figura tridimensional, cuja viso em perspectiva seria
como na figura:
Pgina 181
6.5 O Espectrograma
Pgina 182
Pgina 183
A funo usada para gerar esse espectrograma pode ser vista abaixo:
% read the signal
[y,fs]=wavread('phrase59_16k.wav');
% calculate the table of amplitudes
[B,f,t]=specgram(y,1024,fs,256,192);
% calculate amplitude 50dB down from maximum
bmin=max(max(abs(B)))/300;
% plot top 50dB as image
imagesc(t,f,20*log10(max(abs(B),bmin)/bmin));
% label plot
axis xy; xlabel('Time (s)'); ylabel('Frequency (Hz)');
colormap(jet);
(fonte: http://www.phon.ucl.ac.uk/courses/spsci/matlab/lect9.html)
As figuras a seguir mostram as mesmas palavras ditas pela mesma mulher, mas
com outro tipo de microfone. Observe as diferenas mais visveis no
espectrograma.
Pgina 184
Pgina 185
6.6 Exerccios
1. Determine os coeficientes da DFS das seguintes sequncias peridicas,
usando a definio de DFS:
a) x1[n] = {2, 0, 2, 0}, N = 4
b) x2[n] = {0, 0, 1, 0, 0}, N = 5
c) x3[n] = {3, -3, 3, -3}, N = 4
d) x4[n] = {j, j, -j, -j}, N = 4
2. Determine as sequncias peridicas, dados os seguintes coeficientes DFS,
usando a definio de IDFS:
a) X1[k] = {5, -2j, 3, 2j}, N = 4
b) X2[k] = {4, -5, 3, -5}, N = 4
c) X3[k] = {1, 2, 3, 4, 5}, N = 5
d) X4[k] = {0, 0, 2, 0}, N = 4
3. Seja x1[n] peridica com perodo fundamental N = 50, onde um perodo
dado por:
ne0,3n , 0 n 25
x1[n] =
26 n 49
0,
e seja x2[n] peridica com perodo fundamental N = 100, onde um perodo
dado por:
ne0,3n , 0 n 25
x21[n] =
26 n 99
0,
a) Encontre DFT{x1[n]} e plote (usando a funo stem) os grficos de sua
magnitude e de sua fase.
b) Encontre DFT{x2[n]} e plote (usando a funo stem) os grficos de sua
magnitude e de sua fase.
c) Qual a diferena entre as duas plotagens?
Pgina 186
4. Nas questes abaixo, para cada funo, plote a magnitude e a fase de sua
DFT (crie as funes no MatLab):
a) Dente de serra:
b) Onda quadrada
Pgina 187
Pgina 188
Pgina 189
Pgina 190
e = (a b)d + a(c d)
f = (a b)d + b(c + d)
tendo 3 multiplicaes apenas. O aumento na quantidade de adies no
prejudica o desempenho do algoritmo j que a multiplicao o elemento mais
custoso.
X (k ) = x[n](e
n =0
N 1
) = x[n]WNkn
j 2 / N kn
n =0
(Eq. 7.1)
Pgina 191
X (k ) =
x[n]W
x[n]WNnk +
n _ par
nk
N
n _ mpar
X (k ) =
N / 21
x[2r ]W
2 rk
N
N / 21
r =0
X (k ) =
N / 21
x[2r + 1]W
( 2 r +1) k
N
(Eq. 7.2)
r =0
x[2r ](W
) +W
2 rk
N
r =0
N / 2 1
k
N
x[2r + 1](W
r =0
2 rk
N
(Eq. 7.3)
X (k ) =
N / 21
x[2r ]W
rk
N/2
+W
r =0
X (k ) = G[k ] +WNk H [ k ]
N / 21
k
N
x[2r + 1]W
rk
N /2
r =0
(Eq. 7.4)
Pgina 192
Cada parcela na Eq. 7.4 reconhecida como uma DFT de N/2 pontos, sendo a
primeira parcela uma DFT de N/2 pontos dos pontos de ndice par da sequncia
original e o segundo termos uma DFT de N/2 pontos dos pontos de ndice mpar
da sequncia original. A Fig. 7.1 apresenta um diagrama de fluxo do clculo de
uma DFT de 8 pontos.
Pgina 193
peridicas em k com perodo 4 (nesse caso), H[4] = H[0] e G[4] = G[0]. Assim,
H[4] obtido multiplicando h[0] por W N4 e somando o resultado com G[0]. Os
outros valores so obtidos de forma similar.
Com a computao re-estruturada de acordo com a Eq. 7.4, podemos analisar a
complexidade desse novo mtodo e comparar com o algoritmo clssico da DFT.
A computao direta da DFT requer N2 multiplicaes complexas e adies. A
Eq. 4 requer o clculo de duas DFTs de N/2 pontos o que significa 2(N/2)2
multiplicaes complexas e o mesmo nmero de adies, se usarmos o mtodo
clssico para calcular cada DFT dessas. Ento as duas DFTs de N/2 pontos
devem ser combinadas precisando N multiplicaes complexas, correspondendo
a multiplicar H[k] pelo twiddle e N adies complexas para somar G[k] com o
resultado desse produto. Assim, a computao da Eq. 6.4 para todos os valores
de k requer, no mximo:
N + 2(N/2)2 = N + N2/2
multiplicaes complexas e adies. Para N> 2, esse valor menor que as N2
operaes necessrias pela DFT clssica.
A Eq. 7.4 corresponde a quebrar a computao da DFT de N-pontos em duas
DFTs de N/2 pontos. Se N/2 par, o que acontece quando N igual a uma
potncia de 2, podemos considerar calcular cada DFT de N/2 pontos usando o
mesmo mtodo. Assim, cada uma ser quebrada em duas DFTs de N/4 pontos.
Com isso, G[k] e H[k] sero dados por:
G[ k ] =
N / 4 1
g[2l ]W
lk
N /4
+W
N / 41
k
N /2
l =0
H [k ] =
lk
N/4
(Eq. 7.5)
lk
N /4
(Eq. 7.6)
l =0
N / 41
h[2l ]W
lk
N /4
l =0
g[2l + 1]W
+W
N / 4 1
k
N/2
h[2l + 1]W
l =0
Pgina 194
Fig. 7.2. Grfico de fluxo da decimao em tempo de uma DFT de N/2 pontos
em duas DFTs de N/4 pontos (para N = 8).
Pgina 195
Pgina 196
Pgina 197
Pgina 198
X0[6] = x[3]
X0[7] = x[7]
Usando essa notao, podemos legendar a entrada e a sada do butterfly da Fig.
7.6, como indicado na Fig. 7.7, de acordo com as seguintes equaes:
(Eqs. 7.7)
que podem ser re-escritas como:
(Eqs. 7.8)
Pgina 199
Pgina 200
Pgina 201
para
sub-dividir
problema
inicial
em
problemas
Pgina 202
Pgina 203
7.4 Exerccios
1. Dada a equao abaixo para a transformada discreta do cosseno, apresente
como ficaria sua implementao usando o algoritmo rpido de decimao no
tempo.
( 2n 1)( k 1)
y ( k ) = w( k ) x( n ) cos
,
2N
n =1
N
k = 1, ...., N
Onde:
w( k ) =
1
k
2
N
k =1
2k N
Pgina 204
Pgina 205
8. Anlise Wavelet
Em 1807, Joseph Fourier props sua anlise de frequncia em sinais. Atravs
dessa anlise, um sinal no domnio do tempo poderia ser convertido para o
domnio da frequncia e vice-versa. Dessa forma, caractersticas do sinal podem
ser observadas de uma maneira mais apropriadas.
A transformada de Fourier definida como:
F ( ) =
f (t )e j 2t dt
(Eq. 8.1)
1
f (t ) =
2
j 2 t
F
(
)
e
d
(Eq. 8.2)
Pgina 206
Pgina 207
Pgina 208
uma janela pequena pode trazer pouca informao sobre o sinal e exige muito
processamento. J uma janela grande pode aumentar o erro na considerao de
estacionaridade do sinal.
Nesse sentido, o prximo passo natural na evoluo das transformadas a
aplicao de uma transformada em uma janela de tamanho varivel. Essa a
idia bsica da Transformada Wavelet. As janelas podem atuar em intervalos
maiores quando queremos informaes mais precisas sobre baixas frequncias
ou em intervalos menores quando queremos informaes mais precisas sobre
altas frequncias (Fig. 8.4).
(Eq. 8.3)
Nessa equao, s atua como fator de escala e atua como fator de translao
(deslocamento) da janela; uma funo conhecida como a wavelet me. Essa
funo aplicada sobre a funo em anlise (x(t)), em janelas (cuja posio
definida pelo deslocamento ) e com dimenses diferentes (definidas pelo fator
de escala s). Variaes nessa funo criam as chamadas famlias de wavelets.
A primeira famlia de wavelets a Haar criada na tese de Alfred Haar ainda em
1909 sem o propsito atual das Wavelets.
Pgina 209
A Eq. 8.3 pode ser vista como uma forma geral da transformada que pode variar,
dependendo da funo assumida por . Dessa forma, podemos entender a
transformada de Fourier como um caso particular da transformada Wavelet com
a wavelet me sendo a funo exponencial. Existem condies que definem
uma funo como passvel de ser wavelet, como veremos posteriormente.
O nome wavelet a verso em ingls para o termo original ondeletteque
significa pequena onda como referncia ao deslocar da onda por todo o sinal
desde escalas pequenas. O termo tambm referencia o fato da janela ter
comprimento finito.
A wavelet me a funo que analisa o sinal, efetivamente. Todas as janelas
so verses expandidas ou comprimidas e deslocadas dessa funo. O fator de
escala afeta o sinal de forma que:
Para anlises de baixas frequncias do sinal, usamos uma alta escala para ter
uma viso global no detalhada do sinal. Para anlise de altas frequncias usase baixa escala para ter uma viso global detalhada do sinal. A Fig. 8.5
apresenta um exemplo de uma wavelet e o resultado da aplicao de um
elemento de escala nela. A Fig. 8.6 apresenta o resultado do deslocamento na
funo.
Pgina 210
Pgina 211
a)
b)
c)
Fig. 8.8. Anlise de wavelet no contnuo: a) correlao entre a funo e a
wavelet me; b) novo clculo com a funo deslocada; c) re-incio do
processamento com uma nova escala aplicada wavelet me.
Quando o processo concludo, temos os coeficientes resultantes das
comparaes em cada escala da wavelet me. Esse resultado plotado em um
grfico tridimensional que apresenta o tempo versus a escala e o valor dos
coeficientes para cada escala.
Pgina 212
, s0 > 1 e jZ
(Eq. 8.3)
j , k (t ) = 2 j / 2 (2 j t k )
A wavelet acima conhecida por wavelet didica.
Pgina 213
Pgina 214
Todo esse processo pode ser repetido em cascata, tratando, como sugerido,
apenas os componentes de baixa frequncia do sinal (os mais importantes). Isso
pode ser visto na Fig. 8.11. A isso se chama anlise em multiresoluo.
a)
b)
Pgina 215
Fig. 8.12. Uso do upsampling (bloco com seta para cima) para reconstruo do
sinal.
Sntese
Pgina 216
Pgina 217
y[n] = -a.( b.x[n] a.x[n 1]) + b.(b.x[n - 1] a.x[n 2]) + b.( a.x[n] +
b.x[n 1]) + a.(a.x[n - 1] + b.x[n 2])
y[n] = -ab.x[n] + aa.x[n 1] + b.b.x[n - 1] ba.x[n 2] + b.a.x[n] +
b.b.x[n 1] + a.a.x[n - 1] + ab.x[n 2]
y[n] = aa.x[n 1] + bb.x[n 1] + bb.x[n 1] + aa.x[n 1]
y[n] = (2aa + 2bb).x[n 1]
Essas operaes retratam o processamento da wavelet de Haar. Essa a mais
simples das wavelets. Se escolhermos com cuidado os coeficientes, teremos a
transformada de Haar. Por exemplo, se:
2aa + 2bb = 1
ento
y[n] = x[n 1]
ou seja, a sada a entrada com um retardo de 1. Se procurarmos a e b tal que:
aa + bb = 1
podemos ter aa = e bb = . Assim, se a = b = 1/2, teremos os coeficientes
da transformada de Haar. A busca por coeficientes que tornem aa + bb = 1 e
no 2(aa + bb) = 1 est relacionada ao processo de downsampling como
explicado anteriormente.
Pgina 218
Algumas vezes, um two channel filter bank chamado de quadrature mirror filter
(QMF). Um QMF um filter banks com condies especiais nos coeficientes dos
filtros para evitar aliasing e conseguir uma reconstruo perfeita. Ou seja, sua
nica diferena para filter banks a escolha dos coeficientes dos filtros.
Seja um dos filtros da anlise h0. Os outros filtros (h1, g0 e g1) so gerados a
partir de h0. Especificamente, h1 usa os mesmos coeficientes de h0, mas
negativa os coeficientes de ndice par. O filtro de reconstruo g0 igual a h0 e
g1= -h1.
O conjugate quadrature filter (CQF) especifica que h1 deve ser o reverso de h0
com os valores em ndices de ordem par negativados. Para a reconstruo, g0 e
g1 so os reversos de h0 e h1, respectivamente.
As Figs. 8.15 e 8.16 mostram exemplos de QMF e CQF para a transformada de
Haar. Se a = b, ento QMF = CQF.
h1
g1
h0
g0
Pgina 219
Pgina 220
(aa + bb + cc + dd) = 1
ii)
ac = -bd
O MatLab traz uma srie de ferramentas para lidar com wavelets. A mais bsica
a funo swt (e swt2 para sinais bi-dimensionais como imagens) ou dwt. A
funo swt permite diversos parmetros de entrada (veja a documentao do
MatLab para ver todos), sendo os principais: o sinal de entrada, a quantidade de
nveis de decomposio e o tipo de wavelet (com o nmero de coeficientes
previamente calculados at certo ponto). J a funo dwt apresenta apenas a
decomposio do sinal nos componentes de aproximao e detalhes (como
apresentado na Fig. 8.11). A funo wavemenu abre uma janela com diversas
funcionalidades do MatLab relacionadas com wavelets (Fig. 8.19). Todas essas
funes podem ser ativadas por linha de comando no prprio MatLab.
Pgina 221
Recuperao do sinal:
>> A0 = idwt(cA1,cD1,'db1',l_s);
>> err = max(abs(som-A0))
err = 1.1102e-016
>> plot (A0);
Pgina 222
Pgina 223
Pgina 224
Pgina 225
Imagem original
Imagem sintetizada
Pgina 226
Pgina 227
8.5 Exerccios
1.
a) Verifique se os coeficientes
a = (1-3)/(42), b = (3-3)/(42), c = (3+3)/(42) e d = (1+3)/(42)
podem ser coeficientes de uma wavelet de Daubechies.
b) Use esses coeficientes para filtrar a sequncia:
x[n] = {8, 4, 0, 6, 3, 7, 2, 9}
de acordo com o filter banks da figura desta questo.
c) Agora, acrescente o downsampling antes das sadas z[n] e w[n] e um
upsampling aps o processamento dessas sadas (antes da soma que gera
y[n]). Qual o erro entre a resposta da letra anterior e desta em relao sada?
Pgina 228
Pgina 229
Pgina 230
da
imagem
para
observao
humana
ou
para
um
mais
Pgina 231
Uma imagem digital pode ser entendida como uma funo f(x,y), onde x e y so
as coordenadas espaciais e a funo f o nvel de cinza (ou de brilho) naquele
ponto. Quando x, y e f esto numa escala finita e discreta, dizemos que temos
uma imagem digital.
A imagem digital pode ser gerada diretamente atravs de um dispositivo digital
ou pode ser digitalizada a partir de uma imagem real. Esse segundo caso o
mais clssico, onde dispositivos, como scanners, por exemplo, faziam a
transposio da imagem do meio real para o digital. Para tanto, alguns
processos so fundamentais como veremos posteriormente.
Em termos de pesquisa e desenvolvimento, processamento digital de imagens
est inserido na grande rea de processamento grfico. Nessa rea,
encontramos ainda elementos de computao grfica e de viso computacional.
[Gomes e Velho, 1995] relacionam essas reas de acordo com a representao
grfica da Fig. 9.1. Essa representao e essa relao esto associadas ao tipo
de dado que entra e que sai de um sistema especfico. Notadamente, essa
representao est relacionada com a percepo humana para os dados
inseridos
retornados
pelos
sistemas.
Para
os
dispositivos,
como
Pgina 232
Pgina 233
9.1 Digitalizao
Um sistema de processamento digital de imagens necessita de um dispositivo
de digitalizao (cmera digital, scanner, etc), um meio para processar e
armazenar a imagem (como o computador) e uma forma de visualizao da
imagem. Em geral, a grande dificuldade est relacionada com a digitalizao
que pode gerar imagens com grande quantidade de dados a serem
processados.
Detalhando as principais funes relativas ao processamento digital de imagens,
comecemos com o processo de gerao de uma imagem digital a partir de uma
imagem real: a digitalizao.
Dada uma imagem real, a digitalizao consiste em colher amostras dessa
imagem para represent-la em um meio discreto. O processo de coleta de
amostras o mesmo que a digitalizao de uma funo como pode ser visto na
Fig. 9.2. Nela, vemos uma funo no contnuo. Para ser representada em algum
domnio discreto, preciso adaptar a funo a esse domnio. Ou seja, partes
dela sero perdidas porque no podem ser representadas. Assim, amostras da
funo so coletadas por impulsos separados por intervalos definidos de tempo
de forma que representem da melhor forma possvel a funo original.
Notadamente, em muitos casos reais, essa representao perde elementos que
no podem ser recuperados. Mas espera-se que a perda no seja significativa.
De qualquer forma, a reconstruo do sinal leva a uma forma aproximada do
sinal original. Isso est representado na Fig. 9.3. O sinal original discretizado.
Cada amostra ento codificada e armazenada. A decodificao feita sem
Pgina 234
Pgina 235
Pgina 236
uma matriz onde cada clula tem uma cor especfica. O conjunto e a disposio
dessas cores percebida pelo sistema visual humano e interpretado pelo nosso
crebro como uma imagem.
Fig. 9.4. Como antes (Fig. 9.3), em azul (linha contnua) temos o sinal original,
em vermelho (linha pontilhada vertical) as amostras colhidas do sinal durante a
amostragem e em pontilhado na horizontal temos a discretizao das amplitudes
durante a quantizao.
Dada a importncia das cores na formao e percepo da imagem,
descreveremos a seguir o sistema computacional de cores desde sua definio.
A cor tida como um fenmeno psicofsico. Ou seja, por um lado, ela deriva de
um fenmeno fsico relacionado com a luz. No entanto, nossa percepo da cor
depende de sua interao com nosso sistema visual. Percebemos uma parede
como branca se uma luz branca incidir sobre ela. Se a nica fonte de luz no
ambiente for uma luz vermelha, perceberemos a parede como um tom de
vermelho e no conseguiremos distingui-lo de outra cor.
Pgina 237
No incio do estudo sobre cores, o fenmeno que mais chamava a ateno era a
decomposio da luz branca em todas as cores do espectro ao passar por um
prisma. Acreditava-se que o prisma tinha essa propriedade mgica de
decompor a luz. Foi Sir Isaac Newton, fsico, matemtico e astrnomo ingls, no
sculo XVII, que derrubou essa idia com um experimento simples: Newton
colocou um prisma na frente de outro e a decomposio da luz branca
provocada pelo primeiro prisma incidia sobre o segundo prisma retornando luz
branca novamente (Fig. 9.5). Newton acreditava que o olho humano era
composto por infinitas clulas fotossensveis, cada uma responsvel pela
percepo de uma cor.
Pgina 238
Pgina 239
(Eq. 9.1)
Pgina 240
No sistema RGB, o branco corresponde cor (255, 255, 255) e o preto cor (0,
0, 0). Por exemplo, o vermelho puro seria (255, 0, 0), o verde puro (0, 255, 0) e
o azul (0, 0, 255). Variaes nesses valores geram as outras cores do sistema
computacional de cores.
9.3 Histograma
Pgina 241
Pgina 242
f (t ) * h(t ) =
f ( ).h(t )d
(Eq. 9.2)
A Eq. 9.2 representa a convoluo de uma funo f(t) por uma funo g(t). Em
termos grficos, a convoluo pode ser representada como na Fig. 9.8 (onde as
funes esto representadas como retngulos apenas para facilitar o
entendimento). Uma das funes, h, rebatida e desloca-se pelo espao das
funes. No momento que ela comea a ter alguma interseo com a funo f a
rea dessa interseo calculada (resultado da integrao). Enquanto as
funes tiverem rea comum ao longo do deslocamento de h, o resultado
avaliado. A integrao feita de - a +, mas, claro, a rea s diferente de
zero enquanto h rea em comum.
Pgina 243
Pgina 244
No caso de imagens, o pixel a ser processado de deve ser casado com o centro
da matriz do filtro (Fig. 9.10). O resultado da filtragem para esse pixel ser o
somatrio do produto de cada valor da mscara pelo valor da imagem sob a
mscara.
w1 w2 w3
w4 w5 w6
w7 w8 w9
Quando o ponto w5 casar no pixel p1, suponha que os valores abaixo da matriz
do filtro tenham valores:
z1 z 2 z3
z 4 z5 z 6
z7
z8 z 9
Pgina 245
Pgina 246
Fig. 9.11. A imagem original (em cinza) estendida (parte em branco) para
poder ser processada pelo filtro (em destaque no canto superior esquerdo).
Dentre os filtros baseados em mscaras, os filtros lineares so os que tm as
maiores aplicaes prticas. Como definido, os filtros lineares no acrescentam
novas frequncias imagem. Vamos descrever esses filtros, exemplific-los e
discutir a funo deles em imagens. So eles: filtro passa-baixa, passa-alta e
passa-faixa.
1) Filtro Passa-Baixa
Teoricamente, esse filtro gerado por uma funo que tem valor 1 entre w e w
e zero fora desse intervalo (Fig. 9.12a). O filtro Box um exemplo de um filtro
passa baixa (Fig 9.12b). Como um filtro passa-baixa, sua funo deixar passar
as baixas frequncias (frequncias entre w e w) e eliminar as altas frequncias.
Na prtica, esse filtro tem um comportamento como o da Fig. 9.12c, onde ele, na
verdade, no elimina completamente as altas frequncias, mas as atenua.
a)
b)
Pgina 247
c)
Fig. 9.12. a) Forma de um filtro passa-baixa ideal, b) matriz de um filtro passabaixa (filtro Box) e c) forma de um filtro passa-baixa real.
O resultado da aplicao de um filtro passa-baixa em uma imagem seu
embaamento. Em imagens, as frequncias esto associadas a regies de
mudanas bruscas entre tons (como, por exemplo, uma passagem de branco
para preto). A atenuao dessas mudanas interpretada por nosso sistema
visual como um embaamento na imagem. A Fig. 9.13 ilustra essa idia. A Fig.
9.13a mostra uma regio de alta frequncia da imagem e a Fig. 9.13b apresenta
o resultado de uma filtragem passa-baixa.
a)
b)
Pgina 248
a)
b)
c)
a)
b)
Pgina 249
3) Filtro Passa-Faixa
Esse filtro permite a passagem de frequncias dentro de um intervalo e cortam
as frequncias fora dele (Fig. 9.16a). O filtro de Prewitt um exemplo de um
filtro passa-faixa (Fig 9.16b). Como um filtro passa-faixa, sua funo deixar
passar frequncias especficas da imagem. Na prtica, esse filtro tem um
comportamento como o da Fig. 9.16c.
a)
b)
c)
Fig. 9.16. a) Forma de um filtro passa-faixa ideal, b) matriz de um filtro passafaixa (filtro Prewitt detector de linhas horizontais) e c) forma de um filtro passafaixa real.
O resultado da aplicao de um filtro passa-faixa em uma imagem o destaque
de alguns componentes. Por exemplo, o filtro de Prewitt da Fig. 9.16b destaca
as componentes horizontais de uma imagem.
Alm da extenso da imagem, na implementao de uma filtragem digital devese considerar questes relacionadas a cores no-realizveis. O processo de
filtragem pode, por exemplo, gerar uma cor negativa ou maior que 255. Esse
fenmeno chamado de cor no-realizvel. Assim, preciso truncar o
resultado da filtragem para que as cores resultantes sejam sempre inteiras e
entre 0 e 255.
Pgina 250
Pgina 251
no
formato
GIF
(Graphic
Interchange
Format)
para
dicionrio
bsico
enviado
com
arquivo.
Durante
Pgina 252
Uma forma mais nova para gerar compresso atravs do uso de wavelets. A
decomposio wavelet gera um downsampling em cada nvel que, por definio,
j diminui a quantidade de dados. Assim, bastante natural que ela seja usada
como mecanismo para gerar compresso.
Pgina 253
Pgina 254
Pgina 255
Pgina 256
9.7 Exerccios
1. Diferencie os processos de amostragem e quantizao.
2. Sobre filtros digitais:
a. Como os filtros se classificam de maneira geral?
b. Como se classificam os filtros lineares? Explique o resultado da aplicao
de cada um desses tipos a uma imagem.
3. O que representa o histograma de uma imagem e cite, pelo menos, duas
caractersticas diferentes que podemos inferir de uma imagem olhando
apenas para seu histograma (ou seja, sem precisar visualizar a imagem).
4. Considere a imagem abaixo:
1
1
2
2
0
2
3
2
0
Pgina 257
Pgina 258
Pgina 259
Pgina 260
Pgina 261
Pgina 262
C=
Pgina 263
Organizam-se
os
smbolos
em
ordem
decrescente
de
suas
probabilidades;
Pgina 264
Pgina 265
e 011 (3 bits)
Assim, se no arquivo original, cada smbolo ocupava 8 bits, tnhamos uma
mensagem com 80 bits. Agora, apenas 16 bits so necessrios para codificar a
mensagem (sem contar o espao necessrio para armazenar a tabela de
codificao). O comprimento mdio desse cdigo 1,6.
Nesse exemplo, podemos observar algumas caractersticas do cdigo de
Huffman:
1) O cdigo gerado unicamente decodificvel e instantneo.
2) A codificao atribuiu para os smbolos de maior probabilidade os menores
cdigos (claro, observando, as condies para garantir o item 1 acima).
O cdigo de Huffman um algoritmo de compresso sem perda e esttico. Sua
codificao dita bottom-up j que podemos comparar a estrutura montada
como uma rvore invertida (a raiz embaixo) cuja codificao iria da raiz s
folhas. Existem algumas variaes do cdigo de Huffman como a verso para
multi-smbolos, o cdigo de Huffman adaptativo, o truncado e a verso
modificada.
O problema do cdigo de Huffman que, dependendo da quantidade de
smbolos no cdigo fonte, sua codificao pode atingir rapidamente grandes
quantidades de bits. Uma tabela de codificao deve ser anexada ao arquivo,
permitindo sua decodificao.
Uma variao no cdigo de Huffman a Codificao Aritmtica. Ela funciona
basicamente da mesma forma que o cdigo de Huffman, mas gera a codificao
baseando-se em intervalos ao invs de probabilidades. Cada smbolo da fonte
ser representado por um intervalo, onde, medida que o intervalo se torna
menor, o nmero de bits necessrio para especific-lo aumenta.
Pgina 266
10.2.2 Run-length
O algoritmo de run-length um dos mais simples. Ele apropriado para alguns
tipos de arquivos em condies especficas. Por exemplo, imagens em preto-ebranco com grandes quantidades de um dos tons, como uma imagem de um
documento onde a maior parte o branco do papel. O run-length armazena,
como o nome diz, comprimentos de carreiras. Sua codificao da forma:
<contador, smbolo>
onde o contador diz quantas vezes o smbolo se repete em sequncia. Por
exemplo, para a sequncia:
120 120 120 30 45 45 45 60
o resultado da codificao seria:
<3, 120> <1, 30> <3, 45> <1, 60>
Como dito antes, se o arquivo tem grandes repeties de um mesmo valor, essa
codificao pode se mostrar bastante eficiente. O run-length implementado em
uma verso do formato BMP para armazenamento de imagens (o BMP_RLE).
Pgina 267
Por exemplo, considere o dicionrio base abaixo (sem nos preocuparmos com o
cdigo que foi atribudo a cada smbolo da fonte):
X #1
Y #2
Z #3
W #4
e a seguinte mensagem M:
M = XYXZXYXW
Ao ler o primeiro smbolo da mensagem (X), o algoritmo verifica se esse smbolo
est no dicionrio. Se estiver, atribui a codificao (#1). Em seguida, o prximo
smbolo (Y) lido e codificado de acordo com o dicionrio (#2). Agora, o
algoritmo verifica se XY (o smbolo anterior completo concatenado com o atual)
faz parte do dicionrio. Se no faz parte, ele acrescentado com uma nova
codificao (por exemplo, #5). O dicionrio agora passa a ter essa entrada. O
processo prossegue, acrescentando novas entradas que passam a poderem ser
usadas na codificao. No entanto, apenas o dicionrio base armazenado
junto com a mensagem codificada. Ao decodificar, o dicionrio base utilizado e
estendido da mesma forma que foi feito na codificao.
Pgina 268
dos
mais
usados
atualmente.
Devido
melhoria
dos
recursos
Qualidade da Imagem
Pgina 269
so
milhares
de
imagens
compactados/descompactados.
Se,
(quadros
para
ou
frames)
imagens,
que
so
uma
Sada do compactador.
Pgina 270
Algumas reas do frame possuem a mesma cor que se espalha por mais de
um pixel (redundncia espacial);
Pgina 271
Pgina 272
onde
Pgina 273
menores
facilitando
computao
das
de
uma
mesma
imagem.
Os
ganhos
de
Pgina 274
Otimizao 2: os cossenos utilizados devem ser prcalculados e armazenados, realizando-se assim apenas
operaes aritmticas ao se calcular a frmula da
transformada.
Eliminao
dos
componentes
menos
significativos
Pgina 275
Diviso
inteira
dos
valores
por
um
coeficiente
de
Diviso
inteira
por
uma
matriz
de
coeficientes
de
DiVX
Pgina 276
Pgina 277
Pgina 278
10-20:1
20-30:1
30-50:1
Pgina 279
Pgina 280
Fig. 10.4. Leitura em zig-zag da matriz DCT para aplicao da codificao RunLength.
Pgina 281
S i = x k cos(
k =0
n
n
[ 2k + 1 + ]( 2i + 1)), i = 0,1,..., 1
2n
2
2
xk =
n / 2 1
i =0
S i cos(
n
[ 2k + 1 + ](2i + 1)), k = 0,1,..., n 1
2n
2
DivX
O DivX um codec de vdeo criado pela DivX, Inc. Ele foi produzido para ser
usado em compactao de vdeo digital, deixando os vdeos com qualidade,
apesar da alta compactao, utilizada para ocupar menos espao no Disco
rgido. Para alcanar tal compactao necessrio muito processamento, o que
pode fazer com que um computador tecnologicamente defasado demore para
Pgina 282
Pgina 283
Fig. 10.6. Som fricativo inaudvel que pode ser confundido com um silncio por
ter baixas amplitudes em parte dele.
Pgina 284
MP3
MP3 uma abreviao de MPEG 1 Layer-3 (camada 3). Trata-se de um padro
de arquivos digitais de udio estabelecido pelo Moving Picture Experts Group
(MPEG), grupo de trabalho de especialistas de Tecnologias da Informao
vinculado ao ISO e CEI. As camadas referem-se ao esquema de compresso
de udio do MPEG-1. Foram projetadas em nmero de 3, cada uma com
finalidades e capacidades diferentes. Enquanto a camada 1, que d menor
compresso, se destina a utilizao em ambientes de udio profissional
(estdios, emissoras de TV, etc) onde o nvel de perda de qualidade deve ser
mnimo devido necessidade de pr-processamento, a 3 se destina ao udio
que ser usado pelo cliente final. Como se espera que esse udio no sofrer
novos ciclos de processamento, a compresso pode ser menos conservadora e
aproveitar melhor as caractersticas psicoacsticas do som limitando-se apenas
pela qualidade desejada para o ouvido humano.
A compresso tpica da camada 1 de 2:1 enquanto a da 3 de 10:1.
importante lembrar que essa diferena da compresso no tem nada a ver com
uma camada ser mais avanado que o outro tecnologicamente, mas sim com o
objetivo da aplicao do udio ser processado.
Um erro comum confundir o MP3 com MPEG-3. MPEG-3 um formato morto,
pois o formato MPEG-4 o suplantou com muitas vantagens. Enquanto o MPEG-3
deveria ter sido um formato para compresso tanto de udio como de vdeo o
MP3 responde apenas pela compresso de udio do MPEG-1.
As taxas de compresso alcanadas pelo MP3 chegam a at 12 vezes,
dependendo da qualidade desejada. Para fazer isso o MP3 utiliza-se, alm das
tcnicas habituais de compresso, de estudos de psico-acstica, sendo que
estes permitem aproveitar-se das limitaes e imperfeies da audio humana.
A utilizao dos limites da audio humana baseia-se em trs princpios bsicos:
Pgina 285
Pgina 286
Pgina 287
Pgina 288
Exemplo:
>> info = aviinfo('video1.avi')
info =
Filename: 'D:\MATLABR2008b\work\video1.avi'
FileSize: 2997760
FileModDate: '03-mai-2010 19:53:44'
NumFrames: 13
FramesPerSecond: 15
Width: 320
Height: 240
ImageType: 'truecolor'
VideoCompression: 'none'
Quality: 4.2950e+007
NumColormapEntries: 0
Para acessar as informaes:
>> info.NumFrames
ans =
13
>> h = info.Height;
>> w = info.Width;
A leitura do arquivo de vdeo feita pelo comando aviread (arquivo AVI):
>> mov = aviread('video1.avi');
possvel acessar um frame especfico do arquivo de vdeo:
Pgina 289
Size
1x1
Bytes Class
Attributes
230648 struct
Pgina 290
Isso faz com que imagem seja inserida como frame i do arquivo de vdeo mov1
com mapa de cores especificado em map. Variando i criamos o arquivo de vdeo
a partir de diversas imagens.
O MatLab permite tambm o processamento de vdeo usando o mdulo
Simulink. As funes (para imagem e vdeo) podem ser acessadas atravs do
munu Vdeo and Image Processing Blockset conforme a Fig. 10.7.
Pgina 291
Pgina 292
Pgina 293
Um som pode ser gravado com a funo wavrecord que gera um arquivo do tipo
wav:
>> som = wavrecord (16000, 8000, 1, double);
Esse comando grava 16000 amostras com uma taxa de amostragem de 8 kHz e
o armazena no vetor som do tipo double. O parmetro 1 indica que a gravao
feita em apenas um canal (mono) e no em estreo. Para tocar o som, basta
usar o comando soundsc:
>> soundsc (som);
s vezes, importante informar a frequncia de amostragem:
>> soundsc (som, 8000);
O arquivo de som pode ser plotado em um grfico como um vetor comum:
Pgina 294
Pgina 295
Exemplo 1:
>> som = wavread(a_casa.wav);
>> plot (som);
Um grfico em formato mais padro pode ser obtido com as baixas frequncias
centralizadas:
>> plot (abs(fftshift(som_spec)));
Pgina 296
Pgina 297
Pgina 298
Mas esse grfico representa mesmo o sinal que criamos? Vamos observar
melhor o sinal quebrando ele em janelas e plotando-as como uma queda
dgua (waterfall) para ver como as frequncias mudam pelo tempo.
>> s = spectrogram(z, 1024);
>> waterfall(abs(s)');
Pgina 299
Pgina 300
Pgina 301
Pgina 302
Pgina 303
10.5 Exerccios
1. Implemente no MatLab o Cdigo de Huffman e aplique-o para compresso
do arquivo de voz sentence.wav.
2. Como podemos avaliar a qualidade de um algoritmo de compresso para
imagens estticas ou dinmicas (vdeos)?
3. No mesmo arquivo de voz, implemente a tcnica DPCM e apresente qual a
maior diferena entre tons adjacentes que ela possui. Nesse caso, voc acha
que o algoritmo seria eficiente para compresso ou no?
4. No MatLab, capture dois frames prximos do arquivo vipmen.avi e calcule
com PSNR a diferena entre os frames.
5. Usando o MatLab (funes dct2.m e idct2.m), calcule atravs do uso do
PSNR a perda provocada pelo uso da DCT na imagem lena.bmp.
6. Cite os princpios bsicos de funcionamento da compresso MP3, definidos
pela psicoacstica.
Pgina 304
Pgina 305
Pgina 306
Pgina 307
Pgina 308
- Baixo custo;
- Permitem comunicao em canais ruidosos;
- Maior segurana de informao (permite incluso de elementos de
criptografia).
O propsito do processamento digital pode ser:
Reduo de rudo
Para reduo de rudo, por exemplo, a filtragem digital do sinal usando filtros FIR
ou IIR pode trazer bons resultados. Vejamos o exemplo a seguir. Dado o sinal
de voz abaixo:
Pgina 309
plot(f, abs(spect(1:128)))/max(abs(spect(1:128)));
xlabel ('frequencia');
subplot(2,1,2);
filt_spect=fft(filt_sp, 256);
plot(f, abs(filt_spect(1:128))/max(abs(filt_spect(1:128))));
wavwrite (filt_sp, fs, 'casa1_firfilt.wav');
Gerando como resposta o seguinte sinal:
Pgina 310
Pgina 311
Pgina 312
Pgina 313
a)
Pgina 314
b)
Fig. 11.7. a) Sinal amostrado com uma taxa apropriada para sua recuperao e
b) o mesmo sinal amostrado de forma incorreta (baixa taxa de amostragem)
tornando impossvel uma recuperao fiel ao original.
Alm da amostragem, o sinal de voz passa por outro processo para ser
digitalizado: a quantizao. Na Fig. 11.8, podemos ver o sinal de entrada
contnuo, sendo inserido em um amostrador que cuida da discretizao do sinal
no tempo. O quantizador responsvel ento pela discretizao do sinal em
amplitude.
Pgina 315
Pgina 316
Pgina 317
a)
b)
Fig. 11.11. Quantizadores de 3 bits: a) mid-riser e b) mid-tread.
Pgina 318
Pgina 319
Pgina 320
Qn =
T [ x(m)]w(n m)
m =
(Eq.
11.1)
o sinal de voz, x(.), submetido a transformao T[ ], linear ou no, a qual pode
depender de um conjunto ajustvel de parmetros.
Pgina 321
E=
(m)
m =
Pgina 322
[ x(m).w(n m)]
En =
m =
En =
x (m) .h(n m)
2
m =
Pgina 323
| x(m) | w(n m)
Mn =
m =
Essa funo de aritmtica mais simples que a energia, porm tem menor
capacidade de diferenciao entre voz audvel e inaudvel.
Tanto para a Energia quanto para a Magnitude de Curta Durao para uma
janela de 20ms uma taxa de amostragem de 100 amostras/seg. adequada. A
janela no precisa ser restrita a qualquer funo comumente utilizada como
filtro. Ela tambm no precisa ser retangular; necessrio apenas que o filtro
seja suave e passa-baixa. Pode ser um filtro FIR ou IIR; sugere-se FIR, pois a
sada mais fcil de ser computada a uma baixa taxa de amostragem. A janela
no precisa ter dimenso finita; basta que a Transformada-Z seja uma funo
racional.
Por exemplo, se:
h(n) = an
=0
,n0
,n<0
H ( z) =
1
,
1 az 1
ROC = |z|>|a|
Pgina 324
Pgina 325
Fig. 11.16. Uma senide tem duas passagens pelo zero em um ciclo.
Os sinais de voz so sinais faixa-larga e, portanto, a interpretao da taxa mdia
de passagem pelo zero menos precisa. Estimativas grosseiras das
propriedades espectrais podem ser obtidas baseadas na taxa de passagem pelo
zero mdia em tempo curto.
Pode-se definir:
zn =
onde
sgn[x(m)] = 1, se x(n) 0
= -1, se x(n) < 0
e
w(n) = 1/(2N), para 0 n N-1
= 0, caso contrrio
O modelo para a produo da fala sugere que a energia dos sinais de voz est
concentrada abaixo de 3 kHz (340 Hz a 4 KHz) devido ao corte produzido pela
onda produzida na glote. A maior parte da energia para sinais de voz no
audveis de alta-frequncia: altas frequncias implicam uma taxa alta de
passagem pelo zero e baixas frequncias implicam numa taxa baixa de
passagem pelo zero. Assim, h uma correlao forte entre taxa de passagem
Pgina 326
(k ) =
x (m) x(m + k )
m =
Pgina 327
(k) = (k+P)
Ou seja, a autocorrelao de uma funo peridica tambm peridica com o
mesmo perodo. Outras propriedades importantes da funo de autocorrelao
so:
1) Ela uma funo par: (k) = (-k);
2) Ela alcana seu valor mximo quando k = 0; i.e.; |(k)|0, para todo k;
3) O valor de (0) igual Energia para sinais determinsticos ou potncia
mdia para sinais peridicos.
A funo de autocorrelao para tempo curto definida como:
Rn ( k ) =
x ( m ) w( n m ) x ( m + k ) w( n k m )
m =
%
% plot waveform
t=(0:length(x)-1)/fs;
subplot(2,1,1);
plot(t,x);
legend('Waveform');
Pgina 328
xlabel('Time (s)');
ylabel('Amplitude');
%
% calculate autocorrelation
r=xcorr(x,ms20,'coeff');
%
% plot autocorrelation
d=(-ms20:ms20)/fs;
% times of delays
subplot(2,1,2);
plot(d,r);
legend('Autocorrelation');
xlabel('Delay (s)');
ylabel('Correlation coeff.');
% Estimativa da frequencia fundamental
ms2=fs/1000;
ms20=fs/50;
Pgina 329
Pgina 330
ms20=fs/50;
%
% plotagem da forma de onda
t=(0:length(x)-1)/fs;
subplot(3,1,1);
plot(t,x);
legend('Waveform');
xlabel('Time (s)');
ylabel('Amplitude');
Y = fft(x);
% plotagem do espectro abaixo de 5000Hz
hz5000=5000*length(Y)/fs;
f=(0:hz5000)*fs/length(Y);
subplot(3,1,2);
plot(f,20*log10(abs(Y(1:length(f)))+eps));
legend('Spectrum');
xlabel('Frequency (Hz)');
ylabel('Magnitude (dB)');
% cepstrum
C=fft(log(abs(Y)+eps));
% plotagem entre 1ms (=1000Hz) e 20ms (=50Hz)
q=(ms1:ms20)/fs;
subplot(3,1,3);
plot(q,abs(C(ms1:ms20)));
legend('Cepstrum');
xlabel('Quefrency (s)');
ylabel('Amplitude');
[c,fx]=max(abs(C(ms1:ms20)));
fprintf('Fx=%gHz\n',fs/(ms1+fx-1));
Pgina 331
Pgina 332
Pgina 333
Pgina 334
11.4 Exerccios
1. Explique a tcnica temporal de processamento de voz de Energia de Curta
Durao, seguindo os seguintes passos:
a) Defina a equao Qn =
T [ x(m)]w(n m)
m =
x = sign(c(n)) * (c(n) + 1) * / 2
onde a funo sign(c(n)) igual a +1, se o primeiro bit de c(n) for igual a
zero, e igual a 1, se o primeiro bit de c(n) for 1. Para c(n) usada uma
representao em sinal-magnitude. Tal quantizador possui caractersticas de
um quantizador mid-riser? E mid-tread?
Pgina 335
(a
MATLAB
toolbox
for
speech
http://www.ee.ic.ac.uk/hp/staff/dmb/voicebox/voicebox.html
processing):