Escolar Documentos
Profissional Documentos
Cultura Documentos
Agradecimentos turma de Processamento Digital de Sinais dos cursos de Engenharia da Computao e Cincia da Computao de 2010.1: Adriano Damascena, Bernardo Fonseca, Daker Fernandes, Daniel Brito, Fernando Rodrigues, Gabriel Carvalho, Joo Carlos Procpio, Lucas Andr Paes, Luis Felipe Pereira, Onildo Ferraz Filho, Rafael Menezes, Renan Pires, Rodolpho de Siqueira, Rodrigo Perazzo, Thiago Lima e Thiago Henrique Fernandes.
Pgina 1
ndice
1. Processamento Digital de Sinais ......................................................................4 1.1 Principais Tipos de Sinais ...........................................................................5 1.2 Sistemas Discretos no Tempo.....................................................................6 1.3 Sistemas Lineares e Invariantes no Tempo ................................................8 1.4 Sistemas LTI como Filtros Seletores de Frequncia .................................11 1.5 Representao de Sequncias pela Transformada de Fourier .................15 1.5.1 Propriedades da Transformada de Fourier .........................................18 1.6 Cdigos do MatLab ...................................................................................19 1.7 Exerccios..................................................................................................27 1.8 Bibliografia Complementar ........................................................................30 2. A Transformada Z ...........................................................................................31 2.1 Propriedades da Transformada Z..............................................................33 2.2 Pares de Transformadas Z........................................................................36 2.3 Exemplos de Clculo da Transformada Z .................................................36 2.4 Propriedades da Regio de Convergncia................................................44 2.5 A Transformada Z Inversa.........................................................................45 2.6 Exerccios..................................................................................................54 2.7 Bibliografia Complementar ........................................................................56 3. Teoria da Amostragem ...................................................................................57 3.1 Teorema de Shannon................................................................................62 3.2 Re-Obteno do Sinal a partir de suas amostras......................................67 4. Filtros Digitais .................................................................................................70 4.1 Filtros Digitais............................................................................................72 4.2 Filtros FIR..................................................................................................76 4.2.1 Sistemas com Fase Linear .................................................................84 4.3 Filtros IIR ...................................................................................................95 4.4 Exerccios................................................................................................101 4.5 Bibliografia Complementar ......................................................................102 5. Tcnicas de projeto de filtros ........................................................................103 5.1 Projeto de Filtros FIR ..............................................................................106 5.1.1 Projeto usando janelas .....................................................................107 5.1.2 Tcnicas de Projeto por Amostragem em Frequncia ......................131 5.1.3 Projeto Equirriple timo....................................................................133 5.2 Projeto de Filtros IIR................................................................................136 5.2.1 Escala Relativa .................................................................................137 5.2.2 Caractersticas de Prottipos Analgicos .........................................140 5.3 Transformaes em Frequncia..............................................................149 5.4 Comparao entre Filtros FIR e IIR.........................................................151 5.5 Exerccios................................................................................................153 5.6 Bibliografia Complementar ......................................................................154 6. Transformada Discreta de Fourier ................................................................155 6.1 A Srie Discreta de Fourier .....................................................................156 6.2 A Transformada Discreta de Fourier .......................................................161 6.3 Propriedades da Transformada Discreta de Fourier ...............................163
Pgina 2
6.4 A Transformada Discreta Bi-Dimensional de Fourier ..............................166 6.5 Exerccios................................................................................................169 6.6 Bibliografia Complementar ......................................................................171 7. Transformada Rpida de Fourier (FFT- Fast Fourier Transform) .................172 7.1 Algoritmos Rpidos .................................................................................172 7.2 Algoritmo de Cooley-Tukey ou Decimao no Tempo ............................174 7.3 Outras FFTs ............................................................................................185 7.4 Exerccios................................................................................................187 7.5 Bibliografia Complementar ......................................................................188 8. Anlise Wavelet ............................................................................................189 8.1 A Transformada Wavelet.........................................................................192 8.2 Anlise em Multiresoluo.......................................................................196 8.3 Sobre os coeficientes das wavelets ........................................................199 8.4 Wavelets no MatLab................................................................................204 8.5 Exerccios................................................................................................211 8.6 Bibliografia Complementar ......................................................................213 9. Processamento Digital de Imagens ..............................................................214 9.1 Digitalizao ............................................................................................217 9.2 Sistema Computacional de Cores ...........................................................220 9.3 Histograma ..............................................................................................224 9.4 Filtragem de Imagens Digitais .................................................................226 9.5 Compresso de Imagens ........................................................................234 9.6 Processamento de Imagens no MatLab ..................................................236 9.7 Exerccios................................................................................................240 9.8 Bibliografia Complementar ......................................................................241 10. Tcnicas de Codificao de udio e Vdeo ................................................242 10.1 Teoria dos Cdigos ...............................................................................242 10.2 Algoritmos de Compresso ...................................................................246 10.2.1 Cdigo de Huffman .........................................................................247 10.2.2 Run-length ......................................................................................250 10.2.3 Algoritmo de Lempel-Ziv-Welch......................................................250 10.3 Algoritmos de codificao multimdia ....................................................251 10.3.1 Codificao de Vdeo......................................................................252 10.3.2 Codificao de udio ......................................................................266 10.4 Implementaes no MatLab ..................................................................271 10.4.1 Processamento de Vdeo no MatLab .................................................271 10.4.2 Processamento de udio no MatLab .................................................277 10.5 Exerccios..............................................................................................287 10.6 Bibliografia Complementar ....................................................................288 11. Processamento de Voz...............................................................................289 11.1 Amostragem e Quantizao ..................................................................296 11.2 Tcnicas Temporais para Processamento de Voz ................................303 11.2.1 Energia de Curta Durao ..............................................................305 11.2.2 Magnitude de Curta Durao..........................................................307 11.2.3. Taxa de Passagem pelo Zero........................................................308 11.2.4. Funo de Autocorrelao.............................................................310
Pgina 3
11.3 Anlise Cepstral ....................................................................................313 11.4 Exerccios..............................................................................................318 11.5 Bibliografia Complementar ....................................................................319
Pgina 4
Pgina 5
simo nmero da seqncia igual ao valor do sinal analgico xa(t) no tempo nT, i.e.: x[n] = xa(nT), - <n <
[ n] =
0, n 0 1, n = 0
Um dos mais importantes aspectos do impulso que uma seqncia arbitrria pode ser representada como uma soma de impulsos escalonados e deslocados. Por exemplo, a seqncia p[n] abaixo:
pode ser representada como: p[n] = 3.[n+3] + 2.[n + 1] + 4.[n - 2] 1.[n 3] De forma mais geral, qualquer seqncia x[n] pode ser representada como:
x[ n] =
k =
x[k ] [n k ]
1, n 0 u[n] = 0, n < 0
O degrau relaciona-se com o impulso como:
Pgina 6
u[ n] =
k =
[k ]
Uma forma alternativa de representar o degrau em termos de impulso obtida interpretando o degrau em termos de uma soma de impulsos deslocados. Isso pode ser expresso como:
u[ n] = [ n k ]
k =0
Por outro lado, o impulso relaciona-se com o degrau unitrio como: [n] = u[n] u[n 1] Uma seqncia exponencial importante na anlise de sistemas discretos e invariantes no tempo. A forma geral de uma seqncia exponencial dada por: x[n] = A.n
Fig. 1.1. Representao de um sistema discreto no tempo Alguns exemplos ilustram sistemas simples: 1) Sistema de atraso ideal: y[n] = x[n nd], - <n <
Pgina 7
A seguir, destacamos algumas importantes propriedades dos sistemas. 1) Um sistema dito sem memria (memoryless systems) se a sada y[n] a cada valor de n depende apenas da entrada x[n] no mesmo valor de n. Ex: y[n] = {x[n]}2 2) Um sistema linear se obedece ao princpio da superposio. Ou seja: T{a.x1[n] + b.x2[n]} = a.T{x1[n]} + b.T{x2[n]}
Ex: Acumulador:
y[n] =
k =
x[k ]
3) Um sistema invariante no tempo um sistema no qual um deslocamento no tempo (ou atraso) da seqncia de entrada gera um deslocamento correspondente na seqncia de sada. Ou seja, suponha um sistema que transforma uma seqncia de entrada x[n] na seqncia de sada y[n]. Se a seqncia de entrada sofre um deslocamento de n0, x[n] = x[n n0], ento a seqncia de sada torna-se y[n] = y[n n0]. Ex: Um sistema de atraso ideal um sistema invariante no tempo. Ex: O seguinte exemplo mostra um sistema que no invariante no tempo: y[n] = x[M.n], - <n <
Pgina 8
4) Um sistema dito causal se ele no depende de valores futuros da seqncia. Ou seja, o valor de y[n1] pode ser calculado apenas com valores de x[n] para n n1. Ex: Um sistema no causal: y[n] = x[n + 1] x[n] 5) Um sistema dito estvel se toda entrada limitada provoca uma sada limitada. Assim, se, para todo n, |x[n]| B < , para algum valor finito B, ento |y[n]| C < , para algum valor finito C.
x[ n] =
ento
k =
x[k ] [n k ]
y[ n] = T { x[ k ] [ n k ]}
k =
y[ n] =
k =
De acordo com essa equao, a resposta do sistema a qualquer entrada pode ser expressa em termos da resposta a [n k].
Pgina 9
A propriedade da invarincia no tempo implica que, se h[n] a resposta a [n], ento a resposta a [n - k] h[n k]. Com isso, podemos dizer que:
y[ n] =
k =
x[k ]h[n k ]
(Eq. 1.1)
Como conseqncia, um sistema linear invariante no tempo completamente descrito por sua resposta ao impulso. Essa equao conhecida como soma de convoluo (convolution sum) que pode ser representada pela notao: y[n] = x[n]*h[n] (Eq. 1.2)
Apesar da semelhana na notao, deve-se salientar que a soma de convoluo para sinais discretos no uma aproximao da integral de convoluo. Propriedades da soma de convoluo: 1) Comutatividade: x[n]*h[n] = h[n]*x[n] Isso pode ser facilmente justificvel com uma mudana de varivel na Eq. 1.1. Especificamente, podemos fazer m = n k. 2) Distributividade: x[n]*(h1[n] + h2[n]) = x[n]*h1[n] + x[n]*h2[n] 3) Conexo em Cascata
Pgina 10
4) Conexo em Paralelo
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=
n =
| h[n] | <
Para qualquer que seja a entrada x[n] de um sistema: x[n]* [n] = x[n] Assim, em geral, se um sistema linear invariante no tempo tem uma resposta ao impulso h[n], ento seu sistema inverso, se existir, tem resposta ao impulso hi[n] definida pela relao:
Pgina 11
h[n]*hi[n] = hi[n]*h[n] = [n] Uma classe importante de sistemas lineares invariantes no tempo consiste daqueles para os quais x[n] e y[n] se relacionam atravs de uma equao de diferenas de coeficientes constantes lineares de n-sima ordem da forma:
a
k =0
y[n k ] = bk x[n k ]
k =0
(Eq. 1.3)
Um exemplo de um tal sistema um acumulador definido pela seqncia cujo diagrama de blocos pode ser visto na figura abaixo:
Tal sistema representado pela equao de diferenas: y[n] = y[n 1] + x[n] ou y[n] - y[n 1] = x[n] Pela Eq. 1.3, temos: N = 1, a0 = 1, a1 = -1, M = 0 e b0 = 1. Assim, para cada valor de n a sada dada pela entrada x[n] somada com o valor anterior do acumulador, y[n 1].
Pgina 12
frequncia na sua entrada. A forma da filtragem definida pela resposta de frequncia H() que depende da escolha de parmetros do sistema (como os coeficientes do filtro). Assim, com uma escolha apropriada de parmetros, podemos projetar filtros seletores de frequncia que deixam passar sinais contendo componentes de frequncia em algumas bandas e atenuando sinais contendo componentes de frequncia em outras bandas. Em geral, um sistema LTI modifica o espectro do sinal de entrada X() de acordo com a resposta em frequncia H() que leva a um sinal de sada com espectro Y() = H()X(). De certa forma, H() atua como uma funo de peso nos diferentes componentes de frequncia do sinal de entrada. Assim, um sistema LTI pode ser visto como um filtro embora no bloqueie completamente qualquer componente de frequncia do sinal de entrada. Consequentemente, os termos sistema LTI e filtro so sinnimos e so normalmente usados sem distino. Um filtro um sistema LTI usado para desempenhar a funo de filtragem seletora de frequncia. Filtragem usada em processamento digital de sinais em uma grande variedade de formas, como remoo de rudo, equalizao, anlise espectral de sinais, etc. Filtros so normalmente classificados de acordo com suas caractersticas no domnio da frequncia como passa-baixa, passa-alta, passa-faixa e rejeita-faixa. As caractersticas de resposta em magnitude ideais desses tipos de filtros esto ilustradas na Fig. 1.2. Esses filtros ideais tm caractersticas de ganho constante na banda de passagem (normalmente, tomados como unitrios) e ganho zero na banda de corte. Mais detalhes sobre filtros digitais e formas de projeto sero vistos nos Captulos 4 e 5.
Pgina 13
Fig. 1.2. Resposta em magnitude para alguns filtros seletores de frequncia discretos no tempo.
Pgina 14
Outra caracterstica de um filtro ideal uma resposta de fase linear. Considere que um sinal {x[n]} com componentes de frequncia dentro da faixa de 1< <2 passa por um filtro com resposta em frequncia:
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
g() chamado de atraso de grupo (group delay) do filtro. Entendemos g() como o atraso de tempo que os componentes de frequncia de um sinal so
Pgina 15
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.
1 x[n] = 2
X (e j )e jn d
(Eq. 1.4)
X (e ) =
n =
x[n]e
j n
(Eq. 1.5)
A Eq. 1.4 conhecida como a Transformada Inversa de Fourier, enquanto a Eq. 1.5 a Transformada de Fourier. Em geral, a Transformada de Fourier uma funo complexa em . Como na resposta freqncia, algumas vezes, pode-se expressar X(ej) na forma: X(ej) = XR(ej) + j.XI(ej)
Pgina 16
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 seqncia 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 m x[m]e e d = x[n] =
1 x[n] = x[m] 2 m =
j ( n m )
1 2
j ( n m )
sin( (n m)) 1, m = n d = = ( n m) 0, m n
= [ n m]
Pgina 17
Assim:
x[n] =
Exemplo 1: Seja x[n] = anu[n]. A TF dada por:
m =
x[m] [n m] = x[n]
X (e ) =
jw
n =
x[n]e
jwn
= a e
n n =0
jwn
= ( ae jw ) n =
n=0
1 1 ae jw
OBS:
n
n =0
1 1
, para || < 1
Exemplo 2: Vamos calcular a resposta ao impulso de um filtro passa-baixa ideal cuja resposta em freqncia :
A resposta o impulso hLPF[n] pode ser encontrada atravs da Transformada Inversa de Fourier:
Pgina 18
1 hLPF [n] = 2
H LPF (e )e
jw
jwn
1 dw = 2
wc
wc
e jwn dw
hLPF [n] =
1 2
X (e
)Y (e j ( w ) )d
Pgina 19
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]');
Pgina 20
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);
2. x[n] = n[u[n] u[n 10]] + 10e-0.3(n 10)[u[n 10] u[n 20]], 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]');
Pgina 21
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;
Pgina 22
Deslocamento y[n] = x[n k] function [y,n] = sigshift(x, m, n0) n = m + n0; y = x; Inverso y[n] = x[-n] function [y,n] = sigfold(x,n) y = fliplr(x); n = -fliplr(n); Exemplo: Seja x[n] = {1, 2, 3, 4, 5, 6, 7, 6, 5, 4, 3, 2, 1}. O valor em negrito corresponde ao centro da sequncia. Sobre as sequncias, temos que: >> n = -2:10; >> x = [1:7, 6:-1:1]; a) Plote x1[n] = 2x(n 5) 3x[n + 4]. >> [x11, n11] = sigshift(x, n, 5); >> [x12, n12] = sigshift(x, n, -4); >> [x1, n1] = sigadd(2*x11,n11,-3*x12, n12); >> stem (n1, x1); title(Sequencia); xlabel (n); ylabel (x1(n));
Pgina 23
b) Plote x2[n] = x[3 n] + x[n].x[n 2] >> [x21, n21] = sigfold(x, n); >> [x21, n21] = sigshift(x21, n21,3); >> [x22, n22] = sigshift(x, n,2); >> [x22, n22] = sigmult(x, n, x22, n22); >> [x2, n2] = sigadd(x21, n21, x22, n22); >> stem (n2, x2); title('Sequencia'); >> xlabel ('n'); ylabel ('x2(n)');
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
onde, novamente, os termos em negrito indicam a origem do eixo das abscissas. As sequncias podem ser vistas abaixo:
x[n]
h[n]
Pgina 24
Podemos usar a funo conv do MatLab diretamente: >> x = [3, 11, 7, 0, -1, 4, 2]; >> h = [2, 3, 0, -5, 2, 1]; >> y = conv (x, h); y= 6 31 47 6 -51 -5 41 18 -22 -3 8 2
O problema do uso da funo conv que no sabemos, na resposta, onde est a origem da sequncia. Para tanto, vamos criar uma nova funo: function [y, ny] = conv_m (x, nx, h, nh) nyb = nx(1) + nh(1); nye = nx(length(x)) + nh(length(h)); ny = [nyb:nye]; y = conv(h, x); >> x = [3, 11, 7, 0, -1, 4, 2]; >> nx = [-3:3]; >> h = [2, 3, 0, -5, 2, 1]; >> nh = [-1:4]; >> [y, ny] = conv_m (x, nx, h, nh) y= ny = 6 -4 31 -3 47 -2 6 -51 -1 0 -5 1 41 2 18 -22 3 4 5 -3 6 8 7 2
Pgina 25
Equaes de Diferenas e Resposta ao Impulso Exemplo: Dada a seguinte equao de diferenas: y[n] y[n 1] + 0.9y[n 2] = x[n], para todo n
a) Calcule e plote sua resposta ao impulso h[n] para n = -20,.., 100. Como vimos anteriormente, uma equao de diferenas da forma:
a
k =0
y[n k ] = bk x[n k ]
k =0
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 26
b) Calcule e plote sua resposta ao degrau s[n] para n = -20,.., 100. No MatLab, fazemos: >> x = stepseq(0, -20, 120); >> n = [-20:120]; >> h = filter(b, a, x); >> stem(n, h); title('Resposta ao degrau'); xlabel('n'); ylabel('s[n]');
S=
n =
| h[n] | <
Assim, no MatLab, basta fazermos: >> sum(abs(h)) Ans = 14.8785 Logo, o sistema estvel.
Pgina 27
1.7 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], b. T(x[n]) = nk=n0 x[k] c. T(x[n]) = x[n n0] d. T(x[n]) = exp(x[n]) e. T(x[n]) = a.x[n] + b, 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. a e b nmeros reais com g[n] dado
Pgina 28
a) Determine se o sistema pode ser linear. b) Se a entrada x[n] do sistema um impulso ([n]), qual a sada y[n]? c) Determine a relao entre a entrada e a sada do sistema. 5. Para cada par de sequncias abaixo, use convoluo discreta para encontrar a resposta entrada x[n] do sistema linear invariante no tempo com resposta ao impulso h[n]. a)
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 < n0, ento y[n] = 0, para n < n0. a) Se x[n] = [n], determine y[n] para todo n. b) O sistema linear? c) O sistema invariante no tempo?
Pgina 29
7. Plote a seguintes sequncias no MatLab: a) x[n] = n2.(u[n + 5] u[n 6]) + 10.[n], b) x[n] = 20.(0,5)n.(u[n 4] u[n - 10]), -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] x2[n] = 2.[n 2] + 5.u[n + 10] x3[n] = 5.u[n + 2] 6.u[n 3] mostre que a convoluo linear tem as seguintes propriedades como vlidas: Comutatividade: x1[n]*x2[n] = x2[n]*x1[n] Associatividade: (x1[n]*x2[n])*x3[n] = x1[n]*(x2[n]*x3[n]) Distributividade: x1[n]*(x2[n] + x3[n]) = x1[n]*x2[n] + x1[n]*x3[n]) Identidade: x[n]* [n n0] = x[n n0] Use a funo conv_m.m apresentada anteriormente. 10. A operao de dilatao de sinal (ou decimao ou downsampling) definida por: y[n] = x[nM] na qual a sequncia de entrada down-sampled por um fator inteiro M. Por exemplo, se : x[n] = {...., -2, 4, 3, -6, 5, -1, 8,...} ento a sequncia down-sampled por um fator de 2 dada por: y[n] = {..., -2, 3, 5, 8, ..} Escreva uma funo no MatLab que execute essa dilatao. A funo deve ser da forma: function [y, n] = dnsample(x, n, M) Cuidado com a origem do eixo!!
Pgina 30
Pgina 31
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 seqncia dada por:
X (e ) =
jw
n =
x[n]e
jwn
X ( z) =
n =
x[n]z
X ( z ) = x[ n] z n
n =0
Notadamente, h uma relao entre a TZ e a TF. Se z uma varivel complexa, z pode ser escrita como ejw = cos(w) + j.sen(w). Nesse caso, a TZ transforma-se na TF. De forma mais geral, se z = r.ejw, sua representao grfica corresponde ao crculo no Plano imaginrio (chamado de Plano-Z). Se esse crculo tem raio igual a 1, ento temos a condio da TZ = TF (Fig. 2.1). Assim, a TZ calculada no crculo unitrio igual TF. A Transformada Z no converge para todos os valores de Z. Onde a TZ converge chamada de regio de convergncia (ROC Region of Convergence). Para garantir a convergncia preciso que:
| x[n]z
n =0
|<
Assim, possvel que TZ convirja mesmo se a TF no convergir. Para a TF convergir, a ROC da TZ deve conter o crculo unitrio. Uma transformada Z s est completamente definida se sua ROC estiver determinada.
Pgina 32
Fig. 2.1. Plano Z: representao grfica da transformada Z no plano complexo. No crculo unitrio, a transformada Z reduz-se transformada de Fourier. A srie definida pela TZ chamada de srie de Laurent. Uma tal srie representa uma funo contnua em qualquer ponto dentro da regio de convergncia. Assim, a TZ e todas as suas derivadas devem ser funes contnuas de z na ROC. Isso implica que, se a regio de convergncia uniforme inclui o crculo unitrio, ento a TF e suas derivadas com respeito a w so funes contnuas de w. Alm disso, a seqncia deve ser absolutamente somvel, i.e., uma seqncia estvel. Entre as mais teis e importantes TZs esto aquelas para as quais X(z) uma funo racional dentro da regio de convergncia, i.e.:
X ( z) =
P( z ) Q( z )
onde P(z) e Q(z) so polinmios em z. Os valores de z que fazem X(z) = 0 so chamados de zeros de X(z). Os valores de z para os quais X(z) tende a infinito so chamados de plos de X(z). Os plos de X(z) so as razes do polinmio do denominador.
Pgina 33
X ( z) =
n =
x[n]z
1
X ( z) =
=
n =
n =
ax [n]z
1
n =
+ bx2 [ n] z n =
+ b x2 [n]z n
n =
n =
ax [n]z
1
n =
bx [n]z
2
= a x1[n]z
= 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) =
n =
x[n n ]z
0
Fazendo m = n n0:
Y ( z) =
m =
x[m]z
( m +n 0 )
m =
x[m]z
.z
n0
=z
n0
. x[m]z m
m =
Y ( z ) = z n0 . X ( z )
Pgina 34
c) Multiplicao por uma exponencial discreta: anx[n] X(z/a), ROC = |a|ROCX Comentrios: Essa propriedade observvel substituindo anx[n] na definio de TZ:
X ( z) =
n =
x[n]z
n =
x[ n]z n
Como conseqncia disso, todas as posies de plos e zeros so escalonadas por um fator de a, j que, se X(z) tiver um plo em z = z1, X(a-1z) ter um plo em z = a.z1. Se a for um nmero real, essa propriedade pode ser entendida como uma compresso ou expanso do plano Z. d) Convoluo no tempo: x1[n]*x2[n] X1(z).X2(z) , ROC contm ROCx1 ROCx2 Comentrios: Seja:
y[ n] =
Tal que:
k =
x [k ]x [n k ]
1 2
Y ( z) =
n =
y[n]z
= x1 [k ]x 2 [n k ] z n n = k =
Se mudarmos a ordem dos somatrios:
Y ( z) =
k =
x1[k ] x2 [n k ]z n
n =
Pgina 35
Y ( z ) = x1 [k ] x 2 [m]z m z k 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) =
n =
x[n]z
. (-z)
f) Reverso no tempo: x[-n] X(z-1), ROC = 1/ROCX Comentrios: Novamente, a definio de TZ prova esta propriedade:
X ( z) =
n =
x[n]z
Pgina 36
X ( z) =
m =
x[m]z
m =
x[m]( z
1 m
= X ( z 1 )
Pgina 37
X ( z) =
ROC:
n =
x[n]z
n =
u[n]z
= a z
n n =0
= (az 1 ) n
n =0
X ( z ) = (az 1 ) n =
n =0
1 z = , | z |>| a | 1 1 az za
Para a = 1:
x[n] = u[n] Z X ( z ) =
1 , | z |> 1 1 1 z
Observamos que, para a = 1, a ROC no contm o crculo unitrio. Logo, a TF para essa seqncia no converge.
Pgina 38
X ( z) =
n =
x[n]z
1 n =
=
n
n =
a u[n 1]z
n
= a nu[ n 1]z n
n =
X ( z) = a z
n
= a z = 1 ( a 1 z ) n
n n n =1 n =0
X ( z ) = 1 ( a 1 z ) n = 1
n =0
1 z = , | z |<| a | 1 1 a z z a
Pgina 39
X ( z) =
n =
x[n]z
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 = n = 2
1 n 1 n X ( z ) = z + z 3 n=0 2 n=0
1 1 1 1 X ( z ) = z + z n=0 3 n=0 2
(i) ROC(i) = |(1/2).z-1| < 1 |z| > 1/2 ROC(ii) = |(-1/3).z-1| < 1 |z| > 1/3 ROC = ROC(i) ROC(ii) = |z| > 1/2
(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.
Pgina 40
X ( z) =
n =
x[n]z
n 1 n 1 = u[ n] u[ n 1] z n 2 n = 3
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 1 1 X ( z ) = z 1 + z 3 n=0 n = 0 2
n 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 41
ROC(i)
ROC(ii)
ROC:
X ( z) =
1 1 2z 1 1+ = + 1 1 2 z 1 + 1 z 1 1 2 z 1 + z 1 3 3
Pgina 42
X ( z) =
n =
x[n]z
= 1. z 0 = 1
X ( z) =
n =
x[n]z
n =
[n n ]z
0
= z n0
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:
Pgina 43
z[(0,5) n cos(
n
3
)u[n]] =
Assim:
O seguinte procedimento no MatLab pode ajudar a verificar se a transformada est correta. Para tanto, vamos calcular as primeiras 8 amostras da sequncia x[n] correspondente a X(z): >> b = [0, 0, 0, 0.25, -0.5, 0.0625]; >> a = [1, -1, 0.75, -0.25, 0.0625]; >> [delta, n] = impseq(0,0,7) delta = 1 0 0 0 0 0 0 0 n= 0 1 2 3 4 5 6 7 >> x = filter(b, a, delta) % checar a sequncia x= 0 0 0 0.2500 -0.2500 -0.3750 -0.1250
0.0781
>> x = [(n-2).*(1/2).^(n-2).*cos(pi*(n-2)/3)].*stepseq(2, 0, 7) % sequncia original x= 0 0 0 0.2500 -0.2500 -0.3750 -0.1250 0.0781 Conferindo com a sequncia gerada pelo processo de filtragem.
Pgina 44
6) Se x[n] no causal (left-sided), a ROC extende-se para uma regio menor que o menor plo at zero.
Pgina 45
7) Se x[n] uma seqncia com componentes parte causal e parte no-causal, ento a ROC um anel.
X ( z) =
n =
x[n]z
Suponha que multiplicamos ambos os lados da transformada por zk-1 e integremos os dois lados sobre um contorno fechado dentro da ROC de X(z) que inclui a origem. Tal contorno pode ser visto na Figura 2.2. Assim, temos:
X ( z) z
k 1
dz =
C n =
x[n]z
k 1 n
dz
(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:
Pgina 46
X ( z) z
k 1
dz =
n =
x[n] z
C
k 1 n
dz
(2)
1, n = k 1 k 1 n z dz = 0, n k 2j C
(2) reduz-se a 2j.x[k] e assim a frmula inversa alcanada:
(3)
onde C qualquer contorno que inclui a origem. Aplicando (3), o lado direito de
x[k ] =
1 X ( z ) z k 1dz 2j C
(4)
Fig. 2.2. Contorno C para a integral da transformada Z inversa. Essa a inversa da transformada Z para uma dada seqncia. No entanto, ns no precisaremos usar essa inverso j que dentro de sinais e sistemas, as transformadas Z so funes racionais (i.e., razo entre dois polinmios). Para
Pgina 47
tais transformadas, h mtodos mais simples de inverso que envolvem tabelas conhecidas e mtodos mais simples. Os principais mtodos so: - Mtodo da inspeo - Expanso em Fraes Parciais - Expanso em Sries de Potncias O mtodo da inspeo o mais simples e consiste em apenas observar a transformada e ver se ela da forma de alguma TZ conhecida. Por exemplo, dado:
X ( z) =
1 1 1 z 1 2
|z|>
Por observao, sabemos que: x[n] = -()nu[-n 1] Notadamente, o mtodo da inspeo no o mais apropriado para calcular TZs inversas mais complexas. Para ver como obter uma expanso em fraes parciais, vamos assumir que X(z) pode ser expressa como uma razo de polinmios em z-1, i.e.,
X ( z) =
bk z k
a
k =0
r
k =0 N
z k
X ( z) =
Br z
Ak 1 k =1 1 d k z
Pgina 48
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
=
Logo:
B0 (1 z 1
3 1 1 ( B0 + A1 + A2 ) + z 1 ( B0 A1 A2 ) + z 2 ( B0 ) 2 2 2 X ( z) = = 1 1 (1 z )(1 z 1 ) 2
1 + 2 z 1 + z 2 = 1 (1 z 1 )(1 z 1 ) 2
Assim, temos:
B0 + A1 + A2 = 1
Pgina 49
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 1 1 3 A A = 2 A1 + A2 = 5 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
A expanso em srie de potncias aplicada quando a transformada Z um polinmio da forma:
X ( z) =
n =
x[n]z
Isso ocorre, principalmente, se a TZ uma seqncia finita. Por exemplo, considere que a TZ de uma seqncia x[n] da forma:
X ( z ) = z 2 (1
1 1 z )(1 + z 1 )(1 z 1 ) 2
Pgina 50
Uma expanso em fraes parciais para esse caso no apropriada. No entanto, efetuando os produtos, podemos reduzir a expresso a:
X ( z) = z 2
que equivale seqncia:
1 1 z 1 + z 1 2 2
X ( z )=
de z-1:
z 3z 2 4 z + 1
Primeiro, vamos re-arranjar X(z) tal que ela se torne uma funo em potncias
z 1 0 + z 1 X ( z )= = 1 2 3 4z + z 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 C=
1
[]
Para mais informao sobre a funo residuez, digite help residuez no MatLab.
Pgina 51
que corresponde a:
X ( z) =
0,5 1 1 z
0,5 1 1 z 1 3
De maneira similar, podemos voltar forma anterior: >> [b, a] = residuez(R, p, C) b= -0.0000 a= 1.0000 -1.3333 que corresponde a: 0.3333 0.3333
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. Exemplo 10: Calcule a transformada Z inversa de:
X ( z) =
1 (1 0,9 z 1 ) 2 (1 + 0,9 z 1 ) ,
|z|>0,9
Podemos calcular o polinmio no denominador assim como os resduos usando MatLab: >> b = 1; >> a = poly([-0.9 -0.9 0.9]) % calcula os coeficientes do polinmio que tem essas razes a= 1.0000 0.9000 -0.8100 -0.7290
Pgina 52
>> [R, p, C] = residuez(b, a) R= 0.2500 0.2500 - 0.0000i 0.5000 + 0.0000i p= 0.9000 -0.9000 + 0.0000i -0.9000 - 0.0000i C= [] Isso significa que X(z) pode ser expandido em fraes parciais como:
X ( z) =
5 5 5 + (n + 1)(0,9) n+1 u[n] (n + 1)(0,9) n+1 u[n + 1] = (n + 1)(0,9) n+1 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
Pgina 53
Pgina 54
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 + z 1 2
1 , 1 1 1+ z 2
1
b. X ( z ) =
1 1 z 2 , c. X ( z ) = 3 1 1 2 1+ z + z 4 8
Pgina 55
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 X 1 ( z) = 1 z 1 + 0,81z 2
Pgina 56
Pgina 57
3. Teoria 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 seqncias 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 seqncia 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)
Na Eq. 3.1, T chamado de perodo de amostragem e sua inversa, fs = 1/T, a freqncia de amostragem, medida em amostras por segundo. Referimo-nos a um sistema que implementa a operao da Eq. 3.1 como um conversor ideal contnuo-para-discreto (C/D) no tempo. Na prtica, a operao
Pgina 58
de amostragem implementada por um conversor analgico-para-digital (A/D). Tais sistemas podem ser vistos como aproximaes de conversores C/D ideais. Na implementao ou escolha de um conversor A/D deve-se considerar a quantizao da sada, linearidade, a necessidade de circuitos sample-and-hold e limitaes na taxa de amostragem. Em geral, a amostragem um processo no-inversvel. Ou seja, dada uma seqncia x[n], no possvel reconstruir o sinal original xc(t). Muitos sinais diferentes podem gerar a mesma seqncia de amostras de sada. conveniente representarmos matematicamente o processo de amostragem, dividindo-o em duas partes conforme a Fig. 3.2. O processo consiste de um trem de impulsos seguido de uma converso desse trem em uma seqncia. Na Fig. 3.2, a diferena fundamental entre xs(t) e x[n] que xs(t) um sinal contnuo com valores zero exceto nos inteiros mltiplos de T. x[n], por outro lado, no possui informao explcita sobre a taxa de amostragem e um sinal onde as regies que no representam valores inteiros no tm valor definido. So muitas as razes para o aumento no uso de sistemas digitais: 1. Muitas informaes (ou dados) esto nessa forma, e.g. entrada/sada de computadores, sinais de controle digital, etc. 2. A disponibilidade de componentes pequenos, confiveis e de baixo custo, principalmente, com o aumento da escala de integrao dos circuitos integrados. 3. Relativa simplicidade no projeto de circuitos e facilidade de
Pgina 59
Fig. 3.2. Amostragem com um trem de impulsos peridicos seguida de uma converso para uma seqncia discreta no tempo. a) Viso geral do sistema; b) xc(t) (sinal original no tempo contnuo) e xs(t); c) a seqncia x[n] de sada. 4. Ampla utilizao de computadores digitais no processamento de todo tipo de dados e sinais. 5. Armazenamento de sinais realizado de modo simples e econmico (simplicidade das memrias digitais) 6. Crescente uso e disponibilidade de tcnicas de processamento digital de sinais (DSP).
Pgina 60
7. Fidelidade em transmisses longas devido ao uso de estaes repetidoras regenerativas. 8. Flexibilidade do formato digital que permite: a. Combinao em um mesmo canal de uma variedade de diferentes trfegos (telgrafo, dados, voz, imagem, vdeo, etc); b. Multiplexao feita de forma simples e econmica; c. Transmisso com velocidade ajustvel; rpida ou lenta em funo do trfego e/ou qualidade exigidas. 9. Uso de parte do sinal digital para controlar o progresso do sinal atravs do sistema (ex: cabealho). 10. Possibilidade da codificao (teoria da informao): a. Codificao da fonte, reduzindo redundncia, isto , compactando os dados; b. Codificao 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 61
Na converso analgico-digital necessrio colher-se um nmero discreto de amostras de um sinal contnuo. O problema crucial na amostragem est com o nmero de amostras/seg devem ser colhidas. Um nmero muito pequeno de amostras pode resultar em uma representao demasiadamente pobre do sinal. A anlise quantitativa acerca desse problema estudada pelo Teorema de Shannon-Nyquist. A princpio, pode-se imaginar que, no processo de amostragem de um sinal analgico, h sempre perda de informao e que essa perda tanto menor quanto maior a taxa de amostragem utilizada. Entretanto, o teorema de Shannon mostra que isto nem sempre verdade. O teorema estabelece que sob certas condies, as amostras de um sinal podem conter precisamente toda a informao a ele associada. Isto significa que o sinal pode ser perfeitamente recuperado a partir de amostras colhidas sem nenhuma aproximao. O estudo sobre o teorema da amostragem aplicado a sinais banda limitado, isto , aqueles que no possuem componentes espectrais para freqncia acima de uma dada freqncia (Fig. 3.3).
Pgina 62
Embora essa condio no seja rigorosamente verificada, ela bastante til em termos prticos.
Prova: Se as amostras so obtidas a cada Ts segundos, considera-se ento um trem de impulsos Ts(t)
Ts (t ) =
n =
(t nTs )
f s (t ) = f (t ). Ts (t ) =
f(nTs), n = 0, 1, 2, 3, ...., pois
n =
f (t ). (t nTs)
f s (t ) =
n =
f (nTs). (t nTs)
Toda a informao de um sinal banda limitada em fm Hz est contida nas amostras colhidas em intervalos uniformes menores que fm Hz. Os pares sinal e transformada envolvidos no processo podem ser vistos na Fig. 3.4.
Pgina 63
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 freqncia: 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 =
Pgina 64
w 1 Fs ( w) = F ( w) * ws ( w nwS ) = s 2 2 n =
n =
F (w) (w nw
s
1 Fs ( w) = Ts
e, finalmente,
n =
1 Fs ( w) = Ts
n =
F (w nw
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 freqncia. A fig. 3.5 apresenta trs casos onde o valor de ws maior, igual ou menor a wm (freqncia 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 65
a)
b)
c)
d) Fig. 3.5. a) Sinal original banda limitado em wm; resultado no domnio da freqncias de amostragens com: b) ws > 2wm, c) ws = 2wm, d) ws < 2wm (sobreposio de sinais aliasing).
Pgina 66
Fig. 3.6. Recuperao do sinal original com um filtro passa-baixa. Para recuperao do sinal com um FPB sem distores, preciso que: ws 2wm ou seja 2/Ts 2.2fm Ts 1/(2fm) seg O limite 1/Ts = 2fm chamado de taxa de Nyquist. Valores de Ts que no atendam a essa condio podem provocar diversas distores no sinal, como:
Ganho nas altas freqncias Perda nas altas freqncias Modulao das freqncias do sinal original 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 67
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 68
A seguir, vamos analisar o processo de re-obteno do sinal no domnio do tempo: f(t) F(w) = Fs(w).Ts. (w/(2wm)) O uso do teorema da convoluo no tempo indica que f(t) = F-1(Fs(w))*F-1(Ts. (w/(2wm))) Utilizando os pares de transformadas: fs(t) Fs(w) (wm/) Sa(wmt) (w/(2wm)) onde sa(t) a chamada funo sample e tem a forma sen(x)/x, tem-se f(t) = fs(t)*Ts(wm/)Sa(wmt) logo
n =
f (nT )[ (t nT ) * Sa(w t )]
s s m
f (t ) = 2 f m .Ts
n =
f (nT ) Sa(w
s
(t nTs ))
f (t ) =
n =
f (2 f
n
m
) Sa( wm t n )
Como o sinal recomposto atravs das amostras, observa-se que f(t) corresponde superposio de vrias funes sample deslocadas, centradas em 0, T, 2T, .... (Fig. 3.9).
Pgina 69
Fig. 3.9. Interpolao das amostras por filtro passa-baixa. Observaes a) Nos pontos de amostragem nT, o valor correto de f(t) f(nT). Em T = 0, todas as funes sample se anulam, exceto aquele centrado em t=0, cujo valor f(0). Em t=T apenas a sample a centrada no nula, e assim por diante. b) Nos instantes diferentes de nT, as samples somam desde - a + e reconstituem o valor de f(t) no ponto analisado por interpolao.
Pgina 70
4. Filtros Digitais
Um sistema discreto no tempo definido matematicamente como uma transformao que mapeia uma seqncia de entrada x[n] em uma seqncia de sada y[n]. Isso pode ser denotado por: y[n]=T{x[n]} como representado na Fig. 4.1.
Fig. 4.1. Representao de um sistema discreto no tempo Uma classe importante de sistemas consiste naqueles que so lineares e invariantes no tempo. Os sistemas lineares so aqueles que obedecem ao princpio da superposio. Se a propriedade da linearidade combinada com a representao de uma seqncia geral como uma combinao de impulsos, ento um sistema linear pode ser completamente caracterizado pela sua resposta ao impulso. Seja hk[n] a resposta do sistema a [n k]. Assim, como:
x[ n] =
ento
k =
x[k ] [n k ]
y[ n] = T { x[ k ] [ n k ]}
k =
y[ n] =
k =
De acordo com essa equao, a resposta do sistema a qualquer entrada pode ser expressa em termos da resposta a [n k] (o impulso).
Pgina 71
A propriedade da invarincia no tempo implica que, se h[n] a resposta a [n], ento a resposta a [n - k] h[n k]. Com isso, podemos dizer que:
y[ n] =
k =
x[k ]h[n k ]
(Eq. 4.1)
Como conseqncia, um sistema linear invariante no tempo completamente descrito por sua resposta ao impulso. Essa equao conhecida como soma de convoluo (convolution sum) que pode ser representada pela notao: y[n] = x[n]*h[n] (Eq. 4.2)
Apesar da semelhana na notao, deve-se salientar que a soma de convoluo para sinais discretos no uma aproximao da integral de convoluo. Para qualquer que seja a entrada x[n] de um sistema: x[n]* [n] = x[n] Assim, em geral, se um sistema linear invariante no tempo tem uma resposta ao impulso h[n], ento seus sistema inverso, se existir, tem resposta ao impulso hi[n] definida pela relao: h[n]*hi[n] = hi[n]*h[n] = [n] Uma classe importante de sistemas lineares invariantes no tempo consiste daqueles para os quais x[n] e y[n] se relacionam atravs de uma equao de diferenas de coeficientes constantes lineares de n-sima ordem da forma:
a
k =0
y[n k ] = bk x[n k ]
k =0
(Eq. 4.3)
Um exemplo de um tal sistema um acumulador definido pela seqncia cujo diagrama de blocos pode ser visto na figura abaixo:
Pgina 72
Esse sistema representado pela equao de diferenas: y[n] = y[n 1] + x[n] ou y[n] - y[n 1] = x[n] Pela Eq. 4.3, temos: N = 1, a0 = 1, a1 = -1, M = 0 e b0 = 1.
Pgina 73
Fig. 4.2. Retardo (delay) aplicado a uma seqncia x[n]. A representao mostrada na Fig. 4.2 em diagrama de blocos comum para filtros. Os elementos bsicos de um filtro tambm so representados dessa maneira. Nesse caso, o elemento de delay representado como z-1, devido Transformada Z. As representaes em diagrama de blocos podem ser vistas na Fig. 4.3.
Fig. 4.3. Diagrama de blocos de: a) Somador de duas seqncias, b) multiplicador de duas seqncias, c) multiplicador de uma seqncia por uma constante e d) retardo. Exemplos: 1) Podemos ver na Fig. 4.4 a representao em diagrama de blocos da equao de diferena definida por: y[n] = a1.y[n 1] + a2.y[n 2] + b.x[n]
Pgina 74
H ( z) =
b 1 a1 z 1 a 2 z 2
Fig. 4.4. Diagrama de blocos para uma equao de diferenas. 2) Uma equao de diferenas pode ser generalizada da forma:
y[ n] a k y[ n k ] = bk x[n k ]
k =1 k =0
H ( z) =
b z
k =0 N k k =1
1 ak z k
Y ( z) X ( z)
A funo de sistema ou funo de transferncia corresponde relao entre a sada e a entrada do sistema. Podemos re-escrever a equao de diferenas na forma de uma relao de recorrncia:
Pgina 75
y[ n] = ak y[ n k ] + bk x[ n k ]
k =1 k =0
Fig. 4.5. Representao em diagrama de blocos de uma equao de diferenas geral. Nessa figura, temos:
v[ n] = bk x[ n k ]
k =0
y[ n] = v[ n] + ak y[ n k ]
k =1
Como apresentado na Fig. 4.5, referimos a essa forma de diagrama de blocos como a Forma Direta I. Uma implementao com uma menor quantidade de retardos tambm pode ser utilizada e chamada de Forma Direta II (Fig. 4.6, considerando, sem perda de generalizada, M = N).
Pgina 76
Fig. 4.6. Representao com menos retardos (Forma direta II). Os filtros so classificados em relao sua resposta ao impulso. Nesse sentido, os filtros dividem-se em filtros FIR (Finite Impulse Response) e IIR (Infinite Impulse Response).
Pgina 77
Fig. 4.7. Exemplo de um filtro FIR. Suponha na Fig. 4.7 que o sistema tem uma entrada x[n] = [1, 0]. Sendo um sistema causal, a entrada para n < 0 igual a zero. Assim, para n = 0, temos:
E, para n = 1:
Logo, a sada seria y[n]=[0.5, 0.5]. A equao para cada termo : y[0] = 0.5.x[0] + 0.5.x[-1] y[1] = 0.5.x[1] + 0.5.x[0]
Pgina 78
Ou, de forma geral: y[n] = 0.5.x[n] + 0.5.x[n - 1] Os filtros FIR so expressos como:
y[n] = bk x[n k ]
k =0
H ( z ) = bk z k
k =0
bn h[n] = 0
0 n M 1 seno
e a representao em equao de diferenas : y[n] = b0x[n] + b1x[n 1] + ... + bN-1x[n M + 1] Um filtro FIR pode ser representado em forma direta como:
Por simplicidade, pode-se representar um filtro FIR apenas com seus coeficientes. Por exemplo, seja um filtro FIR com coeficientes [1, -1], ele pode ser representado como:
Pgina 79
Dados os coeficientes, pode-se calcular de forma simples a sada do sistema para uma dada entrada. Considere uma entrada x[n]=[1, 2, 3, 4, 5] em um filtro com coeficientes [6, 7, 8]. A sada dada por:
Um sistema dito causal quando ele no precisa de informaes futuras para calcular a sada atual. Um sistema linear se obedece ao princpio da superposio. Ou seja: T{a.x1[n] + b.x2[n]} = a.T{x1[n]} + b.T{x2[n]} Por ltimo, um sistema dito invariante no tempo se a sada do sistema reflete qualquer deslocamento que a entrada. Ou seja, se y[n] = T{x[n]}, ento x[n m] gera uma sada y[n m]. Filtros FIR podem implementar diversas diferentes funes apenas com mudanas nos seus coeficientes. A funo de um filtro depende de seu comportamento no domnio da freqncia. Um filtro pode ser passa-baixa, passa-alta, passa-faixa, rejeita-faixa ou notch. Um filtro notch pode ser visto como um rejeita-faixa, mas que rejeita uma faixa bastante estreita.
Pgina 80
Filtros passa-baixa ou passa-alta permitem passar baixas ou altas freqncias de um sinal. As Figs. 4.8 e 4.9 apresentam exemplos simples de filtros assim.
Fig. 4.9. Exemplos de filtros passa-baixa e passa-alta. Os filtros da Fig. 4.8 so filtros ideais no realizveis. A Fig. 4.9 apresenta filtros com uma mudana mais suave da banda de passagem para a banda de corte (no FPB) e vice-versa (no FPA). Na prtica, tais filtros tm caractersticas um pouco diferentes. Podemos observar ondulaes e uma banda de transio mais suave. Essas
Pgina 81
caractersticas podem ser vistas na Fig. 4.10 a qual apresenta o espectro de diferentes filtros (ou seja, suas transformadas de Fourier). atravs do espectro que podemos analisar o comportamento do filtro.
Fig. 4.10. Padres de ondulao na banda de passagem ou na banda de parada e um banda de transio suave. Por exemplo, um filtro apenas com coeficientes [0,5 0,5] comporta-se como um FPB. Seu comportamento foi avaliado anteriormente, tendo sua sada definida por: y[n] = 0.5.x[n] + 0.5.x[n - 1] 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.
Pgina 82
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 seqncia 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) Seqncia [0,5 0,5] e sua transformada de Fourier (um FPB) e (direita) a seqncia [0,5 -0,5] e sua transformada (um 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 baixas frequncias) e enfatizar mudanas rpidas (como as relacionadas com as altas frequncias).
Pgina 83
Dois outros tipos de filtros so notch e passa-faixa. Filtros notch atenuam bandas muito estreitas de freqncia. Filtros passa-faixa tm duas bandas de passagem. A Fig. 4.12 mostra exemplos desses dois filtros. Para ver como o comportamento de um filtro, devemos ver sua resposta em frequncia atravs da transformada de Fourier de seus coeficientes.
Fig. 4.12. (topo) filtro Notch e (baixo) filtro passa-faixa. Para ver como o comportamento de um filtro, devemos ver sua resposta em frequncia atravs da Transformada de Fourier de seus coeficientes.
Exemplo: >> B2 = fir1(100, 0.3, low'); >> x = zeros (1, 1000); >> x(50) = 1; % x um impulso >> Y2 = fft(conv(x, B2)); % apresentamos metade apenas pois o resto simtrico >> half = 1:ceil(length(Y2)/2); >> plot(half/max(half), abs(Y2(half)), 'b');
Pgina 84
>> B2 = fir1(100, 0.3, high'); >> x = zeros (1, 1000); >> x(50) = 1; % x um impulso >> Y2 = fft(conv(x, B2)); % apresentamos metade apenas pois o resto simtrico >> half = 1:ceil(length(Y2)/2); >> plot(half/max(half), abs(Y2(half)), 'b');
Pgina 85
Fig. 4.13. Exemplos de fases lineares e no-lineares. Considere um sistema LTI cuja resposta em frequncia sobre um perodo seja: Hid(ejw) = e-jw, |Hid(ejw)| = 1
Hid(ejw) = -w
|w| <
onde um nmero real. Tal sistema tem magnitude constante e fase linear:
A transformada de Fourier inversa de Hid(ejw) a resposta ao impulso, hid[n] que dada por:
1 hid [n] = 2
hid [n] =
jn
1 d = 2
( j jn )
1 1 1 1 e ( j jn ) = e j ( n ) 2 j (n ) 2 j (n )
Pgina 86
hid [n] =
1 1 e j ( n ) e j ( n ) 2 j (n )
(Eq. 4.4)
Lembrando que:
e j e j sen = 2j
Temos que, na equao 4.4:
hid [n] =
Pgina 87
e j , | |< c H LP (e ) = c < 0,
j
temos = 0. Um sistema cuja resposta em frequncia tem a forma da equao 4.5 chamado de sistema de fase linear generalizada j que a fase de tal sistema consiste de termos constantes adicionados funo linear -. Ou seja, a fase linear de forma mais geral: arg[H(ejw)] = - , onde e so constantes reais. Causalidade implica que: h[n] = 0, n > 0 e n > M, M inteiro 0<<
i.e., sistemas FIR causais tm fase linear generalizada se eles tm resposta ao impulso de comprimento (M + 1) e satisfaz: h[2 - n] = h[n] ou h[2 - n] = -h[n] No primeiro caso, temos, para = 0 ou :
h[2 n] =
O segundo caso acontece para = /2 ou 3/2. Especificamente, se h[n] = h[M n], 0 n M, e 0, caso contrrio ento pode ser mostrado que H(ejw) = AP(ejw)e-jwM/2 onde AP(ejw) uma funo real, par e peridica em w. De forma similar, se h[n] = -h[M n], 0 n M, e 0, caso contrrio segue que: H(ejw) = jAI(ejw)e-jwM/2 = AI(ejw)e-jwM/2 + j/2
Pgina 88
onde AI(ejw) uma funo real, mpar e peridica em w. Em ambos os casos, o comprimento da resposta ao impulso (M + 1) amostras. Dependendo da sua resposta ao impulso, os filtros FIR podem ser divididos em quatro classes:
1. Sistemas FIR com fase linear do Tipo I Um sistema do tipo I tem resposta ao impulso simtrica h[n] = h[M n], 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 :
H (e ) = h[n]e jn
j n =0
Considerando a condio de similaridade, essa resposta em frequncia pode ser expressa como:
H (e ) = e
onde a[0] = h[M/2], a[k] = 2h[(M/2) k],
jM / 2
M /2 k =0
a[k ] cos(k )
k = 1, 2, 3, ..., M/2
Assim, H(ejw) tem a forma de AP(ejw)e-jwM/2. 2. Sistemas FIR com fase linear do Tipo II Um sistema do tipo II tem uma resposta ao impulso simtrica como h[n] = h[M n],
( M +1) / 2
0nM
mas com M um inteiro mpar. Nesse caso, H(ejw) pode ser expresso como:
H (e ) = e
onde
jM / 2
k =1
1 b[k ] cos[ (k ]} 2
Pgina 89
k = 1, 2, ..., (M + 1)/2 .
3. Sistemas FIR com fase linear do Tipo III Se o sistema tem uma resposta ao impulso anti-simtrica: h[n] = -h[M - n], com M um inteiro par, ento H(ejw) tem a forma: 0nM
H (e ) = je
onde c[k] = 2h[(M/2) - k], Nesse caso, H(ejw) tem a forma:
jM / 2
M /2 k =0
c[k ] sin(k )
k = 1, 2, ..., M/2
4. Sistemas FIR com fase linear do Tipo IV Se o sistema tem uma resposta ao impulso anti-simtrica: h[n] = -h[M - n],
( M +1) / 2
0nM
H (e ) = je
onde
jM / 2
k =1
1 d [k ] sin[ (k ]} 2
k = 1, 2, ..., (M + 1)/2
Pgina 90
H (e jw ) = e jwn =
n =0
Magnitude e fase:
Pgina 91
H (e jw ) = e jw( 5 / 2 )
Magnitude e fase:
sin(3w) sin( w / 2)
Pgina 92
Pgina 93
Exemplo: O seguinte cdigo implementa no MatLab um filtro FIR tipo I: h = [3 4 5 6 5 4 3]/30; N = 7; M = (N-1)/2; L = 512; H = fft([h zeros(1,L-N)]); k = 0:L-1; W = exp(j*2*pi/L); A = H.* W.^(M*k); A = real(A); figure(1) w = [0:L-1]*2*pi/(L-1); subplot(2,1,1) plot(w/pi,abs(H)) ylabel('|H(\omega)| = |A(\omega)|') xlabel('\omega/\pi') subplot(2,1,2) plot(w/pi,A) ylabel('A(\omega)') xlabel('\omega/\pi')
Pgina 94
Exemplo: O seguinte cdigo implementa no MatLab um filtro FIR tipo II: h = [3 5 6 7 7 6 5 3]/42; N = 8; M = (N-1)/2; L = 512; H = fft([h zeros(1,L-N)]); k = 0:L-1; W = exp(j*2*pi/L); A = H.* W.^(M*k); A = real(A); figure(2) w = [0:L-1]*2*pi/(L-1); subplot(2,1,1) plot(w/pi,abs(H)) ylabel('|H(\omega)| = |A(\omega)|') xlabel('\omega/\pi') subplot(2,1,2) plot(w/pi,A) ylabel('A(\omega)') xlabel('\omega/\pi')
Pgina 95
cuja equao que descreve sua sada dada por: y[n] = 0,6.x[n] + 0,2.x[n-1] + 0,4.y[n 1] Se um impulso passa por esse filtro teremos como resposta as seguintes sadas, considerando o filtro causal:
Ou seja, mesmo quando a entrada se anula, o filtro continua apresentando uma sada. Essa sada diminui, mas no torna-se zero. Claro que, na prtica, a resposta chega a zero em algum momento. Considere ento o filtro a seguir:
Pgina 96
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.
Pgina 97
y[n] a k y[n k ] = bk x[ n k ]
k =1 k =0
H ( z) =
b z
k =0 N k k =1
1 a k z k
Pgina 98
Fig. 4.15. Forma Direta II de um filtro IIR. Exemplo 1: Considere a funo de sistema:
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:
Pgina 99
ii)
Exemplo 3: Conexo em paralelo: Considere a funo de sistema (observe que a mesma funo anterior):
Pgina 100
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:
Pgina 101
4.4 Exerccios
1. Um filtro IIR definido por:
H ( z ) = 1 + z 1 + 0.25 z 2 + 0.25 z 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 102
Pgina 103
Especificaes: determinada pela aplicao a qual o filtro est sendo construdo; Aproximaes: o projeto do filtro especificamente. Aqui, define-se H(z). Implementaes: a transcrio da funo de transferncia para hardware ou software.
Em diversas aplicaes como processamento de voz ou som, filtros digitais so usados para implementar operaes seletivas de frequncia. Assim, especificaes so necessrias no domnio da frequncia em termos de magnitude desejada e resposta em fase do filtro. Em geral, como vimos no Captulo anterior, uma resposta em fase linear na banda de passagem necessria (Fig. 4.13). No caso de filtros FIR, possvel encontrar um filtro de fase exatamente linear. Para filtros IIR, uma fase linear na banda de passagem no possvel. Assim, consideraremos especificaes em magnitude apenas. As especificaes em magnitude podem ser dadas de duas maneiras: Especificaes absolutas que provem um conjunto de requisitos na magnitude da funo de transferncia, |H(ejw)|. Essas especificaes so comuns para
Pgina 104
filtros FIR. A segunda forma chamada de especificaes relativas que prov os requisitos em decibis (dB) e dada por:
A banda [0, wp] chamada de banda de passagem, e 1 a tolerncia a qual so permitidas ondulaes (ripples) na resposta ideal da banda de passagem;
A banda [ws, ] chamada de banda de corte, e 2 a tolerncia a qual so permitidas ondulaes; A banda [ws, wp] chamada de banda de transio, e no h qualquer restrio na resposta em magnitude nessa banda.
Fig. 5.1. Especificao absoluta de um filtro passa-baixa real: banda de passagem, banda de transio e banda de corte.
Pgina 105
A especificao relativa de um filtro passa-baixa pode ser vista na Fig. 5.2 na qual:
Fig. 5.2. Especificao relativa de um filtro passa-baixa real. Os parmetros das duas especificaes so relacionados. Como |H(ejw)|max na especificao absoluta igual a (1 + 1), temos:
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 Especificaes semelhantes podem ser dadas para outros tipos de filtros seletores de frequncia (como passa-alta ou passa-faixa).
Pgina 106
Analisaremos o problema de especificar um filtro passa-baixa e, facilmente, esses conceitos podem ser repassados para outros tipos de filtros. Nosso problema projetar um filtro passa-baixa (i.e., obter sua funo de transferncia H(z) ou sua equao de diferenas) que tem uma banda de passagem [0, wp] com tolerncia 1 (ou RP in dB) e uma banda de corte [wS, ] com tolerncia 2 (ou AS in dB). A seguir, vamos projetar filtros digitais FIR. Esses filtros tm diversas vantagens de projeto e implementao:
A resposta em fase pode ser exatamente linear; So relativamente simples de projetar j que eles no tm problemas de estabilidade; So eficientes para implementar; A Transformada Discreta de Fourier pode ser usada em sua implementao.
Abordagem analgica, a qual se aplica classe de filtros analgicos. Abordagem de analgico para digital, em que a motivao projetar um filtro digital lanando mo de um projeto de filtro analgico. Abordagem digital direta a qual se aplica classe de filtros digitais.
Pgina 107
1.e j , | | c H d (e ) = c <| | 0,
j
onde wc chamado de frequncia de corte (cut-off) e chamado de atraso de amostra (sample delay). A resposta ao impulso desse filtro de durao infinita e dada por:
1 hd [n] = 1 [ H d (e j )] = 2
(e j )e jn d
1 hd [n] = 2
1.e j e jn 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 108
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 ) = 2
jw jw jw
W (e
) H d ( e j ( w ) ) d
Podemos ver essa convoluo na Fig. 5.3 para uma janela comum.
Pgina 109
Fig. 5.3. Operao de janelamento no domnio da frequncia. Observaes: 1. Como a janela w[n] tem comprimento finito igual a M, sua resposta em frequncia tem uma regio de pico central (lbulo principal) cuja largura proporcional a 1/M e tem lbulos laterais com pesos menores. 2. A convoluo gera uma verso da resposta ideal Hd(ejw), mas com algumas distores (ondulaes). 3. A largura da banda de transio proporcional a 1/M. 4. Os lbulos laterais produzem ondulaes que tm forma similar tanto na banda de passagem quanto na de corte. Projeto usando janelas: Para uma dada especificao de filtro, escolha um filtro de comprimento M e uma funo janela w[n] para a mais estreita largura do lbulo principal e a menor atenuao nos lbulos laterais possvel. Da observao 4 acima, podemos notar que a tolerncia 1 da banda de passagem e a tolerncia 2 da banda de corte no podem ser especificadas de forma independente. Geralmente, toma-se 1 = 2. Vamos descrever alguns tipos comuns de funes de janelamento.
Pgina 110
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
A magnitude da funo sen[w(M + 1)/2]/sen(w/2) mostrada na Fig. 5.4 para o caso de M = 7. Note que W(ejw) tem fase linear generalizada. medida que M aumenta, a largura do lbulo principal diminui.
Pgina 111
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 a magnitude do primeiro lbulo lateral
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 112
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:
Pgina 113
Fig. 5.6. Janela triangular. 3) Janela de Hanning (homenagem a Julius von Hann, meteorologista austraco)
Fig. 5.7. Janela de Hanning 4) Janela de Hamming (Richard Hamming, matemtico americano)
Pgina 114
Fig. 5.8. Janela de Blackman. 6) Janela de Kaiser (James F. Kaiser) Esta a melhor janela. Ela e considerada tima porque prov um lbulo principal largo para a dada atenuao da banda de corte, o que implica a mais brusca banda de transio. A funo foi definida por Kaiser e dada por:
Pgina 115
2 2n I 0 1 1 M w[n] = , 0n M I 0[ ] 0, seno
( x / 2) n I 0 ( x) = 1 + n! n=1
Fig. 5.8. Variadas formas da Janela de Kaiser. Na expresso de w[n], existem dois parmetros: 1. O comprimento M 2. O parmetro Variando e M, possvel ajustar a amplitude dos lbulos laterais. Kaiser encontrou duas frmulas que permitem achar M e de modo a atender s especificaes do filtro. Assim, dado que 1 fixo (especificado), a frequncia de corte wP da banda de passagem do filtro passa-baixa a maior frequncia tal que: |H(ejw)| 1 - 1
Pgina 116
A frequncia da banda de corte tem tolerncia 2, satisfazendo: |H(ejw)| 2 A largura da banda de transio :
w = w S - wP
(Eq. 5.1)
M=
A8 2,285w
O procedimento para projetar um filtro passa-baixa digital FIR usando a janela de Kaiser consiste nos seguintes passos: i) Estabelecer as especificaes wP, wS e . ii) Estabelecer a frequncia de corte wc do filtro passa-baixa ideal ao qual se aplicar a janela (wc = (wP + wS)/2). iii) Calcular A = 20log10 e w = wP - wS e usar as frmulas de Kaiser para encontrar os valores de M e . iv) Encontra a resposta ao impulso do filtro atravs de h[n]=hd[n]w[n], onde w[n] a janela de Kaiser e hd[n] = -1[Hd(ejw)]. Devido complexidade de clculos com funes de Bessel, o projeto dessas janelas no fcil. A equao de w[n] definida por Kaiser tem valores encontrados empiricamente e so definidos sem prova.
Pgina 117
Exemplo: Projetar, usando janelas de Kaiser, um filtro passa-baixa com as seguintes especificaes: wP = 0,4, wS = 0,6 e = 0,001. wc = (wS + wP)/2 = 0,5
w = wS - wP = 0,2
h[n] = hd [n]w[n] =
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).
Pgina 118
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); 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;
Pgina 119
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]'); 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 = 67 alpha = 33 Rp = 0,0394 As = 52
Pgina 120
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 121
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
Existem duas bandas de transio: w1 = w1P w1S, w2 = w2S w2P. Essas duas larguras de banda devem ser a mesma no projeto da janela; i.e., no h
Pgina 122
controle independente sobre w1 e w2. Assim w1 = w2 = w1. Para esse projeto, podemos usar a janela de Kaiser ou a de Blackman. Vamos escolher a janela de Blackman. Vamos precisar tambm da resposta ideal ao impulso de um filtro passa-faixa hd[n]. Observe que essa resposta ao impulso pode ser obtida a partir de duas respostas em magnitude de filtros passa-baixa ideais, considerando que elas tenham a mesma resposta em fase. Isso pode ser visto na figura abaixo:
ws1 = 0.2*pi; wp1 = 0.35*pi; wp2 = 0.65*pi; ws2 = 0.8*pi; As = 60; tr_width = min((wp1-ws1), (ws2-wp2)); M = ceil(11*pi/tr_width) + 1 n = [0:M-1]; wc1 = (ws1 + wp1)/2; wc2 = (ws2 + wp2)/2; hd = ideal_lp(wc2, M) - ideal_lp(wc1, M); w_bla = (blackman(M))'; h = hd.*w_bla; [db, mag, pha, w] = freqz_m(h, [1]); delta_w = 2*pi/1000; Rp = -(min(db(wp1/delta_w+1:wp2/delta_w))) As = -round(max(db(ws2/delta_w+1:501)))
Pgina 123
subplot (2, 2, 1); stem(n,hd); title('Resposta ao Impulso Ideal'); axis([0 M-1 -0.4 0.5]); xlabel('n'); ylabel ('hd[n]'); subplot (2, 2, 2); stem (n, w_bla); title ('Janela de Blackman'); 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.4 0.5]);xlabel('n');ylabel('h[n]'); subplot (2, 2, 4); plot(w/pi, db); title('Magnitude em dB');grid axis([0 1 -150 10]);xlabel('frequencia em pi unidades');ylabel('Decibeis'); M= Rp = As = 75 0,0030 75
alpha = 37
Pgina 124
0 | w |< / 3 1 , H e (e jw ) = 0 , / 3 | w | 2 / 3 1 , 2 / 3 <| w |
Usando uma janela de Kaiser, projete um filtro passa-faixa de comprimento 45 com atenuao na banda de corte de 60 dB. Observe que a largura da banda de transio no foi dada. Ela ser encontrada a partir do comprimento M = 45 e do parmetro da janela de Kaiser. Das equaes de projeto da janela de Kaiser, podemos determinar a partir de As:
= 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 125
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 126
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 axis([0 1 -80 10]);xlabel('frequencia em pi unidades');ylabel('Decibeis'); beta = 5,9533
Pgina 127
hd [n] = [ H d (e )e
jw
jw
1 ]= 2
(e jw )e jw e jwn dw
1 = 2
( jw)e
j w
jwn
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) coef = [h(L+1) 2*h(L:-1:1)];
Pgina 128
n = [0:L]; w = [0:500]'*pi/500; Hr = cos(w*n)*coef'; else coef = 2*[h(L:-1:1)]; n = [1:L]; n = n - 0.5; w = [0:500]'*pi/500; Hr = cos(w*n)*coef'; end else L = (M - mod(type, 2))/2; if (type == 3) coef = 2*[h(L+1:-1:1)]; n = [0:L]; w = [0:500]'*pi/500; Hr = sin(w*n)*coef'; else coef = 2*[h(L:-1:1)]; n = [1:L]; n = n - 0.5; w = [0:500]'*pi/500; Hr = sin(w*n)*coef'; end end
Assim, podemos resolver a questo da seguinte forma: M = 21; alpha = (M - 1)/2; n = 0:M-1; hd = (cos(pi*(n - alpha)))./(n - alpha); hd (alpha + 1) = 0; w_ham = (hamming(M))'; h = hd.*w_ham; [Hr, w, P, L] = Hr_Type(h, 3); subplot(1, 1, 1) subplot (2, 2, 1); stem(n, hd); title('Resposta ao Impulso Ideal'); axis([0 M-1 -1.2 1.2]);xlabel('n');ylabel('hd[n]'); subplot (2, 2, 2); stem(n, w_ham); title('Janela de Hamming'); axis([0 M-1 0 1.2]);xlabel('n');ylabel('w[n]'); subplot (2, 2, 3); stem(n, h); title('Resposta ao Impulso Atual'); axis([0 M-1 -1.2 1.2]);xlabel('n');ylabel('h[n]'); subplot (2, 2, 4); plot(w/pi, Hr/pi); title('Magnitude em dB');grid axis([0 1 0 1]);xlabel('frequencia em pi unidades');ylabel('Slope in pi units');
Pgina 129
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 H d ( e ) = j w je
jw
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:
Pgina 130
M = 25; alpha = (M - 1)/2; hd (alpha + 1) = 0; w_han = (hanning(M))'; h = hd.*w_han; [Hr, w, P, L] = Hr_Type(h, 3);
n = 0:M-1;
subplot (2, 2, 1); stem(n, hd); title('Resposta ao Impulso Ideal'); axis([0 M-1 -1.2 1.2]);xlabel('n');ylabel('hd[n]'); subplot (2, 2, 2); stem(n, w_han); title('Janela de Hamming'); axis([0 M-1 0 1.2]);xlabel('n');ylabel('w[n]'); subplot (2, 2, 3); stem(n, h); title('Resposta ao Impulso Atual'); axis([0 M-1 -1.2 1.2]);xlabel('n');ylabel('h[n]'); w = w'; Hr = Hr'; w = [-fliplr(w), w(2:501)]; Hr = [-fliplr(Hr), Hr(2:501)]; subplot (2, 2, 4); plot(w/pi, Hr); title('Resposta em Amplitude');grid axis([-1 1 -1.1 1.1]);xlabel('frequencia em pi unidades');ylabel('Hr');
Pgina 131
H ( z ) = h[n]z
n =0
M 1
1 z M = M
M 1
M 1
H [k ] 1 z 1e j 2k / M k =0
1 e jwM H (e ) = M
jw
H [k ] 1 e jwe j 2k / M k =0
(Eq. 5.2)
com
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
Pgina 132
M 1 2k M 1 k = 0,..., , 2 M 2 H [k ] = M 1 2 M 1 + + 1,..., M 1 ( M k ) , k = 2 M 2
(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) Dado um filtro passa-baixa ideal Hd(ejw), escolha o filtro de comprimento M e ento amostre Hd(ejw) em M igualmente espaadas freqncias entre 0 e 2. A resposta H(ejw) a interpolao das amostras H[k] dadas pela Eq. 5.2 (Fig. 5.9). A resposta ao impulso dada por h[n] = TDF-1(H[k]).
Fig. 5.9. Exemplo da tcnica de amostragem em frequncia. Da Fig. 5.9, podemos observar que: 1) O erro de aproximao a diferena entre a resposta ideal e a atual zero nas freqncias amostradas.
Pgina 133
2) O erro de aproximao nas outras freqncias depende da forma da resposta ideal, ou seja, quanto mais sharp a resposta ideal, maior o erro de aproximao. 3) O erro maior perto das fronteiras das bandas e menor dentro das bandas.
Exemplo: Vamos projetar um filtro passa-baixa usando o algoritmo de Parks-McClellan. Os parmetros de projeto so: wP = 0,2, RP = 0,25 dB wS = 0,3, AS = 50 dB wp = 0.2*pi; ws = 0.3*pi; Rp = 0.25; As = 50; delta1 = (10^(Rp/20)-1)/(10^(Rp/20)+1);
Pgina 134
delta2 = (1 + delta1)*(10^(-As/20)); deltaH = max(delta1, delta2); deltaL = min(delta1, delta2); weights = [delta2/delta1 1]; deltaf = (ws - wp)/(2*pi); M = ceil((-20*log10(sqrt(delta1*delta2))-13)/(14.6*deltaf) + 1) f = [0 wp/pi ws/pi 1]; m = [1 1 0 0]; 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)) while (Asd < As) 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= M= M= 43 44 45
Pgina 135
Pgina 136
2)
Para projetar filtros IIR, vamos: 1) Projetar FPB analgicos; 2) Aplicar transformaes no filtro para obter FPB digitais; 3) Aplicar transformaes de frequncia nas bandas para obter outros filtros digitais a partir do FPB. O principal problema dessas tcnicas que no temos controle sobre a fase do filtro. Assim, os projetos de filtros IIR sero apenas em magnitude. Tcnica mais avanadas usam otimizao e no sero tratadas.
Pgina 137
1 | H a ( j) |2 1 , 2 1+
|| P
0 | H a ( j) |2
1 A2
S ||
onde o parmetro de ondulao da banda de passagem, P a frequncia de corte da banda de passagem em rad/seg, A o parmetro de atenuao da banda de corte e S a frequncia da banda de corte (Fig. 5.10).
| H a ( j ) | 2 =
1 1+ 2
em = P
| Ha ( j) |2 =
1 A2
em = S
Pgina 138
R P = 10 log10
e
1 = 10 RP / 10 1 1+ 2 1 A = 10 AS / 20 A2
(Eq. 5.3)
AS = 10 log10
(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
Observao:
=s / j
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 139
mapeia um sinal ou funo em termos de vibraes (senides), a transformada de Laplace mapeia uma funo em relao aos seus momentos:
L{ f (t )} =
f (t )e
st
dt
onde s = + j, com e nmeros reais. A transformada de Fourier equivalente transformada bilateral de Laplace com argumento complexo s = j. Para um sinal amostrado x[n], a transformada de Laplace dada por:
X ( s ) = x[n]e nsT
n =0
Essa relao expressa exatamente a transformada Z quando z = esT. O mapeamento do plano-s no plano-z pode ser visto na Fig. 5.11. Nesse diagrama, linhas verticais no plano-s so mapeadas em ngulos no plano-z, enquanto linhas horizontais so mapeadas em raios.
Pgina 140
1) Filtro Passa-Baixa de Butterworth A principal caracterstica desse filtro que a resposta em magnitude plana (flat) na banda de passagem e de corte. A resposta quadrtica de magnitude de um FPB de N-sima ordem dada por:
| H a ( j ) | 2 =
1 1+ c
2N
onde N a ordem do filtro e c a frequncia de corte. A plotagem de Ha(j) mostrada na Fig. 5.12.
Fig. 5.12. Caracterstica de um filtro Butterworth com variao de parmetros. Desse grfico, podemos observar: i) Em = 0, |Ha(j0)|2 = 1, para todo N.
Pgina 141
ii) Em = c, |Ha(jc)|2 = 0,5, para todo N, o que implica 3 dB de atenuao em c. iii) |Ha(j)|2 uma funo monotonicamente decrescente em . iv) |Ha(j)|2 se aproxima de um FPB ideal em N . V) |Ha(j)|2 maximamente plano em = 0. Sua funo de sistema Ha(s) :
H a ( s ) H a ( s ) = | H a ( j ) |
2 =s / j
1 s 1+ j c
+ 1)/2N
2N
( j ) 2 N = 2N s + ( j c ) 2 N
Para projetar o filtro, precisamos encontrar as razes e plos da funo do sistema. Os plos so dados por pk = ej(2k .ej/2c, k = 0, 1, 2,..., 2N-1. Assim, os plos esto em um crculo de raio c nos ngulos k = (/N)k + (/2N) + /2, k = 0, ..., 2N 1. E os zeros so sk = (-1)1/2N.j c = cej(2k+N+1)/2N, k = 0, 1, ..., 2N 1. O FPB analgico especificado pelos parmetros P, S, RP e AS. Assim, a essncia do projeto no caso do filtro de Butterworth obter a ordem N e a frequncia de corte dada c. Assim, dadas essas especificaes, queremos:
i) em = c,
10 log 10 | H a ( j) | 2 = R P
= RP
ou
1 10 log10 1 + ( / ) 2 N P c
e ii) em = S,
10 log10 | H a ( j) |2 = AS = AS
ou
1 10 log10 1 + ( / ) 2 N S c
Pgina 142
C =
P
2N
10 RP / 10 1
C =
S
2N
10 AS / 10 1
Exemplo: Projete um filtro Butterworth satisfazendo: Ponto de corte na banda de passagem: P = 0,2 Ripple na banda de passagem: RP = 7 dB Ponto de corte na banda de corte: S = 0,3 Ripple na banda de corte: AS = 16 dB Soluo:
C =
0,2
2.3
10
0,7
= 0,4985
Pgina 143
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 1+ 0,5
1
6
| H a ( s ) |2 =
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 144
H a (s) =
H a ( s) =
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) =
Para transformar o filtro em digital, podemos usar o mtodo de transformao bilinear. Nele, consideramos:
2 1 z 1 1 + sT / 2 s= z= 1 sT / 2 T 1 + z 1
(Eq. 5.5)
onde T um parmetro. Historicamente, o valor de T foi includo porque a equao de diferenas correspondendo a H(z) pode ser obtida aplicando a regra da integrao trapezoidal na equao de diferenas de H(s), com T representando o passo de integrao. Dada a invarincia ao impulso, o parmetro T no tem conseqncia no projeto j que, no mapeamento de analgico para discreto, o efeito de T cancelado. Logo, T pode ser escolhido de forma conveniente para cada problema. No nosso caso, seja T = 1:
1 z 1 s=2 H a ( z ) = H a ( s) s=21 z 1 = 1 1+ z 1+ z 1
Pgina 145
H a ( z) =
0,125
2 1 z 1 1 z 1 1 z 1 + 0,5 2 + 0,25 + 0,5 2 2 1 1 1 z 1 1 z 1 z
A transformao bilinear pode ser ligada frmula trapezoidal para integrao numrica. Por exemplo, considere um filtro linear analgico com funo de transferncia:
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:
y (t ) = y ' ( )d + y (t0 )
t0
onde y(t) denota a derivada de y(t). A aproximao da integral anterior pela frmula trapezoidal em t = nT e t0 = nT T leva a:
y (nt ) =
(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 146
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 + z 1 X ( z ) 1 + Y ( z ) 1 z Y ( z) = 2 2 2
Consequentemente, a funo de transferncia do filtro digital equivalente :
(bT / 2)(1 + z 1 ) Y ( z) = H ( z) = X ( z ) 1 + aT / 2 (1 aT / 2) z 1
ou, equivalentemente:
H ( z) =
b 2 1 z 1 1 + z 1 + a T
(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 + z 1 T
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 147
filtros (um de Butterworth e um de Chebysshev tipo I) gerados sobre as mesmas condies, buscando sempre a menor ordem possvel. O filtro de Butterworth tem ordem 31, enquanto o de Chebyshev I tem ordem 16. A resposta quadrtica de magnitude de um filtro Chebyshev tipo I dada por:
| H a ( j ) | 2 =
1
2 1 + 2 TN c
onde N a ordem do filtro, o fator de ondulao da banda de passagem (Eq. 5.3) e TN(x) o polinmio de Chebyshev dado por:
| H a ( j ) | 2 =
1 2 1 + 2TN c
1
Pgina 148
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 149
| H a ( j ) | 2 =
1
2 1 + 2U N c
onde N a ordem do filtro, o fator de ondulao da banda de passagem (Eq. 5.3) e UN(x) a funo elptica Jacobiana de ordem N. Apesar da anlise complexa, o clculo da ordem do filtro simples e dado por:
N=
onde
K (k ) K ( 1 k1 ) K (k1 ) K ( 1 k 2 )
k= P S
k=
A 1
2
/2
K ( x) =
1 1 x sen
2 2
H ( z ) = H PB ( Z ) Z 1 =G ( z 1 )
Pgina 150
Se HPB(Z) a funo racional de um sistema causal e estvel, uma exigncia natural que a funo transformada H(Z) tambm apresente essas caractersticas. Isso implica que: 1. G(z-1) deve ser uma funo racional de z-1. 2. O interior do crculo unitrio do plano Z deve mapear o interior do crculo unitrio do plano z. 3. O crculo unitrio do plano Z deve mapear no crculo unitrio do plano z. Denotando por e w as variveis (ngulos) associados, respectivamente, aos planos Z e z, a transformao Z-1 = G(z-1) pode ser re-escrita como:
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 N
onde |k| < 1. Dependendo da escolha de N e k, diversos mapeamentos podem ser obtidos. O mais simples (N = 1, 1 = ):
z 1 = G( z ) = 1 z 1
1
Agora, escolhendo uma ordem apropriada N e os coeficientes {k}, podemos obter uma variedade de mapeamentos. As transformaes mais comuns esto na Tabela 5.1. Nessa tabela, vale a pena comentar a transformao passa-baixa para passabaixa (primeira converso da tabela). Isso feito para que se possa construir um
Pgina 151
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 152
Tabela 5.1. Transformaes em frequncia para filtros digitais (filtro passa-baixa prottipo tem frequncia de corte em wc).
Pgina 153
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 |
Usando uma janela de Kaiser, projete um filtro passa-faixa de comprimento 45 com atenuao na banda de corte de 60 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.
Pgina 154
4. Projetar um filtro digital passa-baixas, a partir do filtro analgico de Butterworth com as seguintes especificaes do filtro digital: 0,89125 |H(ejw)| 1, |H(ejw)| 0,17783, 0 |w| 0,2 0,3 |w|
Pgina 155
F ( w) { f (t )} =
f (t )e j 2wt dt
onde e-jw o kernel da transformada de Fourier. A transformada inversa de Fourier definida como:
1 f (t ) {F ( w)} 2
1
F (w)e
j 2wt
dw
Existem algumas propriedades que caracterizam a transformada de Fourier. Considere os pares de transformadas f(t)F(w) e g(t)G(w). As seguintes principais propriedades so vlidas: 1) Linearidade: a.f(t) + b.g(t) a.F(w) + b.G(w), a e b constantes 2) Deslocamento no tempo: f(t - t0) e-j2wt0.F(w)
Pgina 156
3) Deslocamento na freqncia: f(t)ej2w0t F(w w0) 4) Escalonamento: f(a.t) (1/|a|)F(w/a) 5) Convoluo no tempo: f(t)*g(t) F(w).G(w) 6) Convoluo na freqncia: f(t).g(t) (1/2)F(w)*G(w)
1 x[n] = N
X [k ]e
k =0
N 1
n = 0, 1, ....
(Eq. 6.1)
onde {X[k], k = 0, 1, ....} so chamados de coeficientes da srie discreta de Fourier, sendo dados por:
2 kn N
X [k ] = x[n]e
n=0
N 1
k = 0, 1, ....
(Eq. 6.2)
onde x[n] a seqncia discreta no domnio do tempo que descreve os valores amostrados da varivel contnua x(t) e N o nmero de amostras da seqncia
Pgina 157
da entrada. Observe que X[k] tambm uma sequncia peridica com perodo fundamental igual a N. Ou seja, X[k + N] = X[k]. As equaes 6.1 e 6.2 so a representao discreta em srie de Fourier de sequncias peridicas. Por convenincia de notao, podemos chamar:
WN = e-j(2/N)
e assim o par de equaes torna-se:
Equao de anlise:
kn X [k ] = x[n]W N n =0
N 1
Equao de sntese:
1 x[n] = N
X [k ]W
k =0
N 1
kn N
Exemplo: Encontre a representao em srie de Fourier da sequncia: x[n] = {...0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, ....} O perodo fundamental da sequncia N = 4. Assim, W4 = e-j2/4 = e-j/2 = cos(-
X [k ] = x[n]W4kn
n =0
Assim:
Pgina 158
X [0] = x[n]W
n =0
k .0 4
De forma similar:
X [1] = x[n]W
n =0 3
k .1 4
= x[n]( j ) n = 2 + 2 j
n =0 3
X [2] = x[n]W
n=0 3
k .2 4
= x[n]( j ) 2 n = 2
n=0 3
X [3] = x[n]W
n=0
k .3 4
= x[n]( j )3n = 2 2 j
n=0
Uma outra forma de ver a transformada discreta de Fourier atravs de uma representao em matrizes. Considere que x e X so vetores coluna correspondendo como: X = WNx e x = (1/N)W*NX onde WN dada por: aos perodos primrios das sequncias x[n] e X[k], respectivamente. Ento as equaes de sntese e anlise podem ser vistas
Pgina 159
A matriz WN chamada de matriz DFS. Essa forma de calcular os coeficientes da srie discreta de Fourier pode ser implementado no MatLab da seguinte forma:
function [Xk] = dfs (xn, N) n = [0:1:N-1]; k = [0:1:N-1]; WN = exp(-j*2*pi/N); nk = n'*k; WNnk = WN.^nk; Xk = xn*WNnk; Por exemplo: >> xn = [0 1 2 3]; N = 4; >> Xk = dfs(xn, N) Xk =6 obtida como: -2 + 2i -2 - 0i -2 - 2i Exatamente como calculamos anteriormente. A transformada inversa pode ser
function [xn] = idfs(Xk, N) n = [0:1:N-1]; k = [0:1:N-1]; WN = exp(-j*2*pi/N); nk = n'*k; WNnk = WN.^(-nk); xn = (Xk*WNnk)/N; Para o Xk anterior, temos: >> xn = idfs(Xk, N) xn = 0 - 0i 1 - 0i 2 - 0i 3 + 0i.
Pgina 160
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 161
~[ n] = x
r =
x[n rN ]
O teorema da amostragem no domnio da frequncia diz que, se x[n] de durao finita ([0, N-1]), ento N amostras de X(z) no crculo unitrio determinam X(z) para todo z. Nesse sentido, N eqidistantes amostras da transformada de Fourier discreta no tempo X(ejw) da sequncia de N-pontos x[n] pode reconstruir unicamente X(ejw). Essas N amostras ao redor do crculo unitrio so chamdas ~ de coeficientes da transformada discreta de Fourier. Seja X [k] =DFS ~ [n], que x uma sequncia peridica (e assim de durao finita). Seu intervalo primrio ento a transformada discreta de Fourier, que de durao finita. Essas noes
Pgina 162
so claras na seguinte definio. A Transformada Discreta de Fourier de uma sequncia de N-pontos dada por:
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
X [k ]W
k =0
N 1
kn N ,
0nN1
Novamente, x[n] no definida fora do intervalo 0 n N 1. A extenso de x[n] fora desse intervalo ~ [n]. x Do incio desse captulo, fica claro que a DFS praticamente equivalente DFT quando 0 n N 1. Assim a implementao da DFT pode ser feita de forma similar. Se x[n] e X[k] so organizados como vetores coluna x e X, respentivamente, ento temos: X = WNx e x = (1/N)W*NX
Pgina 163
onde WN a matriz DFS como antes. A implementao tanto da DFT quanto da IDFT no MatLab igual s da DFS e IDFS que apresentamos anteriormente. Considere aquelas mesmas funes com nomes dft e idft apenas. Uma outra possvel representao da transformada discreta de Fourier a forma retangular que se utiliza da relao de Euler. A relao de Euler dada por ej = cos + jsen . A DFT pode ser escrita ento da seguinte forma:
lembrando que j = 1. Este um conceito abstrato conveniente para nos ajudar a comparar a relao de fase entre vrias componentes senidais do sinal. A DFT apresenta algumas propriedades que so muito teis no processamento digital de sinais, como: simetria, linearidade, deslocamento no tempo e freqncia, entre outras. Fora a simetria, as outras propriedades so comuns transformada de Fourier de tempo contnuo.
Pgina 164
x[n m] WNkmX[m] 3) Dualidade Se ento 4) Simetria A simetria pode poupar muito esforo computacional. Quando a seqncia 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:
2 kn N
X [k ] = x[n]e
n=0
N 1
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 * * *
X [ N m] = x[n]e
* n =0
N 1
2 nm N
= X [ m]
5) Convoluo Peridica
m =0
x [ m] x [ n m] X [ k ] X
1 2 1
N 1
[k ]
Pgina 165
onde o lado esquerdo da igualdade conhecido como convoluo, representado por x1[n]*x2[n]. importante observar que o somatrio ocorre no intervalo 0 m
Exemplo: >> n = 0:99; >> fs = 200; >> Ts=1/fs; >>x=cos(2*pi*20*n*Ts + pi/4) + 3*cos(2*pi*40*n*Ts - 2*pi/5) + 2*cos(2*pi*60*n*Ts + pi/8); >> X = fft(x); >> m = 0:length(X) - 1; >> subplot(3, 1, 1); stem(x); xlabel('n');ylabel('x(n)');title('Sequencia'); >> subplot(3, 1, 2); stem(m*fs/length(X), abs(X), 'b'); ylabel('magnitude'); >> xlabel('frequencia (Hz)'); title('Magnitude da Resposta em Frequencia'); >> subplot(3,1,3); stem(m*fs/length(X), angle(X), 'b'); ylabel('Angulo'); >> xlabel('frequencia (Hz)'); title('Fase');
Pgina 166
Observe que, como o sinal x[n] real, a magnitude da resposta em frequncia apresenta uma imagem refletida. Assim, precisamos apenas da primeira metade dela. Para a fase, o padro tambm aparece refletido no eixo da freqncia; novamente, s precisamos de metade da plotagem. Para a questo da magnitude podemos fazer: >> half_m = 0:ceil(length(X)/2); >> stem(half_m*fs/length(X), abs(X(half_m + 1)), 'b'); >> ylabel('magnitude'); >> xlabel('frequencia (Hz)'); title('Magnitude da Resposta em Frequencia');
Pgina 167
Essa a forma como a transformada calculada para imagens digitais, por exemplo. Se considerarmos uma imagem em nveis de cinza onde o valor 0 corresponde ausncia de cor (o preto) e o valor 1 corresponde ao valor mximo da cor (o branco), a imagem abaixo:
Pode ser vista como uma figura tridimensional, cuja viso em perspectiva seria como na figura:
que uma verso tridimensional da funo porta. Dessa forma, a transformada tambm uma funo sample, mas tambm tridimensional:
Pgina 168
Uma propriedade importante da DFT aplicada a imagens sua sensibilidade rotao. Por exemplo, considere a figura abaixo e sua DFT:
Se for imposta uma rotao imagem, a transformada guardar a informao da inclinao inicial, podendo ser possvel encontrar o ngulo de rotao da imagem. Por exemplo, na figura a seguir, foi imposta uma rotao de 45 imagem da figura acima. Veja o resultado da DFT como apresenta a inclinao.
Pgina 169
6.5 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:
ne 0,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 170
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 171
Pgina 172
Pgina 173
algoritmo. No entanto, a anlise de complexidade de um algoritmo no considera detalhes de implementao. Nesse sentido, os algoritmos rpidos propem modificaes na forma de resolver algum problema a fim de conseguir um ganho de tempo de processamento. Isso pode no afetar a complexidade do algoritmo, mas deve diminuir seu tempo de processamento. Claro, h condies especficas para que isso ocorra. Casos onde essas condies no so atendidas podem provocar at um aumento no tempo de processamento. A busca por solues rpidas deve ser constante no desenvolvimento de um algoritmo. Por exemplo, considere a computao da varivel A dada por: A = a.c + a.d + b.c + b.d Esse clculo direto leva o programa a executar 4 multiplicaes e 3 adies. Essa expresso, no entanto, pode ser simplificada para: A = (a + b).(c + d) provocando uma reduo das operaes para apenas 1 multiplicao e 2 adies. Em geral, a multiplicao o elemento de maior custo considerado. Observamos que essa expresso equivalente primeira, apenas executando menos operaes aritmticas. Um outro exemplo menos trivial o clculo de uma multiplicao complexa. O produto complexo: (e + jf) = (a + jb).(c + jd) definido por: e = (ac bd) f = (ad + bc) exigindo 4 multiplicaes e duas adies. Um algoritmo mais eficiente calcula:
Pgina 174
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
j 2 / N kn
kn ) = x[n]WN n =0
N 1
(Eq. 7.1)
onde k = 0, 1, 2, ...., N 1. Calculada assim diretamente, a DFT requer O(N2) operaes. A idia do algoritmo de Cooley-Tukey dividir a seqncia x[n] em duas seqncias: uma com os coeficientes de ndice par e outra com os coeficientes de ndice mpar. Como a quebra em duas seqncias, o algoritmo conhecido tambm como Radix-2. Algoritmos no qual a seqncia decomposta sucessivamente em seqncias menores so chamados de algoritmos de decimao em tempo. O princpio do algoritmo de decimao em tempo pode ser analisado considerando que N um inteiro potncia de 2, i.e., N = 2v. Como N um inteiro
Pgina 175
par, podemos considerar calcular X(k), separando x[n] em duas seqncias de N/2 pontos, consistindo dos pontos de ndice par em x[n] e os pontos de ndice mpar em x[n]. Como X(k) dado pela Eq. 7.1, separando x[n] no pontos de ndice par e mpar:
X (k ) =
n _ par
nk x[n]WN +
n _ mpar
x[n]W
nk N
X (k ) =
x[2r ]W
2 rk N
x[2r + 1]W
N / 21 k N r =0
( 2 r +1) k N
(Eq. 7.2)
X (k ) =
N / 21 r =0
x[2r ](W
2 rk N
) +W
x[2r + 1](W
2 rk N
(Eq. 7.3)
Mas WN2 = WN/2 j que: WN2 = e-2j(2/N) = e-2j(/(N/2)) = WN/2 Consequentemente, a Eq. 7.3 pode ser escrita como:
N / 21 r =0 N / 21 k N r =0
X (k ) =
x[2r ]W
rk N /2
+W
x[2r + 1]W
rk N /2
k X ( k ) = G[ k ] +WN H [ k ]
(Eq. 7.4)
Pgina 176
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 seqncia original. A Fig. 7.1 apresenta um diagrama de fluxo do clculo de uma DFT de 8 pontos.
Fig. 7.1. Decimao no tempo de uma DFT de N-pontos (N = 8) computada em duas DFTs de N/2 pontos. Na Fig. 7.1 duas DFTs de 4 pontos so calculadas, com G[k] designando a DFT de 4 pontos dos termos de ndice par e H[k] designando a DFT de 4 pontos dos termos de ndice mpar. Na sada, X[0] obtido multiplicando H[0] por WN0 e somando o produto com G[0]. X[1] obtido multiplicando H[1] por WN1 e somando o resultado com G[1]. Para calcular X[4] deveramos multiplicar H[4] por WN4 e somar o resultado com G[4]. Contudo, como G[k] e H[k] so
Pgina 177
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 WN4 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:
N / 41 l =0 N / 41 k N /2 l =0
G[ k ] =
g[2l ]W
lk N /4
+W
lk N /4
(Eq. 7.5)
H [k ] =
N / 41 l =0
h[2l ]W
lk N /4
+W
N / 41 k N /2
lk N /4
(Eq. 7.6)
Pgina 178
Consequentemente, a DFT de N/2 pontos G[k] pode ser obtida combinando as DFTs de N/4 pontos das sequncias g[2l] e g[2l + 1]. O mesmo acontecendo com o clculo de H[k]. Assim, se as DFTs de 4 pontos da Fig. 7.1 forem calculadas de acordo com as Eqs. 7.5 e 7.6, ento o clculo aconteceria como na Fig. 7.2. Inserindo a computao da Fig. 7.2 no diagrama de fluxo da Fig. 7.1, obtemos o diagrama completo da Fig. 7.3, onde expressamos os coeficientes em termos de potncias de WN ao invs de WN/2, considerando que WN/2 = WN2.
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 179
Fig. 7.3. Fluxo completo do clculo da DFT de 8 pontos, sendo dividida em 4 de N/4 pontos. Para a DFT de 8 pontos que estamos usando como exemplo, a computao foi reduzida a DFTs de 2 pontos. A DFT de 2 pontos para, por exemplo, x[0] e x[4] detalhada na Fig. 7.4.
Fig. 7.4. Detalhe do clculo de uma DFT de 2 pontos. Para o caso geral, mas ainda considerando N como potncia de 2, podemos continuar com a decomposio da DFT de N/4 pontos em duas de N/8 pontos e continuarmos at que s restem DFTs de 2 pontos. Como em uma rvore, esse
Pgina 180
processo requer v estgios, onde v = log2N. Anteriormente, calculamos a quantidade de operaes executadas para uma DFT usando uma nica decimao em tempo (uma nica quebra) e chegamos a N + 2(N/2)2 = N + N2/2. Quando temos uma decomposio de uma DFT de N/2 pontos e duas de N/4 pontos, o fator (N/2)2 substitudo por N/2 + 2(N/4)2, assim, a computao total requer: N + N + 4(N/4)2 multiplicaes complexas e adies. Se N = 2v, isso pode ser feito no mximo v = log2N vezes. Assim, se fizermos a decomposio o maior nmero de vezes possvel, temos uma quantidade total de multiplicaes complexas e adies igual a N.log2N. Todo o processo ainda pode ser mais simplificado se explorarmos a simetria e periodicidade dos coeficientes WNr. Primeiro, podemos observar que a passagem de um estgio para o outro na Fig. 7.3 tem uma computao bsica como mostrada na Fig. 7.5. Ou seja, ela envolve a obteno de um par de valores de um estgio a partir de um par de valores do estgio anterior, onde os coeficientes so sempre potncias de WN e os expoentes so separados por N/2. Por causa de sua forma, essa computao chamada de butterfly. Como: WNN/2 = e-j(2/N)N/2 = e-j = -1 o fator WNr+N/2 pode ser escrito como: WNr+N/2 = WNN/2.WNr = -WNr Com isso em mente, o clculo da butterfly da Fig. 7.5 pode ser simplificado para a forma da Fig. 7.6 que requer apenas uma multiplicao complexa ao invs de duas.
Pgina 181
Fig. 7.6. Grfico de fluxo de uma computao butterfly simplificada. Em termos prticos, para desenvolver o clculo apresentado na Fig. 7.3, poderamos usar dois arrays: um para o array sendo computado e outro para o array usado na computao. Vamos denotar a seqncia de nmeros complexos resultante do m-simo estgio como Xm[l], onde l = 0, 1, ..., N-1, e m=1, 2, ...., v. Alm disso, vamos definir o conjunto de amostras de entrada como X0[l]. Podemos pensar em Xm-1[l] como o array de entrada e Xm[l] como o array de sada do m-simo estgio. Assim, para o caso de m = 8 como na Fig. 7.3: X0[0] = x[0] X0[1] = x[4] X0[2] = x[2] X0[3] = x[6] X0[4] = x[1] X0[5] = x[5]
Pgina 182
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.8)
Fig. 7.7. Grfico de fluxo das Eqs. 7.8. Pelas equaes 7.8 e pela Fig. 7.3, est claro que apenas o passo m-1 necessrio estar armazenado para poder calcular os valores do array no passo m. Esse tipo de computao chamado de computao in-place. importante observar tambm, pela Fig. 7.3, que a seqncia de entrada acessada de uma maneira no-sequencial. De fato, a ordem no qual os dados de entrada so armazenados e acessados chamada de ordem bit-reverso. Para entendermos essa terminologia, a DFT de 8 pontos que vimos usando como exemplo precisa de 3 bits para armazenar os ndices dos dados.
Pgina 183
Escrevendo esses ndices na forma binria, obtemos o seguinte conjunto de equaes: X0[000] = x[000] X0[001] = x[100] X0[010] = x[010] X0[011] = x[110] X0[100] = x[001] X0[101] = x[101] X0[110] = x[011] X0[111] = x[111] Se (n2, n1, n0) a representao binria do ndice da seqncia x[n], ento o valor da seqncia x[n2, n1, n0] armazenado no array na posio X0[n0, n1, n2], invertendo os bits do ndice n. Essa ordenao em subseqncias de ndices pares e mpares apresentada no diagrama em rvore da Fig. 7.8. Outra forma de melhorar o desempenho do clculo da DFT atravs da subdiviso da seqncia de sada. Esses algoritmos so chamados de algoritmos de decimao em freqncia. Todo o processo bem semelhante decimao em tempo.
Pgina 184
Pgina 185
Pgina 186
pequeno, e.g., para N = 2, 3, 4, 5, 7, 8, 11, 13, 16. Os algoritmos tambm usam um mtodo mais eficiente para combinar os sub-fatores. O mtodo envolve uma re-ordenao de dados antes e depois do processamento, conseguindo uma grande reduo no nmero de multiplicaes do algoritmo. Para valores de N da ordem de potncias de 2, o algoritmo de Winograd pode ser mais rpido que algoritmos mais simples de FFT. Essa vantagem deve ser analisada com cuidado j que o mtodo torna bastante mais complicada a indexao dos dados envolvidos na transformada. Finalmente, uma classe interessante de transformadas para gerar convolues mais rpidas so as transformadas baseadas em teoria dos nmeros. Esses esquemas substituem a aritmtica de ponto-flutuante por uma aritmtica de inteiros mdulo algum valor primo grande N. De fato, esses mtodos no so transformadas de Fourier em absoluto, mas suas propriedades so similares e a velocidade computacional pode ser muito superior.
Pgina 187
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.
k = 1, ...., N
Onde:
w( k ) =
1 k 2 N
k =1 2k N
Pgina 188
Pgina 189
8. Anlise Wavelet
Em 1807, Joseph Fourier props sua anlise de freqncia em sinais. Atravs dessa anlise, um sinal no domnio do tempo poderia ser convertido para o domnio da freqncia 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
F ( )e
j 2t
(Eq. 8.2)
A Transformada de Fourier representa no domnio da freqncia uma funo do domnio do tempo. A representao no domnio do tempo especifica uma funo, em cada intervalo de tempo, enquanto que a representao no domnio da freqncia especifica as amplitudes relativas das componentes de freqncia da funo. Por exemplo, na Fig. 8.1, a transformada de Fourier da funo porta a chamada funo sample (sen(x)/x).
Pgina 190
Fig. 8.1. Exemplo de transformada de Fourier. Lembrando que ejw = sen(w) + j.cos(w), a transformada de Fourier representa um sinal como uma srie de senos e cossenos. O problema que a transformada considera o sinal todo. A transformada no sensvel a mudanas de freqncia no sinal. Assim, ela apropriada para os chamados sinais estacionrios: sinais cuja freqncia no muda com o tempo. O problema que os sinais reais so no-estacionrios. Assim, nesses casos, a transformada de Fourier torna-se intil. A Fig. 8.2 apresenta a representao de dois sinais: um estacionrio e outro no. Uma soluo para esse problema foi sugerida por Gabor em 1946. Ao invs da transformada de Fourier ser aplicada a todo o sinal, ela atuaria apenas em partes dele. O sinal passaria a ser visto em janelas e a transformada seria calculada em cada janela. A esse processo chamou-se de Transformada de Fourier de Tempo Curto (Short-Time Fourier Transform). O sinal passa a ser considerado apenas na poro que est sob a janela, sendo todo o restante desconsiderado nesse momento. Dentro da janela, considera-se que o sinal tem comportamento estacionrio (Fig. 8.3).
Pgina 191
Fig. 8.3. Transformada de Fourier de Tempo Curto A aplicao de janelas a um sinal uma prtica comum, usada bastante em processamento digital de voz. O problema associado ao uso dessa tcnica est quanto ao tamanho da janela. No caso da Transformada de Fourier de Tempo Curto, a janela tem tamanho invariante durante todo o processamento. Assim,
Pgina 192
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 freqncias ou em intervalos menores quando queremos informaes mais precisas sobre altas freqncias (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 193
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 freqncias do sinal, usamos uma alta escala para ter uma viso global no detalhada do sinal. Para anlise de altas freqncias 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 194
A Fig. 8.7 representa o comportamento da wavelet me ao longo de toda a anlise wavelet; medida que a escala vai sendo modificada, como a wavelet me se comporta.
Fig. 8.7. Comportamento da wavelet me medida que mudanas de escala vo sendo impostas a ela durante a anlise. H algumas propriedades que devem ser obedecidas para que uma funo possa ser chamada de wavelet. Neste contexto, wavelets devem satisfazer requisitos como:
possurem energia finita; possurem certo grau de regularidade (suavidade); serem nulas no infinito; possurem um certo nmero de momentos nulos; que sejam funes de classe Ck (0<k<); que tenham suporte compacto, no tempo e na freqncia.
Pgina 195
A anlise wavelet no contnuo acontece da seguinte forma: 1- Tome uma funo wavelet e compare-a com a regio no incio do sinal original; 2- Calcule a correlao C entre a funo e a regio do sinal original (Fig. 8.8a); 3- Desloque a wavelet para a direita e repita os passos 1 e 2 at que todo o sinal tenha sido coberto (Fig. 8.8b); 4 Aplique uma escala na wavelet e repita os passos 1 a 3 (Fig. 8.8c); 5 Repita os passos 1 a 4 para todas as escalas.
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 196
Para as wavelets discretas, tradicionalmente discretizam-se os parmetros s (escala) e (deslocamento), variveis do sinal transformado F(a,b), os coeficientes wavelet. Para s toma-se valores inteiros (positivos e negativos), potncias de um parmetro fixo s0: s = s0-j , s0 > 1 e jZ A discretizao de b deve depender de j tal que wavelets estreitas (de alta freqncia) sejam deslocadas por passos pequenos, e wavelets largas (de baixa freqncia) sejam deslocadas por passos maiores. Assim, uma escolha natural : b= k.b0.s0-j A wavelet discreta fica ento: b0 > 0, fixo, j,kZ
(Eq. 8.3)
O fator s0 no pode ser arbitrrio. Diferentes valores de s0 levam a wavelets diferentes, e bases ortonormais de wavelets s so conhecidas para valores racionais de s0. A escolha mais natural s0=2. Fazendo-se b0=1, a wavelet da equao 3 fica:
j , k (t ) = 2 j / 2 (2 j t k )
A wavelet acima conhecida por wavelet didica.
Pgina 197
Essa diviso nada mais do que a diviso de um sinal em baixas e altas freqncias. Isso pode ser facilmente conseguido com o uso de filtros passabaixa e passa-alta (Fig. 8.9).
Fig. 8.9. Decomposio de um sinal em suas componentes de baixa (aproximaes) e alta (detalhes) freqncias. Um problema quanto a essa decomposio o aumento na quantidade de amostras a serem armazenadas do sinal e processadas posteriormente. Se um sinal tem, por exemplo, 1.000 amostras, a passagem desse sinal por um filtro passa-baixa, por exemplo, gera um sinal com cerca de 1.000 amostras tambm, embora as amostras de alta freqncia sejam suavizadas. Assim, cada decomposio, aumentaria muito a quantidade de amostras. Para resolver esse problema, a cada passo da decomposio, o sinal resultante novamente amostrado em um processo chamado de downsampling. Dessa forma, a sada dos filtros passa-baixa e passa-alta passam a ter aproximadamente a mesma quantidade de amostras que o sinal original de entrada (Fig. 8.10).
Pgina 198
Todo esse processo pode ser repetido em cascata, tratando, como sugerido, apenas os componentes de baixa freqncia do sinal (os mais importantes). Isso pode ser visto na Fig. 8.11. A isso se chama anlise em multiresoluo.
a)
b)
Fig. 8.10. a) Processamento sem uso de downsampling e b) com uso (representado pelo bloco com a seta para baixo).
Fig. 8.11. Decomposio do sinal em baixas e altas freqncias com o mesmo processo se repetindo para as componentes de baixa freqncia. Para o processo inverso, usa-se o processo de upsampling para recuperar o sinal (Fig. 8.12). Com o processo de downsampling, h perda de informao que no se consegue recuperar com o upsampling.
Pgina 199
Fig. 8.12. Uso do upsampling (bloco com seta para cima) para reconstruo do sinal.
Pgina 200
A metade esquerda da Fig. 8.13 (filtros h0 e h1) corresponde transformada direta, chamada de anlise. A metade da direita a transformada inversa, chamada de sntese. esperado que a sntese gere um sinal de sada que seja igual ao sinal de entrada. Os filtros complementares de banco de filtros (h0 para h1 e g0 para g1) dividem o sinal em sub-sinais de baixa e alta freqncia. Isso chamado de subband coding. Para a transformada inversa, as sadas dos filtros da parte de anlise (z[n] e w[n]) passam por outros filtros FIR e, em seguida, so combinadas para gerar a sada y[n]. A idia que w[n] e z[n] sejam verses transformadas de x[n] e que y[n] o sinal aps a transformada inversa. Como dito anteriormente, espera-se que y[n] seja igual a x[n]. Vamos considerar o filter bank da Fig. 8.14 e vamos ver como se comportam w[n] e z[n].
Fig. 8.14. Exemplo de filter bank. Na parte da anlise, w[n] e z[n] so definidos por:
Pgina 201
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 202
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
Fig. 8.16. CQF para a transformada de Haar. O termo quadratura quer dizer que as respostas dos filtros passa-baixa e passa-alta so simtricas ao redor do ponto de quadratura /2. O termo
Pgina 203
mirror vem do fato de que a magnitude da resposta em freqncia do filtro HPF uma imagem espelhada da magnitude da resposta em freqncia do filtro LPF. Um das famlias de wavelets mais utilizadas a famlia das Daubechies. Criada por Ingrid Daubechies, a famlia das wavelets Daubechies (ou db) a nica famlia de wavelets que tem suporte compacto e decaimento suave. O suporte compacto impede que a wavelet se espalhe por todo o espectro. O decaimento suave impede que a wavelet introduza artefatos de altas freqncias. Um exemplo de uma wavelete de daubechies pode ser visto na Fig. 8.17.
Fig. 8.17. Forma de uma onda da famlia das Daubechies. Vamos analisar o processamento de um sinal usando uma wavelet de 4 coeficientes e um conjugate quadrature filter conforme a Fig. 8.18.
Fig. 8.18. Um conjugate quadrature filter com quatro coeficientes. Como foi feito anteriormente:
Pgina 204
w[n - k] = a.x[n - k] + b.x[n k - 1] + c.x[ n k - 2] + d.x[n k - 3] z[n - k] = d.x[n - k] - c.x[n k - 1] + b.x[ n k - 2] - a.x[n k -3]
Se consideramos, nessas operaes, que ac = -bd, ento, chegamos expresso final:
Pgina 205
Fig. 8.19. Tela do ambiente de processamento por wavelets do MatLab. Exemplos: 1. Sinal de voz: >> [som, Fz] = wavread(a_casa.wav); >> plot (som); >> [cA1, cD1] = dwt(som, 'db1'); >> % reconstruo >> l_s = length(som); >> A1 = idwt(cA1,[ ],'db1',l_s); >> D1 = idwt([ ],cD1,'db1',l_s); >> subplot(2,1,1); plot(A1); title('Aproximacao A1'); >> subplot(2,1,2); plot(D1); title('Detalhes D1');
Pgina 206
Recuperao do sinal: >> A0 = idwt(cA1,cD1,'db1',l_s); >> err = max(abs(som-A0)) err = 1.1102e-016 >> plot (A0);
Pgina 207
No wavemenu, selecione Wavelet 1-D, carregue o arquivo a_casa.wav e clique em analyze com uma wavelet haar e 5 nveis de decomposio. O resultado est apresentado abaixo:
Podemos visualizar a rvore de decomposio e o resultado final da reconstruo comparando com o arquivo original na prxima imagem:
Pgina 208
Para imagens, podemos usar o comando Wavelet 2-D do wavemenu. Carregando a imagem lena.bmp e processando com uma db1 com 5 nveis de decomposio, temos a janela apresentada na prxima figura e detalhada nas seguintes.
Pgina 209
Pgina 210
Imagem original
Imagem sintetizada
Pgina 211
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?
2. Para os coeficientes de filtros abaixo, use o MatLab para plotar a resposta em frequncia. Determine se os coeficientes correspondem a filtros passa-baixa, passa-alta ou passa-faixa: a) {-0.0884, 0.08840, 0.7071, 0.7071, 0.0884, -0.0884} b) {-0.1294, 0.2241, 0.8365, 0.4830} c) {-0.4830, 0.8365, -0.2241, -0.1294}
Pgina 212
3. No conjugate quadrature filterda Figura 8.16, se a = 3 e b = 1, temos uma transformada de Haar? Justifique. 4. Use o QMF da Figura 8.15 e encontre z, w e y para a = b = , dada a entrada x[n] = {6, 1, 3, 7, 2, 5, 8, 10}. 5. Apresente as condies e exemplo de coeficientes para outra famlia de wavelets.
Pgina 213
Pgina 214
Pgina 215
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 e retornados pelos sistemas. Para os dispositivos, como computadores, tudo apenas processamento de dados.
Pgina 216
Fig. 9.1. Relao entre processamento de imagens e outras reas correlatas. Da Fig. 9.1, podemos definir os sistemas de processamento de imagens como sistemas que recebem uma imagem de entrada e devolvem uma imagem de sada. A computao grfica refere-se ao uso de dados de entrada para gerao das imagens de sada. Por exemplo, uma imagem 3D de uma esfera gerada por um conjunto de dados que definem o centro da esfera, seu raio, quantidade de faces, etc. Esses dados so renderizados compondo a imagem final. J a viso computacional corresponde ao oposto da computao grfica: uma imagem inserida no sistema e dados so extrados dela. Um exemplo pode ser uma contagem automtica de pessoas a partir de uma fotografia. As primeiras aplicaes relacionadas a imagens datam do incio do sculo XX com as primeiras transmisses de imagens para jornais. As imagens eram transmitidas em 5 tons de cinza em cerca de uma semana. Com a inveno do sistema Bartlane (dedicado para esse tipo de transmisso), o tempo de envio de uma imagem passou a ser de apenas poucas horas. Em 1929, as imagens
Pgina 217
comearam a ser geradas em 15 tons de cinza. A partir da, o tratamento de imagens comeou a ter um maior desenvolvimento junto com o desenvolvimento de tecnologias digitais, de uma maneira geral. Na dcada de 60, registra-se o primeiro uso de computador para tratamento de imagens. No caso, procurava-se corrigir distores nas imagens transmitidas pela sonda Ranger 7.
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 218
perda, recuperando o sinal discreto correto. A reconstruo que seria o processo inverso da discretizao que ocorre de forma aproximada. O nmero de amostras que deve ser colhido de um sinal para poder recuper-lo definido pela taxa de Nyquist.
Fig. 9.2. Em azul (linha contnua) o sinal original e em vermelho (linha pontilhada) as amostras colhidas do sinal para represent-lo em um domnio discreto.
Fig. 9.3. Discretizao e codificao em oposio decodificao e reconstruo do sinal contnuo original.
Pgina 219
Tanto para sinais quanto para imagens, o processo de digitalizao ocorre da mesma forma. Em imagens, porm, ainda h outros elementos a serem cuidados como ser descrito posteriormente. Para gerao do sinal (ou imagem) discretizado, preciso ter definido todo o modelo conceitual dos objetos em estudo. Nesse caso, temos o que se chama [Gomes e Velho, 1995] do Paradigma dos Quatro Universos (Fig. 9.4). Nele, temos o Universo Fsico (que so os objetos reais, como eles existem na natureza), o Universo Matemtico (que uma descrio abstrata desses objetos), o Universo de Representao (com descries simblicas dos objetos) e, por fim, o Universo de Implementao (onde so associadas s descries abstratas e simblicas com estruturas de dados implementveis no computador). No caso, a imagem digital representada no computador atravs de uma matriz. A matriz imagem tem suas dimenses definidas durante o processo de digitalizao. A coleta de amostras define qual ser a dimenso da matriz. Essa medida define a resoluo da imagem e especificada em dpi (dots per inch ou pontos por polegada). A resoluo da imagem no pode ser alterada aps o processo de digitalizao a no ser por uma nova digitalizao. Definida as dimenses da matriz, define-se cada elemento dessa matriz. Em uma imagem digital, o seu menor elemento, ou seja, a clula da matriz, chamado de pixel. Seu valor definido tambm durante a digitalizao em um processo semelhante ao de amostragem chamado de quantizao. Em uma analogia com sinais, como fizemos na Fig. 9.2, a quantizao responsvel por discretizar o sinal em sua amplitude. Isso pode ser visto na Fig. 9.4. Nas imagens, a amplitude de cada clula da matriz corresponde sua cor. Assim, atravs da quantizao definimos quantas cores a imagem ter. A essa definio de cores chama-se de resoluo de cor da imagem. Diferente da resoluo da imagem, a resoluo de cor, em alguns casos, pode ser alterada aps a digitalizao. Dessa forma, uma imagem digital est completamente definida: suas dimenses e a cor de cada pixel. Como est claro, ento, uma imagem nada mais do que
Pgina 220
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.
Pgina 221
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.
Fig. 9.5. Experimento de Newton sobre a decomposio da luz branca. No sculo XIX, Young props o modelo tricromtico: nele, o sistema visual humano era composto apenas de trs clulas que seriam responsveis pela percepo de altas, mdias e baixas freqncias. A idia do modelo tricromtico foi comprovada por Helmholtz na dcada de 60, mas o modelo de Young no explicava alguns fenmenos do sistema visual. No entanto, com seu trabalho, Young mostrou que com apenas essas trs cores primrias (de alta, mdia e baixa freqncias) todas as cores do espectro poderiam ser geradas atravs de um processo aditivo. Atualmente, teoria da percepo das cores usa o modelo de Young-Helmholtz e o modelo de Hering. De fato, nosso sistema visual no sensvel s freqncias
Pgina 222
de forma separada, mas, sim, composio delas. Seja L a componente de baixa freqncia, M a mdia freqncia e H a alta freqncia, temos clulas fotossensveis s combinaes: L-M H (L + M) L+M As altas freqncias (baixo comprimento de onda) correspondem ao tom de azul (B), as mdias aos tons de verde (G) e as altas freqncias ao vermelho (R). Assim, percebemos as combinaes: i) R G ii) B (R + G) iii) R + G A combinao (iii) corresponde ao amarelo ou luminosidade da cor. As combinaes (i) e (ii) formam a componente de crominncia. Em 1931, a Companhia Internacional de Iluminao definiu o modelo RGB baseado na teoria de Young, onde a soma de diferentes intensidades de cada uma dessas cores primrias corresponderia a uma cor do sistema. Esse o modelo adotado pelos sistemas computacionais, por televisores, projetores, monitores, etc. Alm do sistema RGB, outros sistemas surgiram ao longo dos tempos para aplicaes especficas como o HSV, HSL, CMYK, CieLab, Pantone, etc. A mudana de um sistema para outro pode trazer diversas vantagens dependendo da aplicao. No sistema computacional de cores, cada cor representada pela trplice (R, G, B), onde cada componente de cor tem seu valor inteiro variando de 0 a 255, ou seja, 1 byte. Assim, 3 bytes so necessrios para representar uma cor. Com isso, a quantidade mxima de cores que uma imagem pode ter em um computador comum cerca de 16 milhes.
Pgina 223
No sistema padro do Windows, adotado pela maioria dos sistemas computacionais, as imagens podem ser armazenadas em 4 diferentes formatos, baseado na quantidade de bits necessria para armazenar a cor do pixel: 1) 1 bit 2 cores 2) 4 bits 16 cores 3) 8 bits 256 cores 4) 24 bits (3 bytes) 16 milhes de cores Nos casos 1, 2 e 3, o pixel armazena, de fato, uma entrada para uma tabela de cores. A tabela que armazena, efetivamente, a cor daquele pixel. Essa tabela chamada de paleta de cores. No quarto caso, o pixel armazena a cor propriamente dita, sem haver a necessidade de uma paleta. Ainda quanto ao modelo de cores, as imagens podem ser armazenadas tambm em uma paleta pr-definida, contendo apenas o nvel de brilho de cada cor, tambm chamado de tom de cinza. Essa paleta contm 256 entradas (cores), precisando, assim, de 8 bits para cada pixel da imagem codificar a entrada da paleta. O nvel de brilho de uma cor calculado tomando como base sua cor (R, G, B). Seja C o tom de cinza: C = 0,310.R + 0,510.G + 0,11.B. Podemos observar que: i) um tom de cinza corresponde a iguais valores de R, G e B (j que a Eq. 9.1 gera apenas um valor C); ii) a contribuio do componente B pequena em relao aos outros componentes. Existem diferentes formas de representar as cores de um sistema. A mais comum atravs de um slido como o cubo de cor, ou o cilindro ou o cone. Essas so trs representaes comuns para o sistema RGB. (Eq. 9.1)
Pgina 224
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
Em uma imagem, o histograma um grfico que mostra a distribuio das cores na imagem. No eixo x, encontramos todos os valores possveis de cada componente de cor de uma imagem. Cada ponto desse eixo corresponde a um contador que armazena quantas vezes aquela cor aparece na imagem. Observamos que o histograma no diz como as cores esto distribudas na imagem; apenas quantas vezes cada componente aparece. No entanto, existem outras informaes agregadas ao histograma de uma imagem que permitem alterar algumas de suas caractersticas. Por exemplo, suponha uma imagem em tons de cinza, com histograma variando de 0 a 255 (0 sendo o preto e 255 sendo o branco). Nesse caso, um histograma concentrado prximo ao 0 indica uma imagem escura, assim como um histograma concentrado prximo ao 255 indica uma imagem clara. Um histograma com uma pequena variao de cores (Fig. 9.6) indica uma imagem com baixo contraste (o contraste est associado separao das cores na imagem).
Fig. 9.6. Histograma de uma imagem de baixo contraste. Por no conter informao sobre a distribuio das cores em uma imagem, diferentes imagens podem ter o mesmo histograma (Fig. 9.7)
Pgina 225
Fig. 9.7. Imagens completamente opostas, mas que tm o mesmo histograma. As imagens podem ser manipuladas atravs de mudanas em seus histogramas. As operaes mais bsicas so de equalizao, stretch e especificao. Na equalizao, procura-se distribuir as cores de forma uniforme ao longo do histograma; isso faz com que o contraste de uma imagem aumente. No stretch, procura-se ocupar todo o espectro de cores de cada componente. Assim, se, por exemplo, o tom 20 do vermelho no estiver presente na imagem original, ele dever estar na imagem final aps a aplicao dessa operao. J a especificao faz com que uma imagem passe a ter o histograma como definido em outra imagem. Por outro lado, mudanas na imagem trazem conseqncias em seu histograma. Por exemplo, se cada pixel da imagem somado com um valor positivo X, as cores dessa imagem tornar-se-o mais prximas do branco; a imagem estar mais clara. Se o valor de X for negativo, claro, a imagem ficar mais escura. O produto de cada pixel por um valor maior do que 1 provocar a expanso do histograma, aumentando seu contraste. J o produto por um valor entre 0 e 1 provocar a compresso do histograma, diminuindo seu contraste. Nesse caso, valores negativos, claro, no fazem sentido j que as cores so positivas entre 0 e 255. Assim, atravs do histograma podemos obter algumas informaes sobre a imagem que o gerou ou modificar a imagem j atingindo, de uma primeira forma, o objetivo inicial de manipular uma imagem digital. Outras formas de manipular uma imagem, modificando suas caractersticas so vistas a seguir.
Pgina 226
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 227
Para imagens, a convoluo aplicada de forma discreta. Ou seja, no caso das imagens, as funes que convoluem so matrizes. Da mesma forma, a integrao substituda por somatrio. Na sua execuo, como na verso contnua, uma matriz fixa e a outra desloca-se sobre ela. A rea (resultado da integrao) a regio em comum entre as funes. Podemos ver esse processo com as matrizes apresentadas na Fig. 9.10.
Fig. 9.10. Convoluo discreta aplicada a matrizes. Uma caracterstica da convoluo discreta no desejvel na filtragem de imagens. Por exemplo, considere na Fig. 9.9 que f a imagem e h o filtro. A imagem de entrada tem dimenses 2x3, enquanto o resultado da operao uma matriz 3x4. Na prtica, o processo de filtragem no pode acrescentar linhas ou colunas imagem. Assim, para aplicao em imagens digitais, a convoluo digital ocorre de maneira um pouco diferente.
Pgina 228
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.
Fig. 9.10. Processo de convoluo aplicado em imagens. Por exemplo, suponha que a matriz de um filtro tem os valores:
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 z 3 z 4 z5 z 6 z7 z8 z9
O resultado da filtragem ser: w1.z1 + w2.z2 + .... + w10.z10. Assim, a matriz do filtro (chamada de mscara) atua como uma matriz de pesos. Para evitar perda das caractersticas do filtro, a mscara deve ser sempre multiplicada por 1/iw. Se o centro da mscara estiver numa posio (x,y) na imagem, o tom do pixel posicionado em (x,y) ser substitudo por R. A mscara ento movida para a
Pgina 229
prxima posio de pixel na imagem e o processo se repete. prtica criar uma nova imagem para armazenar os valores de R em vez de mudar os valores de pixel no lugar. Isso evita o uso de pixels que tenham sido alterados na operao anterior. preciso observar que essa operao exige algumas alteraes na matriz imagem para fins de processamento. Suponha um filtro formado por uma matriz 3x3. No momento que o ponto central dessa matriz processa o primeiro pixel da imagem (pixel do canto superior esquerdo), parte da mscara no estar sobre nenhum elemento da imagem. No entanto, essa parte como todo o resto da imagem precisa ser processado. Para garantir que o processamento ocorra, comum provocar uma extenso da imagem. Ou seja, a matriz imagem estendida, ganhando novos elementos em sua borda externa de forma que a operao de convoluo possa ser executada. importante ressaltar que esses novos elementos so inseridos apenas para fins de processamento. Eles no faro parte da imagem original e nem da imagem de sada. Para um filtro 3x3 precisa-se estender a imagem de uma linha para cima, uma linha para baixo e uma coluna para cada lado. A Fig. 9.11 retrata essa situao, estando em cinza a imagem original e em branco a rea estendida da imagem. Nessa figura, o filtro est sendo aplicado exatamente no primeiro pixel da imagem. Essa extenso necessria para o processamento de toda a borda interna da imagem. A quantidade de elementos a ser estendidos depende da dimenso do filtro. Os elementos inseridos na extenso dependem do tipo de extenso. A extenso mais simples a fixa que preenche toda a borda externa com um valor fixo. Se esse valor zero, a extenso chamada de nula. O prefervel que a extenso seja preenchida com os valores da borda interna da imagem para diminuir os efeitos de borda (pixels com cores no relacionadas com as cores presentes no restante da imagem).
Pgina 230
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 freqncias 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 freqncias (freqncias entre w e w) e eliminar as altas freqncias. Na prtica, esse filtro tem um comportamento como o da Fig. 9.12c, onde ele, na verdade, no elimina completamente as altas freqncias, mas as atenua.
Pgina 231
a)
b)
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 freqncias 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 freqncia da imagem e a Fig. 9.13b apresenta o resultado de uma filtragem passa-baixa.
b)
Esse filtro tem comportamento oposto ao passa-baixa e gerado por uma funo que tem valor zero entre w e w e 1 fora desse intervalo (Fig. 9.14a). O
Pgina 232
filtro Laplaciano um exemplo de um filtro passa-alta (Fig 9.14b). Como um filtro passa-alta, sua funo deixar passar as altas freqncias e eliminar as baixas freqncias. Na prtica, esse filtro tem um comportamento como o da Fig. 9.14c, onde ele, na verdade, no elimina completamente as baixas freqncias, mas as atenua, intensificando as altas.
a)
b)
c)
Fig. 9.14. a) Forma de um filtro passa-alta ideal, b) matriz de um filtro passa-alta (filtro Laplaciano) e c) forma de um filtro passa-alta real. O resultado da aplicao de um filtro passa-alta em uma imagem o destaque de seus contornos. A atenuao das baixas freqncias e intensificao das altas provoca um realce nas regies de fronteiras da imagem (regies que h mudanas bruscas entre tons claros e escuros). Uma ilustrao do efeito da aplicao desse filtro em uma imagem pode ser visto na Fig. 9.15.
a) imagem resultante.
b)
Pgina 233
3) Filtro Passa-Faixa Esse filtro permite a passagem de freqncias dentro de um intervalo e cortam as freqncias 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 freqncias 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 234
possvel tambm aplicar uma filtragem no domnio da frequncia. Considere a funo abaixo no MatLab que calcula a transformada de Fourier de uma imagem.
function [F] = img_fourier (nome, ext) nome_in = [nome '.' ext]; im = imread(nome_in); figure, imshow (im); F = fft2(im); figure; F2 = fftshift(F); imshow(log(abs(F2)), []); colormap (jet);
O cdigo acima pode ser complementado com as linhas abaixo para implementar um filtro passa-baixas (gaussiano) e um filtro passa-alta (laplaciano).
nx = size(F, 2); ny = size(F, 1); cxrange = [0:nx/2, -nx/2+1:-1]; cyrange = [0:ny/2, -ny/2+1:-1]; [cx, cy] = meshgrid(cxrange, cyrange); fxrange = cxrange * 2*pi/nx; fyrange = cyrange * 2*pi/ny; [fx, fy] = meshgrid(fxrange, fyrange); sigma = 0.3; % Gaussiana ms = exp(-(fx.^2 + fy.^2)/(2*sigma^2)); smoothF = F.* ms; smooth = ifft2(smoothF); figure, imshow(smooth, []); ftd = F.*fx.*i; % Diferenciacao ftd(:, nx/2+1) = 0; d = ifft2(ftd); figure, imshow(d, []);
Pgina 235
Por exemplo, um dos primeiros algoritmos utilizados especificamente para comprimir alguns tipos de imagens o algoritmo de run-length. Esse algoritmo armazena a quantidade de vezes que uma cor se repete e qual essa cor. Ele muito til para alguns tipos de imagens, principalmente, imagens com apenas duas cores. Considere, por exemplo, uma imagem em preto-e-branco de um documento. Em geral, maior parte do documento papel, ou seja, tons em branco. Assim, nesse exemplo, regies inteiras da imagem podem ser codificadas com apenas um contador e o valor do tom branco. Em alguns casos como esse, o algoritmo de run-length bastante eficiente. Para imagens coloridas em geral, o algoritmo no funciona bem, podendo at expandir o espao de armazenamento necessrio para a imagem. No entanto, esse algoritmo de compresso encontra-se implementado em uma variao do formato BMP, o BMP_RLE (Run-Length Encoding). Outro algoritmo que sofreu uma variao e foi implementado para imagens o Lempel-Ziv. O LZ77 foi criado por Abraham Lempel e Jacob Ziv em 1977, sendo um algoritmo de compresso dinmico. Ou seja, ele gera a codificao medida que l o arquivo de entrada. Isso diferente de outros algoritmos clssicos de compresso de dados como o cdigo de Huffman que, em sua verso clssica, primeiro l todo o arquivo, gerando a codificao. Somente depois, outra varredura feita para gerar a compactao. Em 1984, Terry Welch props uma modificao no LZ77 (a qual foi chamada de LZW) que o tornou mais eficiente. Essa modificao , por exemplo, implementada no formato GIF (Graphic Interchange Format) para armazenamento de imagens de at 256 cores. O LZW inicializado com um dicionrio bsico de codificao e esse dicionrio vai ganhando novos cdigos medida que o arquivo vai sendo lido. Na transmisso ou armazenamento, apenas o dicionrio bsico enviado com o arquivo. Durante a descompactao, o mesmo dicionrio formado automaticamente.
Pgina 236
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 237
No h necessidade de indicar o tipo da imagem j que isso lido direto do cabealho da mesma. O MatLab aceita imagens do tipo bmp, jpg, tif, pcx e alguns outros. A principal funo desse cdigo a leitura do arquivo da imagem com o comando imread. possvel esse comando ter dois argumentos de sada quando queremos armazenar em uma varivel a paleta de cores de uma imagem (no caso de imagens com at 256 cores). Isso pode ser feito da forma: [im, map] = imread(lena.bmp); Para imagens armazenadas no formato true color (24 bits) no h paleta de cores. As matrizes R, G, B so armazenadas assim na imagem. Isso tratado no MatLab como uma matriz 3 dimensional. Cada dimens contm uma matriz mxn que corresponde matriz de um dos tons (exatamente na ordem RGB). Para separar cada componente, o seguinte cdigo pode ser utilizado: >> im = imread(flowers.bmp); % imagem 24 bits >> r = im(:, :, 1); % atribui todas as linhas e todas as colunas do primeiro plano % de im varivel r >> g = im(:, :, 2); % matriz do segundo plano >> b = im(:, :, 3); % matriz do terceiro plano Nesse caso, observe que a leitura das dimenses da imagem deve ser feita como: >> [lin, col, plano] = size(im); Ou seja, um terceiro parmetro de sada deve ser usado. Podemos criar uma nova imagem 24 bits fazendo: >> im2 = uint8(zeros(lin, col, 3)); % criada uma imagem s de zeros Cada plano dessa nova imagem pode receber os planos da outra imagem, por exemplo: >> im2(:, :, 1) = r; >> im2(:, :, 2) = g; >> im2(:, :, 3) = b; Recorte de cores pode ser feito com os comandos:
Pgina 238
rgb2grey: converso de 24 bits para tons de cinza im2bw: converso para preto-e-branco (dado um ponto de corte) rgb2ind: converso de 24 bits para 256 cores As dimenses de uma imagem podem ser alteradas com o comando imresize: B = imresize(A, M, method) % Retorna uma matriz que M vezes maior (ou menor) que a imagem A % onde method = % nearest = vizinho mais prximo % bilinear = interpolao bilinear % bicubic = interpolao bicbica % Exemplo: >> B = imresize (A, 0.5, nearest); O comando imrotate rotaciona uma imagem: B = imrotate(A, ngulo, method); onde method = nearest, bilinear ou bicubic. Exemplo: >> A = imread (eight, tif); >> B = imrotate (A, 45, nearest); imhist calcula o histograma de uma imagem: >> h = imhist(im). Quanto a histograma, as funes histeq e imadjust provocam a equalizao e a especificao do histograma de uma imagem, respectivamente. A filtragem de uma imagem pode ser conseguida com a funo filter2. Observase que a funo devolve uma matriz de valores reais. Assim, eles precisam ser arredondados e convertidos para uint8 para poderem ser visualizados e armazenados como uma imagem: >> im = imread(lena.bmp); >> h = fspecial (average, 5); % cria um filtro da mdia (box) >> im2 = uint8(round(filter2(h, im)));
Pgina 239
>> imshow (im2); No cdigo acima, usamos a funo fspecial para criar o filtro da mdia. O parmetro 5 indica a ordem do filtro (dimenses da matriz quadrada). A funo permite ainda a criao de filtros: gaussian, sobel, prewitt, laplacian, log, average e unsharp. Cada um com sua particularidade quanto ordem.
Pgina 240
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
Qual a imagem resultante aps a aplicao de um filtro Box 3x3? 5. No MatLab, aplique um mesmo filtro passa-baixa de ordens diferentes nas imagens cameraman.bmp e lena.bmp. Compare os resultados encontrados e analise as diferenas medida que as ordens se diferenciam mais e mais. Explique os motivos das diferenas encontradas nos resultados.
Pgina 241
Pgina 242
Pgina 243
diferentes comprimentos entre diferentes palavras de um cdigo. Por exemplo, se: A=0 B = 01 temos um cdigo de bloco. Os cdigos de bloco, por sua vez, podem ser divididos em singulares ou nosingulares. Nos cdigos no-singulares todas as palavras cdigo so distintas. Por exemplo: A = 10 B = 11 Se h repetio, nas palavras cdigo, temos um cdigo singular. Por exemplo: A = 10 B = 10 C = 01 Os cdigos no-singulares so divididos em unicamente decodificveis ou no unicamente decodificveis. Os cdigos unicamente decodificveis no geram ambigidades na decodificao; o mapeamento de volta ao alfabeto fonte feito de forma nica. J os no-unicamente decodificveis geram ambigidades. Por exemplo: A = 10 B = 11 C = 01 um cdigo unicamente decodificvel, enquanto: A=0 B=1 C = 01 no . Se o receptor recebe a seqncia 01, ela pode ser decodificada em AB ou C.
Pgina 244
Por ltimo, os cdigos unicamente decodificveis podem ser divididos em instantneos ou no-instantneos. Os cdigos so ditos instantneos se sua decodificao no precisa de informao futura. Por exemplo, o cdigo: A = 10 B = 100 C = 1000 no instantneo. Para decodificar uma seqncia de bits, precisamos ler o prximo bit para saber se ele zero ou um, denotando o encerramento ou no da seqncia. J o cdigo: A = 01 B = 001 C = 0001 instantneo; ao encontrarmos um bit 1 sabemos que o cdigo acabou. Essa classificao pode ser vista em resumo na figura abaixo:
Uma condio necessria e suficiente para um cdigo ser unicamente decodificvel que nenhuma palavra completa do cdigo seja prefixo de outra palavra qualquer.
Pgina 245
Por exemplo, se: A = 10 B = 01 C=? C no pode receber nenhum cdigo que comece com 10 ou 01 para garantir que o cdigo seja unicamente decodificvel. A desigualdade de Kraft garante que um cdigo instantneo. Se, para um cdigo de base r, com q palavras, cada palavra com comprimento Li, a desigualdade
satisfeita, ento o cdigo dito instantneo. Por exemplo, considere o cdigo: A=0 B = 01 C = 11 Ou seja, 2-1 + 2-2 + 2-2 = 1 Isso garante que o cdigo instantneo. McMillan mostrou que, se um cdigo satisfaz a mesma desigualdade, ele tambm unicamente decodificvel. Para um cdigo, o comprimento mdio calculado como: comprimento Li=1 comprimento Li=2 comprimento Li=2 base r=2
Nmero binrio
onde Li o comprimento de cada uma das q palavras do cdigo e Pi a probabilidade de cada palavra. Um cdigo dito compacto para uma fonte S,
Pgina 246
se seu comprimento mdio menor ou igual ao comprimento mdio de todos os outros cdigos unicamente decodificveis para a mesma fonte S. J a taxa de compresso, C, para arquivos em geral, medida como:
C=
Pgina 247
Vamos ver o exemplo de funcionamento de alguns algoritmos, comeando com algoritmos de compresso sem perdas.
Organizam-se probabilidades;
os
smbolos
em
ordem
decrescente
de
suas
Uma fonte reduzida formada a partir dos 2 smbolos de menor probabilidade; Continua o passo anterior at que s restem 2 smbolos; Atribui-se 0 a um dos smbolos e 1 ao outro, aleatoriamente; Continua atribuindo 0s e 1s at chegar aos smbolos iniciais.
Por exemplo, considere um arquivo com apenas 5 smbolos (a, b, c, d, e) dispostos na mensagem M da seguinte forma: M=aaabbbcecd Primeiro, deve-se calcular a probabilidade de cada smbolo. Assim, temos a com probabilidade de 0,3; b com probabilidade de 0,3; c com 0,2; d com 0,1; e e com 0,1. Esses smbolos so listados em ordem decrescente de probabilidade. Os smbolos de menor probabilidade vo sendo agrupados, gerando smbolos cuja probabilidade dada pela soma das probabilidades dos smbolos que os gerou e criando, assim, as chamadas fontes reduzidas. O processo continua at que s reste uma quantidade de smbolos igual base a que se deseja gerar a codificao (por exemplo, para uma codificao binria base 2 o processo continua at que s restem dois smbolos). A figura abaixo representa o processo:
Pgina 248
A partir dos smbolos da ltima fonte reduzida, atribui-se 0 para um smbolo e 1 para o outro, aleatoriamente. Esse processo vai se repetindo pelas outras fontes reduzidas at chegar aos smbolos da fonte. A partir da penltima fonte, as atribuies de 0s e 1s so feitas direita dos smbolos, garantindo que nenhuma palavra do cdigo ser prefixo de outra (tornando o cdigo unicamente decodificvel):
No caso desse exemplo, a seguinte codificao gerada: a 10 (2 bits) b 11 (2 bits) c 00 (2 bits) d 010 (3 bits)
Pgina 249
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 250
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 seqncia. Por exemplo, para a seqncia: 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 251
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 252
O MPEG define trs nveis ou camadas de compresso para udio. Em cada camada o nvel de compresso mais complexo e exige mais poder computacional. A terceira camada (layer 3) se tornou bastante popular para a compresso de udio e atualmente o que conhecemos como MP3, ou melhor, MPEG Layer 3. MPEG-2 um padro de compactao de maior qualidade utilizado em radiodifuso por satlite, por exemplo. Pode ser utilizado em transmisses a taxas de 4 a 9 Mbps. Uma verso modificada do MPEG-2 usada pelo padro HDTV e tambm nos DVDs. MPEG-4 e derivados - O padro MPEG 4 e seus derivados (DiVX, XViD, etc.) um dos mais usados atualmente. Devido melhoria dos recursos computacionais, principalmente, eles podem oferecer qualidade semelhante MPEG-2 sem ocupar tanto espao. Vamos detalhar mais sobre compresso de udio e vdeo a seguir:
preciso analisar tambm a implementao em hardware ou software. O grau da compresso , geralmente, avaliado como uma razo entre os dados de sada e os de entrada. Essa medida, no entanto, pode trazer problemas para imagens (estticas ou dinmicas) quando temos uma matriz m versus n com ainda uma quantidade de bits por pixel para representar a cor. Uma maneira
Pgina 253
mais eficiente de especificar o total de compresso determinar o nmero de bits por pixel apresentado (displayed) necessrio no bitstream2 comprimido. Por exemplo, se estamos reproduzindo uma imagem 256x240 pixels de um bitstream de 15.000-byte, estamos comprimindo: (bits)/(pixels) = (15.000x8 bits)/(256x240 pixels) = 2 bits por pixel A taxa de compresso apenas, no entanto, no medida suficiente para avaliar um sistema. Outro fator igualmente importante a qualidade da imagem gerada. Nesse sentido, podemos dividir os algoritmos de compresso, de uma maneira geral, em com perda ou sem perda. Nos algoritmos de compresso sem perda, no h necessidade de avaliar a qualidade da imagem j que ela exatamente igual imagem original. Nesse caso, porm, deve ser feita a transmisso de todos os pixels da imagem. Algoritmos de compresso sem perda, normalmente, geram uma quantidade maior de dados a serem transmitidos. Algoritmos de compresso com perda provocam alguma mudana na imagem. O objetivo, porm, fazer com que essa mudana no seja perceptvel pelo usurio. Algoritmos de compresso com perda podem inserir diversos artefatos na imagem e no fcil quantificar o desempenho desses algoritmos. Normalmente, essa avaliao feita com algum critrio subjetivo. Tais algoritmos ainda trazem um outro problema a ser tratado: a velocidade de compactao e descompactao. Para vdeo, esse um problema fundamental, pois so milhares de imagens Se, (quadros para ou frames) imagens, que so uma compactados/descompactados.
compactao/descompactao de 1 segundo considerada rpida, para vdeos essa uma taxa inaceitvel. Uma taxa mais rpida est associada ao algoritmo utilizado e a como esse algoritmo implementado (hardware ou software). Na maioria dos casos, hardware especfico necessrio para conseguir implementar os algoritmos com a mxima eficincia.
Sada do compactador.
Pgina 254
Os algoritmos de compresso buscam reduzir a quantidade de elementos redundantes no arquivo. Em imagens de vdeo digital essa redundncia pode ser encontrada de diferentes formas:
Algumas reas do frame possuem a mesma cor que se espalha por mais de um pixel (redundncia espacial);
Quando a cena ou parte dela contm predominantemente objetos orientados verticalmente existe grande probabilidade que duas linhas adjacentes sejam as mesmas (redundncia espacial);
Imagens onde alguns pixels se repetem por diversos frames (redundncia temporal).
Algoritmos de compresso podem explorar essas caractersticas de redundncia a fim de conseguirem uma melhor taxa de compresso. Outros elementos podem ser considerados pelo algoritmo de compresso. Por exemplo, quanto resoluo de cor, o sistema visual humano tem certas limitaes quanto percepo de cores. No conseguimos diferenciar cores que esto muito prximas no espectro. Necessitamos de uma diferena de at 10 tons (em termos de sistema computacional de cores) para perceber duas cores adjacentes diferentes. Assim, podemos converter duas cores adjacentes que tenham uma distncia menor do que 10 entre elas para que se tornem uma mesma cor. Com isso, inserimos elementos redundantes que melhoram os resultados de algoritmos de compresso (observamos que essa mudana provoca perdas na imagem mesmo elas no sendo perceptveis, so mudanas na imagem original). As principais tcnicas de compresso de vdeo so baseadas em:
Pgina 255
Color Look-Up Table: o pixel na matriz da imagem corresponde na verdade a um ndice para uma tabela que aloca as cores reais.
Codificao Run-length: j explicada anteriormente. Tcnicas de interpolao: compresso atravs de interpolao atua a nvel de pixel e consiste de transmitir um subconjunto de pixels, usando tcnicas de interpolao para reconstruir os pixels intermedirios. Interpolao sugerida para ser usada em sistemas baseados no modelo YIQ (como o NTSC) ou YUV (como o Pal).
Tcnicas preditivas: tcnicas de compresso preditivas so baseadas no fato que podemos armazenar um elemento anterior (como um frame, por exemplo) e usar essa informao para predizer qual o prximo elemento. o DPCM: a forma mais simples de compresso preditiva chamada de PCM diferencial (ou DPCM, onde PCM = pulse code modulation). Em DPCM, pixels adjacentes so comparados e apenas a diferena entre eles transmitida. H uma grande probabilidade de alta compresso por esse mtodo porque pixels adjacentes, em geral, tm cores muito prximas. Assim, espera-se uma diferena pequena que pode ser transmitida em uma quantidade menor de bits. Um problema de DPCM ocorre quando a diferena entre os pixels ultrapassa o limite de representao da quantidade de bits adotada pelo sistema. Por exemplo, suponha um sistema que use apenas 4 bits para armazenar/transmitir a diferena entre tons. Se h uma regio de mudana de preto para branco, essa mudana no poder acontecer entre pixels adjacentes, pois no haveria como represent-la. Seria necessrio um certo nmero de pixels intermedirios para conseguir a
Pgina 256
representao. Esse efeito chamado de slope overload. Esse efeito pode provocar um embaamento na imagem. o ADPCM: O slope overload pode ser reduzido tornando o DPCM adaptativo (ADPCM). Uma forma simples de implement-lo tornando adaptativa a quantidade de bits necessria para armazenar a diferena entre os pixels. O uso de ADPCM pode provocar rudos nas regies de alta freqncia.
Tcnicas de codificao por transformadas: uma transformada uma tcnica que converte um conjunto de dados de um domnio para outro mais apropriado para a aplicao. As transformadas, em geral, so reversveis. Uma das transformadas mais utilizadas para compresso de imagem e vdeo a Transformada Discreta do Cosseno (DCT). o DCT: A DCT executada em blocos adjacentes de pixels (em geral, 8x8). Assim, 64 pixels por vez so processados pela DCT. A DCT calculada como:
onde
A DCT est relacionada com a DFT; a DFT, de fato, um passo no clculo da DCT para uma seqncia. A DCT, no entanto, tem
Pgina 257
propriedades de compactao de energia, com apenas uns poucos coeficientes da transformada representando a maior parte da energia da seqncia. Essas propriedades fazem a DCT bem apropriada para compresso de dados. Por causa dessa compresso, possvel reconstruir um sinal a partir de apenas alguns coeficientes da DCT. Apesar de serem relativamente fceis de implementar em qualquer linguagem de computador, a compresso de imagens demanda um grande poder de processamento e por isso precisa ser otimizada ao mximo. O uso da DCT em imagens grandes, apesar de apresentar timos resultados, exige um processamento muito grande. Por isso na prtica a estratgia que se adota de dividir a imagem em blocos de tamanho menor (em geral de tamanho 8x8 pixels, como no JPEG), levando a nossa primeira otimizao:
Otimizao 1: a imagem a ser tratada deve ser dividida em blocos menores facilitando a computao das transformadas. Outra justificativa para esta abordagem que apesar de terem bastante correlao com os vizinhos prximos, existe pouca ou nenhuma correlao entre pontos distantes de uma mesma imagem. Os ganhos de processamento com esta abordagem suplantam em muito as perdas em termos de compresso.
O clculo das funes de cosseno, por ser uma funo transcendental, tambm exige bastante poder de processamento. Se verificarmos a frmula da transformada discreta de cosseno veremos que podemos pr-calcular todos os valores de cosseno a serem utilizados, e depois disto apenas realizar operaes
Pgina 258
Otimizao 2: os cossenos utilizados devem ser prcalculados e armazenados, realizando-se assim apenas operaes aritmticas ao se calcular a frmula da transformada.
Ao aplicar a transformada discreta de cosseno, os coeficientes mais significativos se acumulam no incio do vetor (ou matriz) dos dados, ficando o restante com valores muito pequenos e carregando pouca informao. Este tipo de distribuio j suficiente para que uma tcnica de reduo de redundncia (como os algoritmos LZ77, LZ78 ou LZW) ou uma codificao otimizada (como codificao de Huffman ou codificao aritmtica) produzam melhores resultados do que na imagem ou nos dados originais. Entretanto, por trabalharmos sempre com uma preciso finita nas representaes numricas utilizadas, acabamos por ter uma perda nos dados. Portanto, mesmo sem aplicar nenhuma forma de quantizao, a compresso usando transformada discreta de cosseno uma compresso com perdas. Entretanto, a forma mais comum e que gera melhores resultados, a aplicao de uma operao de quantizao nos dados gerados pela transformada, e armazenar apenas os dados quantizados. Essa quantizao permite uma maior eficincia das tcnicas de codificao e eliminao de redundncia utilizadas. Algumas formas de quantizao normalmente utilizadas com a transformada discreta de cosseno so:
Eliminao
dos
componentes
menos
significativos
Pgina 259
Diviso
inteira
dos
valores
por
um
coeficiente
de
quantizao fixo (assim pode-se usar menos dgitos, ou bits, para se representar os valores).
Diviso
inteira
por
uma
matriz
de
coeficientes
de
quantizao (Esta tcnica a empregada pela maioria dos padres de compresso de dados, pois mais flexvel e permite que se ajuste a matriz a qualidade desejada da imagem).
MPEG Na dcada de 80, ficou claro a necessidade de aliar imagem com tecnologia digital. Nesse sentido, em 1988 ISO esquematizou o MPEG (Moving Picture Experts Groups), para desenvolver padres para o vdeo digital. Foram definidos trs itens a serem desenvolvidos: 1. Vdeo e udio associados a uma taxa de 1.5 Mbps (mais tarde chamado de MPEG-1); 2. Imagens em movimento e udio associados a uma taxa de 10 Mbps (mais tarde chamado de MPEG-2);
Pgina 260
3. Imagens em movimento e udio associados a uma taxa de 60 Mbps (mais tarde reduzido para 40 Mbps e ento cancelado). MPEG 1 era orientado como imagem digital armazenada em Mdia de armazenagem digital (DSM - Digital Storage Media). MPEG-2 foi orientado como broadcast. MPEG-3 para televiso de alta-definio (HDTV). Enquanto os padres se desenvolviam ficou claro que as tcnicas empregadas nos padres poderiam ser usados em qualquer bit-rate (quantidade de bits necessrios para codificar um segundo de informao, seja esta vdeo, udio ou ambos). Assim, os ttulos dos que incluam a taxa de transmisso foram alterados para MPEG-1 e MPEG-2 e ficou claro que MPEG-2 poderia satisfazer as necessidades do HDTV, assim, o MPEG-3 foi descartado. O vdeo, udio, ou qualquer outra informao para um servio codificado em MPEG deve ser multiplexado num nico fluxo de bits. Essa a principal tarefa do MPEG-2 Systems. Quando o multiplexador est recebendo um fluxo de bits de vdeo e udio comprimidos, como eles devem ser multiplexados para que o decodificador possa obt-los sincronizados? Uma outra tarefa do sistema fornecer meios para essa sincronizao. Apesar de que um fluxo MPEG representa um fluxo constante de bits, os bits precisam ser organizados em grupos (pacotes) para que erros de bit no se propaguem alm das fronteiras de um nico pacote. Geralmente, quanto maior o pacote, mais suscetvel ele aos erros de bit. Por outro lado, agrupando os bits em pacotes cria um maior trfego para acomodar os cabealhos dos pacotes. Geralmente quanto menores os pacotes, maior o trfego. Assim, existe um trade-off entre escolher o tamanho do pacote e sua resilincia e eficincia. Podese considerar, portanto, que formar pacotes uma terceira funo para os MPEG Systems.
Pgina 261
Na maioria dos casos, decodificadores necessitam de Informaes Especficas do Programa (PSI - Program Specific Information) para decodificar o os dados que chegam. Fornecer estas PSIs a quarta tarefa do MPEG Systems. Um MPEG Systems deve: 1) Multiplexar fluxos de bits individuais num nico fluxo de bits. 2) Prover maneiras para sincronizar os fluxos de bits que compem um servio de udio e/ou vdeo. 3) Empacota os bits em grupos. 4) Prov informaes especficas chamadas PSI. Nos MPEG-2 Systems, um programa definido como o conjunto de Fluxos Elementares significativos, como udio e vdeo, que tm a mesma base de tempo. Um arquivo MPEG um arquivo digital contendo vdeo e udio digitais codificados seguindo determinados padres de compresso e armazenados em um dado formato especfico. O comit ISO especifica separadamente o tratamento de udio e de vdeo, permitindo streams sem udio, por exemplo. Um filme uma seqncia de blocos. Cada bloco do filme contm sees individuais para o vdeo e para o udio. A sincronizao entre o vdeo e o udio feita atravs de marcadores de tempo que so fixados durante a codificao nos identificadores de blocos. O padro MPEG especifica 3 tipos de quadros comprimidos no arquivo de sada. Nos quadros I (Intraframe) somente se aplicam algoritmos de reduo de redundncia espacial. Nos quadros P (Predicted) e B (Bidirectionally Predicted) tambm se aplicam algoritmos de reduo de redundncia temporal. No caso dos quadros B a predio de movimento bidirecional, ou seja, feita com quadros no passado e no futuro em relao ao quadro sendo codificado.
Pgina 262
Os quadros apresentam diferentes taxas de compresso, sendo que os quadros B apresentam a maior taxa, seguidos dos P e dos I (Tabela 10.1). Isto se deve ao fato de que nos quadros I eliminamos apenas a redundncia espacial. Quanto maior a compresso, maiores as perdas de qualidade sofridas nos quadros, por isso h a necessidade de intercalar quadros I de tempos em tempos para permitir a restaurao da qualidade do sinal e tambm acesso aleatrio aos quadros do filme (Fig. 10.1). Uma anlise bilateral (observando frames passados e futuros) importante para permitir que frames futuros sejam usados em uma predio mais correta. Tabela 10.1. Taxa de compresso de cada tipo de quadro no MPEG. Quadro Taxa de Compresso I P B 10-20:1 20-30:1 30-50:1
Fig. 10.1. Disposio dos quadros no formato MPEG. O padro publicado pela ISO especifica o formato final do arquivo comprimido, deixando margem para que diferentes abordagens possam ser utilizadas, com diferentes compromissos entre compresso e complexidade computacional. Alm disso, tambm fazem parte do padro:
Pgina 263
Uso da Transformada Discreta do Cosseno (DCT), seguida de Quantizao e Run Length Encoding (RLE) para reduo da redundncia espacial de cada quadro do filme;
Uso de Motion Estimation e Motion Compensation (MEC) preditiva e interpolativa para reduo de redundncia temporal entre quadros e Uso de Codificao de Huffman ao final do processo, gerando a compresso efetiva.
A DCT faz uma transformao na imagem, mudando o domnio de representao da mesma. Este processo no introduz perdas de qualidade na imagem, sua utilizao se d porque ela permite uma representao mais compacta da imagem, facilitando a compresso. O uso da DCT faz com que as maiores frequncias se concentrem no canto superior esquerdo da matriz (Fig. 10.2-direita, quadro em vermelho). Por exemplo, considere que na Fig. 10.2-esquerda temos o resultado da converso de uma imagem do formato RGB para o formato YCbCr (mais indicado para vdeo). Aps a aplicao da DCT nesse bloco da imagem, temos como resultado a matriz apresentada na Fig. 10.2-direita.
Fig. 10.2. Aplicao da DCT: (esquerda) regio 8x8 da imagem em YCbCr e (direita) o resultado da aplicao da DCT nessa regio.
Pgina 264
Aps a aplicao da DCT, uma quantizao feita tomando uma matriz de quantizao fixa (Fig. 10.3-esquerda). Cada valor da matriz gerada pela DCT dividido pelo valor correspondente na mscara de quantizao e arredondado para um inteiro. O resultado para a matriz DCT da Fig. 10.2-direita apresentado na Fig. 10.3-esquerda.
Fig. 10.3. (esquerda) Matriz de quantizao e (direita) resultado da quantizao da matriz DCT da Fig. 10.2-direita. Observamos nessa matriz quantizada uma grande presena de valores zero. Assim, podemos agrup-los, usando, por exemplo, uma codificao run-length. Para t-los agrupados de forma mais adjacente, uma leitura em zig-zag (Fig. 10.4) feita nessa matriz.
Fig. 10.4. Leitura em zig-zag da matriz DCT para aplicao da codificao RunLength.
Pgina 265
Existem diferentes formas de se detectar movimento de objetos numa seqncia de imagens. O padro MPEG adota algoritmos de MEC baseados em casamento de blocos. Este algoritmo consiste na procura de um bloco de tamanho fixo (16x16 pixels no padro MPEG) de um quadro em uma janela de busca em um quadro seguinte (ou anterior). Esta janela pode ser de tamanho varivel, mas o tamanho usual de 30x30 pixels. A Fig. 10.5 mostra um exemplo de tal tcnica.
Fig. 10.5. Aplicao de Motion Estimation. O padro MPEG usa uma variao da DCT chamada MDCT (Modified DCT):
S i = x k cos(
k =0
n 1
xk =
DivX
n / 2 1
i =0
S i cos(
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 266
realizar a operao ou tenha dificuldades para realizar a exibio. O DivX compatvel com Windows, Linux, Solaris e Mac OS X. Atualmente, os arquivos DivX esto amplamente presentes nas redes dos programas de P2P, devido ao seu reduzido tamanho e tima qualidade. O mtodo de compactao DIVX funciona como um MP3 para vdeo. Mas, ao contrrio do MP3, que apaga sons sobrepostos que nosso crebro no conseguiria reconhecer, o DIVX torna repetitivas as imagens que no se modificam no decorrer dos frames (quadros) que formam o vdeo. Simplificando: tomando-se uma cena onde a cmera esttica e fundo no se modifica, o codec DIVX grava um nico frame dessa imagem e repete-o at a imagem sofrer alguma alterao. Na mesma cena, caso haja uma pessoa andando, somente os pixels em que sua imagem se sobrepe so modificados. O resto da cena pode ser considerado, grosseiramente, como uma foto esttica ao fundo do vdeo. Desta forma, so guardados muito menos dados pelo vdeo compactado, resultando um arquivo de tamanho reduzido com uma perda de qualidade pequena. Assim como que em outros programas e plug-ins encontrados na Internet, para se converter um arquivo de vdeo em formato no compactado para um em DivX preciso comprar o DivX Codec que o software responsvel por esta tarefa, porm, se seu objetivo apenas o de assistir os vdeos j compactados em DivX, possvel se fazer o download gratuito do tocador (player) no site oficial da DivX, Inc ou em quaisquer sites de downloads.
Pgina 267
outro formato e s aplicado a arquivos amostrados com baixas taxas. Blocos de silncio so marcadores que contm um valor de durao do tempo que representa a extenso do silncio ou quase silncio.
Silncio definido como a amplitude da forma de onda que no ultrapassa a janela de silncio. Uma extenso de silncio menor que a janela considerada muito curta para merecer a converso para bloco de silncio. Os Blocos de silncio no existem na maioria dos formatos de arquivos de udio. Outro problema que pode haver uma confuso do silncio com o incio de um som (como um fricativo inaudvel - /f/, /s/, /sh/) (Fig. 10.6).
Fig. 10.6. Som fricativo inaudvel que pode ser confundido com um silncio por ter baixas amplitudes em parte dele.
Pgina 268
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 269
Faixa de freqncia audvel dos seres humanos; Faixa de freqncia audvel humana: O ouvido humano, devido s suas limitaes fsicas, capaz de detectar sons em uma faixa de freqncia que varia de 20 Hz a 20 KHz, sendo que estes valores podem variar de indivduo para indivduo e tambm com a idade (com o envelhecimento perdemos a capacidade de ouvir freqncias mais altas). Assim, no faz sentido armazenar dados referentes a sons fora desta faixa de freqncia, pois ao serem reproduzidos, os mesmos no sero percebidos por um ser humano. Esta a primeira limitao da audio humana do qual o sistema MP3 faz uso para alcanar altas taxas de compresso. De acordo com o Teorema de Nyquist, para garantir a reproduo de um sinal, temos de amostr-lo pelo menos a duas vezes sua freqncia mxima. Ou seja, neste caso, como a freqncia mxima de interesse 20 KHz, basta amostrar a 40 KHz. Utiliza-se 44.100 Hz como taxa de amostragem, pois leva-se em considerao 10% de tolerncia e busca-se um valor produto dos quatro primeiros nmeros primos (Obs: (2x3x5x7)^2 = 44100). Dessa forma, esta taxa de amostragem funciona como um filtro passa-baixa, que remove todos os componentes de freqncia fora da faixa de interesse, neste caso, acima de 20 Khz.
Limiar de audio na faixa de freqncia audvel; Limiar de audio na faixa de freqncia audvel: Outro fator utilizado pela codificao MP3 a curva de percepo da audio humana dentro da faixa de freqncias audveis, ou Limiar de Audio. Apesar da faixa de audio humana variar entre 20Hz e 20KHz, a sensibilidade para sons dentro desta faixa no uniforme. Ou seja, a percepo da intensidade de um som varia com a freqncia em que este se encontra. Assim, o MP3 utiliza-se desta propriedade para obter compresso em arquivos de udios. Esta abordagem bastante intuitiva, sendo que o que se faz descartar amostras que se encontrem abaixo deste limiar.
Pgina 270
Mascaramento em freqncia e mascaramento temporal. Mascaramento em freqncia e mascaramento temporal: Por fim, uma ltima propriedade da audio humana ainda utilizada pelo mtodo o chamado mascaramento auditivo, ou audiabilidade diminuda de um som devido presena de outro, podendo este ser em freqncia ou no tempo. O mascaramento em freqncia ocorre quando um som que normalmente poderia ser ouvido mascarado por outro, de maior intensidade, que se encontra em uma freqncia prxima. Ou seja, o limiar de audio modificado (aumentado) na regio prxima freqncia do som que causa a ocorrncia do mascaramento, sendo que isto se deve limitao da percepo de freqncias do ouvido humano. O mascaramento em freqncia depende da freqncia em que o sinal se encontra, podendo variar de 100 Hz a 4 KHz. Em funo deste comportamento, o que o mtodo de compresso do MP3 faz identificar casos de mascaramento em freqncia e descartar sinais que no sero audveis devido a este fenmeno. Alm do mascaramento em freqncia, temos ainda o mascaramento no tempo, sendo que este ocorre quando um som forte precedido por um mais fraco que se encontra em uma freqncia prxima do primeiro. Se o intervalo de tempo entre os dois for suficientemente pequeno, este som mais fraco no ser percebido pela audio humana. Se um som mascarado aps um som mais forte, temos o chamado ps-mascaramento. No caso de um som ser mascarado antes do som mais forte, temos o que chamamos de prmascaramento. O pr-mascaramento existe s por um curto momento, cerca de 20ms, enquanto que o ps-mascaramento tem efeito por at 200 ms. O mtodo de compresso do MP3 utiliza-se, portanto, deste fenmeno, identificando casos onde o mesmo ocorre e descartando sons que seriam mascarados, o que permite reduzir a informao de udio consideravelmente sem mudana audvel.
Pgina 271
A Thomson Consumer Electronics controla o licenciamento da patente do MPEG-1/2 Layer 3 nos poucos pases que reconhecem patentes de software, tais como Estados Unidos da Amrica e Japo. Em setembro de 1998, o Instituto Fraunhofer enviou um comunicado a diversos desenvolvedores de programas MP3, exigindo cobrana de royalties por essa patente. O comunicado informava que o licenciamento era necessrio para "distribuir e/ou vender decodificadores e/ou codificadores", e que os produtos no licenciados infringiam os "direitos sobre a patente do Instituto Fraunhofer e da Thomson. Para produzir, vender e/ou distribuir produtos que se utilizem do padro MPEG-1/2 Audio Layer 3 e, portanto, de suas respectivas patentes, necessrio obter uma licena". O sistema empregado pelo MP3 tambm possibilita transmisses por streaming, onde o arquivo pode ser interpretado na medida em que feito o download ou em que baixado (no necessrio que o arquivo chegue inteiro para iniciar a reproduo).
aviread L arquivo de vdeo (AVI) aviinfo - Retorna informao sobre o arquivo AVI avifile - Cria um novo arquivo AVI mmreader L frames de vdeo de um arquivo multimdia (como MPEG)
Pgina 272
mmfileinfo - Retorna informao sobre o arquivo multimdia movie2avi Cria filme AVI a partir de um filme MATLAB (.mov no do Quicktime)
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 273
>> mov = aviread('video1.avi', 3); No caso, o 3 frame est sendo lido. Mas o arquivo de sada continua sendo um arquivo de vdeo: >> whos Name mov Size 1x1 Bytes Class 230648 struct Attributes
Observe que a sada mov do tipo struct. >> mov mov = cdata: [240x320x3 uint8] colormap: [ ] >> mov1 = mov.cdata; Agora, temos um arquivo de imagem que pode ser exibido como tal: >> imshow (mov1) Para exibio do vdeo podemos usar o comando movie: >> movie(mov, repeties, info.FramesPerSecond); O parmetro repeties indica quantas vezes o vdeo ser repetido. A converso de imagens para frame feita com o comando im2frame: >> mov1(i) = im2frame(imagem, map);
Pgina 274
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.
Fig. 10.7. Acesso aos blocos de processamento de imagem e vdeo pelo Simulink. As possveis entradas para o sistema so acessadas pelo item sources enquanto as sadas podem ser geradas pelos blocos sinks (Fig. 10.8).
Pgina 275
Fig. 10.8. Entrada e sada de dados multimdia via Simulink. A Fig. 10.9 apresenta um esquema simples com um vdeo exemplo do MatLab inserido e apresentado. Para executar a simulao, basta clicar em Simulation>Start (tecla de atalho: CTRL+T).
Pgina 276
Fig. 10.10. Sequncia de blocos do Simulink para apresentar um vdeo. Outros blocos podem ser colocados entre a entrada e sada para gerar processamento do vdeo como na Fig. 10.11 (uma rotao) e na Fig. 10.12 (uma transformao geomtrica).
Pgina 277
Pgina 278
>> plot (som); comum precisarmos trabalhar com o arquivo de som normalizado. Para tanto, usamos: >> som = som/max(abs(som)); Isso no muda o sinal apenas o apresenta com amplitude entre -1 e 1. A leitura de um arquivo wav pode ser feita com o comando wavread: >> som = wavread (teste.wav); ou >> [som, fs] = wavread (teste.wav); Nesse segundo caso, a frequncia de amostragem do sinal salva na varivel fs. O comando wavread no permite que o parmetro de entrada seja uma varivel com o nome do arquivo. A entrada precisa ser especificamente o nome do arquivo de som. O processamento do sinal de udio pode ser feito atravs de filtros como o processamento de sinais, usando a funo filter: >> y = filter (b, a, som); onde a e b so os coeficientes do filtro a ser aplicado (para filtros FIR, a = 1).
Pgina 279
Calculando a transformada de Fourier: >> som_spec = fft (som, 256); >> plot (abs(som_spec));
Um grfico em formato mais padro pode ser obtido com as baixas freqncias centralizadas: >> plot (abs(fftshift(som_spec)));
Pgina 280
Suponha um filtro IIR com funo de transferncia: H(z) = 1 0,9375z-1: >> h = [1 -0.9375]; >> y = filter(h, 1, som); >> soundsc(y, 22000); Ouviremos um som mais nasal. Vamos fazer o mesmo processamento, mas dividindo o som em amostras de 240 frames cada que sero filtradas individualmente e re-agrupadas depois: >> w = 240; >> n = floor(length(som)/w); >> for k=1:n seg = som(1+(k - 1)*w:k*w); segf = filter(h, 1, seg); outsp(1+(k-1)*w:k*w) = segf; end >> soundsc(outsp, 22000); Observem, a seguir (Fig. 10.13), a plotagem do sinal original (som) e filtrado (outsp), assim como suas transformadas de Fourier:
Pgina 281
Fig. 10.13. (coluna da esquerda) Sinal original e sua transformada e (coluna da direita) sinal filtrado e sua transformada.
Pgina 282
Exemplo 2: Como um exemplo da dificuldade de analisar um sinal que muda constantemente, vamos construir um sinal gil na frequncia (um que muda rapidamente suas caractersticas de frequncia): >> y = chirp([0:0.001:5],0,5,500); >> soundsc (y); % Escute o som para entende-lo!! >> z = [y, y(length(y):-1:1), y]; >> f = abs(fft(z, 8192)); >> plot(f(1:4096));
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 freqncias mudam pelo tempo. >> s = spectrogram(z, 1024); >> waterfall(abs(s)');
Pgina 283
A plotagem em queda dgua mostra cerca de 30 pedaos no tempo, cada um correspondendo a uma FFT-512 e indicando claramente que diferentes componentes de frequncia esto presentes durante cada perodo de tempo. Veja o resultado para diferentes FFTs de N-Pontos: >> s = spectrogram(z, 256); >> waterfall(abs(s)');
Pgina 284
Pgina 285
Exemplo 3: Criando msica no MatLab: Primeiro, vamos crier uma onda senoidal de amplitude A = 1, com uma frequncia de 523,25 Hz (correspondente a um pitch C em um piano; uma oitava acima do C mdio): cnote = sin(2*pi*523.25*(0:0.000125:0.5)); Esse vetor cnote contm amostras da onda senoidal de t = 0s a t = 0.5s, as amostras so separadas de 0.000125s (que o intervalo de amostragem Ts). Note que esse intervalo de amostragem corresponde frequncia de amostragem de 8 kHz (1/Ts = fs). Podemos graver esse som com o comando wavwrite: wavwrite(cnote, c.wav); E temos a primeira nota. O seguinte site apresenta a frequncia de diferentes notas (apresentadas na tabela a seguir): http://www.dolmetsch.com/musictheory27.htm.
Pgina 286
Usando essa informao, podemos criar diferentes notas no MatLab. Observe que existem diferentes oitavas da mesma forma que existem diferentes teclas em um piano. Aqui esto algumas no MatLab: f = sin(2*pi*174.61*(0:0.000125:0.5)); g = sin(2*pi*195.99*(0:0.000125:0.5)); a = sin(2*pi*220*(0:0.000125:0.5)); b = sin(2*pi*246.94*(0:0.000125:0.5)); Pas de msica faa: line1 = [a,b,c,d,e,f]; line2 = [a,b,c,d,e,f]; As letras correspodem s notas que voc cria no MatLab de acordo com a tabela anterior. Coloque as notas na ordem que voc quiser toc-las. Para crier uma msica use: song = [line1, line2]; e toque com sound() ou soundsc().
Pgina 287
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 288
Pgina 289
Fig. 11.1. Exemplo de plotagem de um sinal de voz. O propsito primrio da voz comunicao. De acordo com a Teoria da Informao conforme definida por Claude Shannon [Shannon, 1945], a voz pode ser representada em termos de contedo ou informao. Outra maneira de caracterizar o sinal de voz como sendo uma onda acstica que carrega a informao. Para o processamento de voz, o mais comum entendermos o sinal de voz como sendo uma onda ou algum modelo paramtrico como discutiremos posteriormente. A Informao gerada no crebro convertida em um conjunto de sinais neurais os quais controlam o mecanismo articulatrio (movimentos da lngua, lbios, cordas vocais, etc). As articulaes movem-se em resposta a estes sinais neurais para desempenhar uma seqncia de gestos os quais resultam em uma forma de onda acstica que contm a informao da mensagem original.
Pgina 290
A informao que comunicada atravs do sinal de voz intrinsicamente discreta, ou seja, pode ser representada como uma concatenao de um conjunto finito de smbolos fonemas. Um fonema uma unidade de voz, o conjunto que define todos os sons dos quais palavras podem ser construdas em uma linguagem particular: as lnguas possuem cerca de 30 a 50 fonemas distintos (por exemplo, o ingls possui 42 fonemas). Assim, um cdigo de 6 bits pode representar todos os fonemas. Na fala usamos cerca de 10 fonemas por segundo o que leva a uma taxa mdia de informao de 60 bits/seg. Ou seja, o equivalente escrito da voz contm informao equivalente a 60 bits/seg para uma taxa normal de fala. A voz transmitida, armazenada e processada de maneiras diferentes de modo a preservar o seu contedo. O interesse em qualquer sistema : - Preservao do contedo da mensagem no sinal de voz; - Representao do sinal de voz em uma forma que seja conveniente para transmisso ou armazenamento ou numa forma flexvel tal que modificaes possam ser feitas sem degradar o contedo do sinal de voz. A Fig. 11.2 mostra onde o processamento de sinais, de uma forma geral, se encaixa em todo o universo do sinal de voz. Nela, vemos a figura humana como sendo a fonte de informao, ou seja, de onde a voz gerada. Essa informao convertida para algum meio observvel (a forma de onda) o qual pode sofrer diferentes representaes (como a mudana para o domnio da freqncia) e transformaes. Por fim, o sinal transformado utilizado novamente pelo homem ou por algum dispositivo.
Pgina 291
Fig. 11.2. Viso geral da manipulao e processamento da informao. O processamento do Sinal de Voz o veculo para obteno de uma representao geral do sinal tanto como forma de onda ou na forma paramtrica Ele serve como funo auxiliar no processo de transformar a representao do sinal em formas alternativas que sejam mais gerais em natureza, mas mais apropriadas para aplicaes especficas. O processamento digital de sinais (PDS) tem interesse na obteno de representaes discretas dos sinais e no design e implementao de procedimentos numricos para processar essa representao. As tcnicas digitais surgiram, primeiramente, para simular sistemas analgicos. Em meados da dcada de 60, PDS tornou-se vivel devido criao de processadores mais rpidos e a avanos tericos quanto ao tema. H diversas vantagens dos sistemas digitais para os analgicos: - Sistemas digitais so mais confiveis; - Grande capacidade de integrao, podendo ser implementados em um nico chip;
Pgina 292
- Baixo custo; - Permitem comunicao em canais ruidosos; - Maior segurana de informao (permite incluso de elementos de criptografia). O propsito do processamento digital pode ser:
Saber se determinado sinal corresponde a um sinal de voz ou no Classificar uma seo de um sinal de voz como: o voz audvel (voiced speech) o voz inaudvel (unvoiced speech) o silncio ou rudo de fundo
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:
Trata-se de um sinal de voz ruidoso contendo a expresso a casa com um rudo de fundo. Esse sinal pode ser filtrado com a reduo do rudo atravs do uso de uma janela de Hanning conforme o cdigo: [y, fs] = wavread('casa1.wav'); b = fir1(98, 31/80, hanning(99)); filt_sp=filter(b,1,y); f = 0:8000/(127):8000; subplot(2,1,1) spect=fft(y, 256); plot(f, abs(spect(1:128)))/max(abs(spect(1:128)));
Pgina 293
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:
Os sonogramas abaixo mostram o resultado da aplicao do filtro no domnio da frequncia, sendo esse o sinal original:
Pgina 294
Considerando a aplicao de tcnicas de processamento digital de sinais a problemas de comunicao por voz, interessante observar trs aspectos principais: a representao do sinal de voz na forma digital, a implementao das tcnicas de processamento e a classe de aplicaes. A representao do sinal de voz na forma discreta , claro, de fundamental importncia para todo o processo. Essa converso guiada pelo teorema da amostragem que diz que um sinal banda-limitado pode ser representado por amostras colhidas periodicamente no tempo desde que elas sejam tomadas a uma taxa alta o suficiente (teorema de Nyquist). Assim, o processo de amostragem o passo inicial de toda a teoria e aplicaes do processamento digital da voz. Existem muitas formas de representar um sinal de voz. Essas representaes podem ser classificadas em dois grandes grupos (Fig. 11.3): representaes em forma de onda e representaes paramtricas. A representao em forma de onda est preocupada com a preservao da forma de onda do sinal analgico atravs de um processo de amostragem e quantizao. J a representao paramtrica est preocupada com a representao do sinal de voz como a sada de um modelo para produo de voz. A obteno de uma representao paramtrica, em geral, comea com a forma de onda (ou seja, o sinal amostrado e quantizado). A seguir, o sinal tratado para obteno dos parmetros necessrios para sua representao. Esses parmetros so classificados em parmetros de excitao (relativos fonte da voz) e parmetros do trato vocal (relativos a sons de voz individuais).
Pgina 295
Fig. 11.3. Representaes do sinal de voz. Existem diversas aplicaes relacionadas com processamento do sinal de voz. A Fig. 11.4 exemplifica algumas delas. A transmisso e o armazenamento digital relacionam-se com tcnicas de compresso do sinal de voz. A produo de voz humana para, por exemplo, leitura de textos a preocupao em mtodos de sntese de voz, onde os maiores problemas esto relacionados com a criao automtica de elementos como entonao da voz e a produo de um texto que soe natural ao nosso sistema auditivo. O reconhecimento de interlocutor pode estar associado a questes de segurana; onde um dado sistema s se torna acessvel se padres de voz permitidos forem reconhecidos. O reconhecimento da fala pode permitir que o computador atenda a comandos vocais. O sinal de voz pode ser melhorado com eliminao de rudo ou eco como um prprocessamento para quaisquer das aplicaes anteriores. Muitas dessas aplicaes so naturalmente indicadas para ajudar pessoas com necessidades especiais como deficientes visuais.
Pgina 296
Pgina 297
As funes bsicas para o processamento digital de sinais so o impulso e o degrau unitrio. Elas podem ser definidas como: Impulso: (n) = 1, para n = 0, e (n) = 0, caso contrrio Degrau Unitrio: u(n) = 1, para n 0, u(n) = 0, caso contrrio No caso, podemos afirmar que: (n) = u(n) - u(n 1) atravs da funo impulso que podemos representar as amostras de um sinal digitalizado (Fig. 11.6).
Fig. 11.6. Seqncia de impulsos representando uma funo exponencial discreta. A discretizao do sinal um passo fundamental para que o processamento posterior acontea de forma adequada. A Fig. 11.7 ilustra os possveis resultados da discretizao de uma funo com diferentes taxas de amostragem, resultando em um sinal de boa ou de m qualidade.
Pgina 298
a)
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.
Fig. 11.8. Amostragem e quantizao, gerando o sinal discreto final. Se um sinal analgico for banda limitado e amostrado na taxa de Nyquist podese reconstruir o sinal original. O sinal de voz no banda limitado, embora o espectro tenda a cair rapidamente para freqncias mais altas. Uma representao fiel da voz exige uma taxa de amostragem de, pelo menos, 20 kHz. As freqncias que mais contribuem para o sinal de voz esto abaixo de 3,5 kHz. por isso que h uma certa dificuldade em reconhecer uma voz ao
Pgina 299
telefone. Se passarmos o sinal de voz por um filtro passa-baixa, podemos, para a maioria das aplicaes, utilizar uma taxa de Nyquist de 8 kHz. conveniente separar os processos de amostragem e quantizao. Na prtica geralmente impossvel distinguir entre eles. Nmeros binrios so usados para representarmos os nveis de quantizao. Podemos representar a quantizao como na Fig. 11.9. O sinal amostrado, x(n), quantizado com um passo , gerando o sinal codificado c(n). Esse sinal transmitido e decodificado. Se no houve erros na transmisso, o sinal recebido c(n) dever ser igual a c(n).
Fig. 11.9. Processo de quantizao, codificao e envio do sinal. Na transmisso, o sinal decodificado. Se a transmisso foi sem erro, c(n) = c(n). A quantizao pode ser: a) Quantizao Instannea; b) Quantizao Uniforme; c) Companding Instanneo; d) Quantizao Adaptativa. Na quantizao instantnea as amplitudes das amostras so quantizadas dividindo-se a amplitude em um conjunto finito de pequenas variaes de amplitude. D-se o mesmo valor a todas as amostras dentro de um mesmo
Pgina 300
patamar de amplitude. Para uma representao em 3 bits h 8 possveis rtulos (Fig. 11.10) e conseqentemente o nmero de diferentes seqncias de rotulao o fatorial de 8.
Fig. 11.10. Quantizao instantnea com 3 bits. Q quantizao uniforme exige uma mesma distncia entre xi e xi-1. Existem duas classes de quantizadores uniformes: mid-riser e mid-tread. No mid-riser, a origem aparece no ponto mdio da parte crescente de uma funo escada. O quantizador mid-riser conveniente quando temos o nmero de nveis uma potncia de 2. O mid-riser possui o mesmo nmero de nveis positivos e negativos que esto simetricamente posicionados em relao origem. O quantizador mid-tread possui um nvel negativo a mais que positivo. O quantizador mid-tread possui o zero (000) no meio da escala o que til em diversas aplicaes. O quantizador mid-riser no possui o nvel zero. Pode-se ter desde a codificao direta a escolhas que tentem manter equilibrada a potncia utilizada entre os bits da amostra em relao a origem, etc. A Fig. 11.11 apresenta esses dois quantizadores para uma quantizao de 3 bits como na Fig. 11.11.
Pgina 301
a)
Pgina 302
Companding uma expresso que significa compress + expand. Para tornar a porcentagem de erro constante os nveis de quantizao devem ser espaados logaritmicamente. Para tanto, o logaritmo da entrada quantizado ao invs da prpria entrada: y(n) = ln|x(n)| Cujo inverso : x(n) = exp[y(n)]sgn[x(n)] Dessa maneira, pode-se mostrar que o nvel sinal-rudo independente da varincia do sinal. Problemas acontecem com pequenas amplitudes (x[n] 0). A Fig. 11.12 apresenta em diagrama de blocos como se desenvolve a codificao e a decodificao do sinal.
Fig. 11.12. Representao da tcnica de companding. O problema da quantizao quanto a quantidade de degraus. Desejamos fazer essa quantidade suficientemente grande para termos uma varredura pico-a-pico do sinal. Mas isso implica mais nveis de quantizao. Porm, mais nveis de quantizao implica em uma cpdificao com mais bits o que implica em maior tempo de processamento/espao de armazenamento; o que no interessante. Esse o grande dilema.
Pgina 303
Uma soluo est em utilizar um quantizador no-uniforme. Alternativamente, pode-se adaptar as propriedades do quantizador aos nveis do sinal de entrada. O tamanho do degrau varia casadamente com a varincia do sinal de entrada. A Fig. 11.13 apresenta o comportamento de um tal quantizador.
Pgina 304
As propriedades do sinal de voz variam com o tempo: a excitao muda entre a voz audvel e no audvel; a amplitude do sinal varia; h uma variao significativa da freqncia fundamental para a voz audvel. Essas propriedades so nitidamente observveis na forma de onda. Por isso, os mtodos podem ser aplicados no domnio do tempo, diferente de outros tipos de sinais que so preferivelmente tratados no domnio da freqncia. A maioria dos sistemas de processamento de voz assume que as propriedades da fala mudam relativamente devagar com o tempo. Afinal, no h variaes bruscas num fonema ou entre fonemas. Assim, podem-se utilizar mtodos de processamento em tempo curto (short-time), nos quais analisam-se amostras de curta durao do sinal. Cada segmento curto de voz visto como um som estvel com propriedades fixas. s vezes, esses segmentos se sobrepem. Essas amostras de curta durao so geralmente chamadas de moldura de anlise (analysis frames). O resultado da anlise de uma moldura pode ser um nmero ou um conjunto de nmeros. A seqncia gerada pode ser tomada como uma nova representao no tempo do sinal original. geralmente assumido que o sinal de voz foi limitado em faixa e que foi amostrado em taxa no inferior a taxa de Nyquist (pelo menos 8.000 amostras/segundo). tambm considerado que o sinal foi quantizado e que o erro de quantizao desprezvel. A maioria das tcnicas de processamento em tempo curto pode ser representada pela equao:
Qn =
m =
T [ x(m)]w(n 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 305
Observando a Eq. 11.1, podemos v-la como uma operao de convoluo da transformao do sinal de entrada x() por uma funo w. Aqui, podemos entender w como uma seqncia de janelas posicionadas em um tempo correspondente a amostra ndice n (Fig. 11.14). O produto somado sobre todos os valores diferentes de zero. Geralmente, w de durao finita, mas pode ser infinita.
E=
m =
( m)
Em relao equao de Qn (Eq. 11.1), temos: T[ ] = quadrado w(n) = 1, 0 n N 1 e 0, caso contrrio. A energia de tempo curto de um sinal de voz pode ser definida como:
Pgina 306
En =
que pode ser re-escrita como:
m =
[ x(m).w(n m)]
2
En =
m =
x(m) .h(n m)
com h(n) = w2(n). Observamos que En um nmero e no uma funo. Um problema relacionado ao processamento em tempo curto o tamanho da janela. Para o caso da Energia, por exemplo, se a janela for muito longa e constante em amplitude, En varia muito pouco em relao ao tempo. Essa janela seria equivalente a um filtro de passa-baixa de banda (muito) estreita. Uma janela estreita demais no consegue produzir uma funo suave de energia. Se a janela for muito estreita, no prover medies suficientes para produzir uma funo de energia suave. Se a janela for da ordem de vrios picos do sinal, En no vai refletir as variaes do sinal. Esse conflito de grande importncia na representao em tempo curto de sinais de voz. Dessa maneira o tamanho da janela varia desde: a) 20 amostras para uma voz aguda de mulher ou criana; b) 250 amostras para uma voz grave de homem. Na prtica, para uma freqncia de amostragem do sinal de 10 kHz deve-se utilizar uma janela da ordem de 100 < N < 200 amostras (10 ms < t < 20 ms). A maior significncia de En est em conseguir distinguir entre segmentos com voz audvel e voz inaudvel. Os valores de En so significativamente maiores para sinais audveis. En pode ser usada para determinar o tempo onde um sinal audvel torna-se inaudvel e vice-versa; se o sinal for de boa qualidade pode-se distinguir a voz do silncio.
Pgina 307
Mn =
m =
| x(m) | w(n 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 ou seja, h(n) = anu(n) Um valor de 0 < a < 1 d uma janela cuja durao efetiva pode ser ajustada como desejado (Fig. 11.15). Isso pode produzir um LPF com banda-passante mais larga ou mais estreita. A transformada Z dada por: ,n0 ,n<0
Pgina 308
H ( z) =
1 1 az 1
ROC = |z|>|a|
Que possui as propriedades de um filtro passa-baixa. A Energia e a Magnitude devem ser calculadas para cada amostra do sinal de entrada, correspondendo a filtros causais com fase linear.
Fig. 11.15. Um valor de a entre 0 e 1 pode produzir janelas de maior ou menor banda-passante.
Pgina 309
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
m =
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-freqncia: altas freqncias implicam uma taxa alta de passagem pelo zero e baixas freqncias implicam numa taxa baixa de passagem pelo zero. Assim, h uma correlao forte entre taxa de passagem
Pgina 310
pelo zero e a distribuio de energia com a freqncia: se a taxa de passagem pelo zero alta, o sinal inaudvel; do contrrio, o sinal audvel. A taxa mdia de passagem pelo zero em tempo curto de: i) 49 vezes por 10 ms para sinais no-audveis. ii) 14 vezes por 10 ms para sinais audveis. H uma sobreposio das distribuies de sinais audveis e no-audveis de forma que esta diviso no pode ser tomada somente com a informao da taxa de passagem pelo zero. Isso dificulta a deciso entre voz audvel e inaudvel. A taxa de passagem pelo zero fortemente afetada por: a) sinal de rede eltrica; b) qualquer rudo no processo de digitalizao. Cuidado extremo deve ser tomado no processo analgico antes da digitalizao; prefervel utilizar-se um filtro passa-faixa ao invs de passa-baixa. Para eliminar a freqncia de 60 Hz da rede eltrica que pode corromper o sinal original. O problema de rudo de fundo de grande importncia no reconhecimento de voz. essencial saber onde cada palavra inicia e termina. A separao Voz/Silncio no simples exceto no caso de gravaes de alta-fidelidade em cmaras de gravao. Em gravaes com alta relao sinal/rudo os sons da voz de menor intensidade so mais fortes que o rudo de fundo.
(k ) =
m =
x ( m) x ( m + k )
Pgina 311
A representao em funo de autocorrelao de um sinal um modo conveniente de apresentar algumas propriedades do sinal. Por exemplo, se o sinal peridico com perodo de P amostras, ento:
(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 ) =
m =
Ou seja, primeiro, um segmento de voz selecionado pelo produto com a janela; em seguida, a autocorrelao aplicada ao segmento de voz sob a janela. A tcnica de autocorrelao pode ser usada para estimativa do pitch (frequncia fundamental) de um sinal de voz. O seguinte cdigo do MatLab pode ser usado para estimar a frequncia fundamental de um sinal usando a funo de autocorrelao: [x,fs]=wavread('casa1.wav'); ms20=fs/50; % % plot waveform t=(0:length(x)-1)/fs; subplot(2,1,1); plot(t,x); legend('Waveform'); % times of sampling instants % minimum speech Fx at 50Hz
Pgina 312
xlabel('Time (s)'); ylabel('Amplitude'); % % calculate autocorrelation r=xcorr(x,ms20,'coeff'); % % plot autocorrelation d=(-ms20:ms20)/fs; 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; % maximum speech Fx at 1000Hz % minimum speech Fx at 50Hz % times of delays
% just look at region corresponding to positive delays r=r(ms20+1:2*ms20+1); [rmax,tx]=max(r(ms2:ms20)); fprintf('rmax=%g Fx=%gHz\n',rmax,fs/(ms2+tx-1)); Podemos ver a aplicao desse cdigo no sinal de voz correspondente ao som a casa. Nesse caso, a frequncia fundametal estimada : Fx=512.195Hz
Pgina 313
Pgina 314
esses elementos so combinados aditivamente. Colocando de outra forma, se o sinal sob anlise y(t) igual a h(t) vezes x(t): y(t) = h(t).x(t) ento: log[y(t)) = log[h(t)] + log[x(t)] No domnio do processamento digital de voz, x(t) pode ser o pitch enquanto h(t) o componente do trato vocal. A quefrncia uma medida de tempo, embora no no sentido de um sinal no domnio do tempo. Por exemplo, se a taxa de amostragem de um sinal de udio 44100 Hz e existe um pico no grfico do cepstrum cuja quefrncia 100 amostras, o pico indica a presena de um pitch que 44100/100 = 441 Hz. Esse pico ocorre no cepstrum porque os harmnicos no espectro so peridicos e o perodo corresponde ao pitch. O cdigo de MatLab abaixo estima a frequncia fundamental do arquivo casa1.wav: [x,fs]=wavread('casa1.wav'); ms1=fs/1000; ms20=fs/50; % % plotagema 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); % mxima frequncia de voz Fx em 1000Hz % mnima frequncia de voz Fx em 50Hz
Pgina 315
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 316
Outra aplicao do cepstrum a extrao da informao de envelope para anlise da voz. Em geral, o envelope espectral uma forma mais suave do grfico da frequncia, onde o processo de suavizao ignora os componentes de mais alta frequncia. No domnio cepstral, isso corresponde ao descarte de todos os coeficientes cepstrais relacionados s frequncias maiores que o envelope da frequncia. Isso pode ser conseguido no MatLab com o cdigo abaixo: [som, fs] = wavread('casa1.wav') ps = log(abs(fft(som))); cep = ifft(ps); % Filtragem cut = 30; cep2 = zeros(1, len); cep2(1:cut-1) = cep(1:cut-1)*2; cep2(1) = cep(1); cep2(cut) = cep(cut); % Converte para o dominio da frequencia env = real(fft(cep2)); act = real(fft(cep)); pl1 = 20*log10(env(1:len/2)); pl2 = 20*log10(act(1:len/2)); span = [1:fs/len:fs/2]; pl1(length(pl1)) = []; pl2(length(pl2)) = []; plot (span, pl1, 'k-.'); figure, plot(span, pl2, 'g'); Na figura a seguir temos o cepstrum (em verde) e o envelope (em preto).
Pgina 317
Pgina 318
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 =
m =
T [ x(m)]w(n m)
b) Cite quais os cuidados que devem ser tomados na definio da janela w(n). 2. Diferencie Quantizao e Amostragem, relacionando as duas tcnicas com o processo de Digitalizao de um sinal. correto afirmar que a quantizao de um sinal pode compact-lo? Essa compactao seria com ou sem perda de informao? 3. Construa o grfico da funo caracterstica do quantizador de 2 bits definido pela seguinte relao entre as amostras quantizadas e a palavra cdigo:
^
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 319
http://www.ee.ic.ac.uk/hp/staff/dmb/voicebox/voicebox.html