Processamento Digital
de
Sinais
Carlos Alexandre Mello
Centro de Informática – UFPE
2013
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 2
Agradecimentos à primeira turma de Processamento Digital de Sinais dos cursos
de Engenharia da Computação e Ciência da Computação de 2010.1: Adriano
Damascena, Bernardo Fonseca, Daker Fernandes, Daniel Brito, Fernando
Rodrigues, Gabriel Carvalho, João Carlos Procópio, Lucas André Paes, Luis
Felipe Pereira, Onildo Ferraz Filho, Rafael Menezes, Renan Pires, Rodolpho de
Siqueira, Rodrigo Perazzo, Thiago Lima e Thiago Henrique Fernandes.
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 3
Índice
1. Processamento Digital de Sinais ......................................................................6
1.1 Principais Tipos de Sinais ...........................................................................7
1.2 Sistemas Discretos no Tempo.....................................................................9
1.3 Sistemas Lineares e Invariantes no Tempo ..............................................10
1.4 Sistemas LTI como Filtros Seletores de Frequência.................................14
1.5 Representação de Sequências pela Transformada de Fourier .................18
1.5.1 Propriedades da Transformada de Fourier.........................................21
1.6 Códigos do MatLab ...................................................................................22
1.7 Exercícios..................................................................................................30
1.8 Bibliografia Complementar ........................................................................33
2. A Transformada Z...........................................................................................34
2.1 Propriedades da Transformada Z..............................................................36
2.2 Pares de Transformadas Z........................................................................39
2.3 Exemplos de Cálculo da Transformada Z .................................................39
2.4 Propriedades da Região de Convergência................................................47
2.5 A Transformada Z Inversa.........................................................................48
2.6 Exercícios..................................................................................................57
2.7 Bibliografia Complementar ........................................................................59
3. Teoria da Amostragem ...................................................................................60
3.1 Teorema de Shannon................................................................................65
3.2 Re-Obtenção do Sinal a partir de suas amostras......................................70
4. Filtros Digitais .................................................................................................73
4.1 Filtros Digitais............................................................................................75
4.2 Filtros FIR..................................................................................................79
4.4 Exercícios................................................................................................108
4.5 Bibliografia Complementar ......................................................................109
5. Técnicas de projeto de filtros ........................................................................110
5.1 Projeto de Filtros FIR ..............................................................................113
5.1.1 Projeto usando janelas .....................................................................114
5.1.2 Técnicas de Projeto por Amostragem em Frequência......................140
5.1.3 Projeto Equirriple Ótimo....................................................................142
5.2 Projeto de Filtros IIR................................................................................145
5.2.1 Escala Relativa.................................................................................146
5.2.2 Características de Protótipos Analógicos .........................................149
5.3 Transformações em Frequência..............................................................158
5.4 Comparação entre Filtros FIR e IIR.........................................................160
5.5 Exercícios................................................................................................162
5.6 Bibliografia Complementar ......................................................................163
6. Transformada Discreta de Fourier ................................................................164
6.1 A Série Discreta de Fourier .....................................................................165
6.2 A Transformada Discreta de Fourier .......................................................170
6.3 Propriedades da Transformada Discreta de Fourier ...............................172
6.4 A Transformada Discreta Bi-Dimensional de Fourier ..............................175
6.5 O Espectrograma ....................................................................................177
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 4
6.6 Exercícios................................................................................................181
6.7 Bibliografia Complementar ......................................................................183
7. Transformada Rápida de Fourier (FFT- Fast Fourier Transform) .................184
7.1 Algoritmos Rápidos .................................................................................184
7.2 Algoritmo de Cooley-Tukey ou Decimação no Tempo ............................186
7.3 Outras FFTs ............................................................................................197
7.4 Exercícios................................................................................................199
7.5 Bibliografia Complementar ......................................................................200
8. Análise Wavelet ............................................................................................201
8.1 A Transformada Wavelet.........................................................................204
8.2 Análise em Multiresolução.......................................................................208
8.3 Sobre os coeficientes das wavelets ........................................................211
8.4 Wavelets no MatLab................................................................................216
8.5 Exercícios................................................................................................223
8.6 Bibliografia Complementar ......................................................................225
9. Processamento Digital de Imagens ..............................................................226
9.1 Digitalização............................................................................................229
9.2 Sistema Computacional de Cores...........................................................232
9.3 Histograma..............................................................................................236
9.4 Filtragem de Imagens Digitais.................................................................238
9.5 Compressão de Imagens ........................................................................246
9.6 Processamento de Imagens no MatLab..................................................248
9.7 Exercícios................................................................................................252
9.8 Bibliografia Complementar ......................................................................253
10. Técnicas de Codificação de Áudio e Vídeo ................................................254
10.1 Teoria dos Códigos ...............................................................................254
10.2 Algoritmos de Compressão ...................................................................258
10.2.1 Código de Huffman.........................................................................259
10.2.2 Run-length ......................................................................................262
10.2.3 Algoritmo de Lempel-Ziv-Welch......................................................262
10.3 Algoritmos de codificação multimídia ....................................................263
10.3.1 Codificação de Vídeo......................................................................264
10.3.2 Codificação de Áudio......................................................................278
10.4 Implementações no MatLab ..................................................................283
10.4.1 Processamento de Vídeo no MatLab .................................................283
10.4.2 Processamento de Áudio no MatLab .................................................289
10.5 Exercícios..............................................................................................299
10.6 Bibliografia Complementar ....................................................................300
11. Processamento de Voz...............................................................................301
11.1 Amostragem e Quantização..................................................................308
11.2 Técnicas Temporais para Processamento de Voz................................315
11.2.1 Energia de Curta Duração ..............................................................317
11.2.2 Magnitude de Curta Duração..........................................................319
11.2.3. Taxa de Passagem pelo Zero........................................................320
11.2.4. Função de Autocorrelação.............................................................322
11.3 Análise Cepstral ....................................................................................325
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 5
11.4 Exercícios..............................................................................................330
11.5 Bibliografia Complementar ....................................................................331
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 6
1. Processamento Digital de Sinais
Sinais estão presentes em diversas situações do dia-a-dia do ser humano. Um
sinal pode ser definido como uma função que carrega uma informação. A forma
mais comum para nós é a comunicação por sinal de voz. Nesse exemplo, temos
o sinal gerado pelo trato vocal e o sinal recebido pelo sistema auditivo. Apesar
de ser o mesmo sinal transmitido a forma como ele é processado é inerente ao
receptor. O processamento de sinais lida com a representação, transformação e
manipulação dos sinais e da informação que eles contêm. Até a década de 60, a
tecnologia para processamento de sinais era basicamente analógica. A evolução
de computadores e microprocessadores juntamente com diversos
desenvolvimentos teóricos causou um grande crescimento na tecnologia digital,
surgindo o processamento digital de sinais (PDS). Um aspecto fundamental do
processamento digital de sinais é que ele é baseado no processamento de
seqüências de amostras. Para tanto, o sinal contínuo no tempo é convertido
nessa seqüência de amostras, i.e., convertido em um sinal discreto no tempo.
Após o processamento digital, a seqüência de saída pode ser convertida de
volta a um sinal contínuo no tempo.
A maior parte do processamento de sinais envolve processar um sinal para obter
outro sinal. Normalmente, isso é conseguido por um processo conhecido como
filtragem.
Sinais podem ser classificados em quatro diferentes categorias dependendo de
carcaterísticas de tempo e dos tipos de valores que eles podem assumir. Sinais
contínuos no tempo (ou analógicos) são definidos para qualquer valor de tempo
e eles assumem valores no intervalo contínuo (a, b), onde a pode ser -∞ e b
pode ser +∞. Podem ser representados por uma função de variáveis contínuas.
Sinais discretos no tempo são definidos apenas para certos valores específicos
de tempo. Podem ser representados matematicamente por uma sequência de
números reais ou complexos, x. O n-ésimo número dessa seqüência é denotado
por x[n]. Assim, x é formalmente escrito como:
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 7
x = {x[n]}, -∞ <n < ∞
onde n é um inteiro. Tais seqüências são geradas a partir de um processo de
amostragem periódica de um sinal analógico. Assim, o valor numérico do n-
ésimo número da seqüência é igual ao valor do sinal analógico xa(t) no tempo
nT, i.e.:
x[n] = xa(nT), -∞ <n < ∞
Os valores de amplitude de sinais contínuos ou discretos no tempo podem ser
contínuos ou discretos. Se um sinal pode assumir qualquer valor dentro de um
espaço finito ou infinito, ele é dito um sinal contínuo em valores. Sinais digitais
são aqueles para os quais tanto o tempo quanto a amplitude são discretos. Ou
seja, ele é discreto no tempo e só pode assumir valores dentro de um conjunto
finito de possíveis valores (é discreto em valores).
Sinais também podem ser classificados em determinísticos ou aleatórios.
Qualquer sinal que podem ser unicamente descrito por uma expressão
matemática, uma tabela de dados ou uma regra bem definida é chamado
determinístico. Esse termo é usado para destacar que quaisquer valores
passados, presentes e futuros do sinal são conhecidos precisamente, sem
incerteza. No entanto, em aplicações práticas, os sinais não podem ser
representados precisamente por equações matemáticas ou suas descrições são
muito complexas para uso. Isso indica que tais sinais têm comportamentos
imprevisíveis sendo chamados de sinais aleatórios.
1.1 Principais Tipos de Sinais
Em um estudo sobre processamento digital de sinais, alguns sinais são de mais
importância. Dentre eles, temos o impulso unitário, δ[n], definido como:



=
≠
=
0,1
0,0
][
n
n
nδ
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 8
Um dos mais importantes aspectos do impulso é que uma seqüência arbitrária
pode ser representada como uma soma de impulsos escalonados e deslocados.
Por exemplo, a seqüência 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 seqüência x[n] pode ser representada como:
∑
∞
−∞=
−=
k
knkxnx ][][][ δ
Outra seqüência importante é o degrau unitário, u[n]:



<
≥
=
0,0
0,1
][
n
n
nu
O degrau relaciona-se com o impulso como:
∑−∞=
=
n
k
knu ][][ δ
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:
∑
∞
=
−=
0
][][
k
knnu δ
Por outro lado, o impulso relaciona-se com o degrau unitário como:
δ[n] = u[n] – u[n – 1]
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 9
Uma seqüência exponencial é importante na análise de sistemas discretos e
invariantes no tempo. A forma geral de uma seqüência exponencial é dada por:
x[n] = A.αn
1.2 Sistemas Discretos no Tempo
Um sistema discreto no tempo é definido matematicamente como uma
transformação que mapeia uma seqüência de entrada x[n] em uma seqüência
de saída y[n]. Isso pode ser denotado por:
y[n]=T{x[n]}
como representado na Fig. 1.1.
Fig. 1.1. Representação de um sistema discreto no tempo
Alguns exemplos ilustram sistemas simples:
1) Sistema de atraso ideal: y[n] = x[n – nd], -∞ <n < ∞
2) Média móvel: ∑−=
−
++
2
1
][
1
1
21
M
Mk
knx
MM
A seguir, destacamos algumas importantes propriedades dos sistemas.
1) Um sistema é dito sem memória (memoryless systems) se a saída 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 princípio da superposição. Ou seja:
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 10
T{a.x1[n] + b.x2[n]} = a.T{x1[n]} + b.T{x2[n]}
Ex: Acumulador: ∑−∞=
=
n
k
kxny ][][
3) Um sistema é invariante no tempo é um sistema no qual um deslocamento
no tempo (ou atraso) da seqüência de entrada gera um deslocamento
correspondente na seqüência de saída. Ou seja, suponha um sistema que
transforma uma seqüência de entrada x[n] na seqüência de saída y[n]. Se a
seqüência de entrada sofre um deslocamento de n0, x[n] = x[n – n0], então a
seqüência de saída 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 não é invariante no tempo:
y[n] = x[M.n], -∞ <n < ∞
4) Um sistema é dito causal se ele não depende de valores futuros da
seqüência. Ou seja, o valor de y[n1] pode ser calculado apenas com valores de
x[n] para n ≤ n1.
Ex: Um sistema não causal: y[n] = x[n + 1] – x[n]
5) Um sistema é dito estável se toda entrada limitada provoca uma saída
limitada. Assim, se, para todo n, |x[n]| ≤ B < ∞, para algum valor finito B, então
|y[n]| ≤ C < ∞, para algum valor finito C.
1.3 Sistemas Lineares e Invariantes no Tempo
Uma classe importante de sistemas consiste naqueles que são lineares e
invariantes no tempo. Como dito acima, os sistemas lineares são aqueles que
obedecem ao princípio da superposição. Se a propriedade da linearidade é
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 11
combinada com a representação de uma seqüência geral como uma
combinação de impulsos, então um sistema linear pode ser completamente
caracterizado pela sua resposta ao impulso. Seja hk[n] a resposta do sistema a
δ[n – k]. Assim, como:
∑
∞
−∞=
−=
k
knkxnx ][][][ δ
então
}][][{][ ∑
∞
−∞=
−=
k
knkxTny δ
Pelo princípio da superposição, podemos escrever:
∑∑
∞
−∞=
∞
−∞=
=−=
k
k
k
nhkxknTkxny ][][}][{][][ δ
De acordo com essa equação, a resposta do sistema a qualquer entrada pode
ser expressa em termos da resposta a δ[n – k].
A propriedade da invariância no tempo implica que, se h[n] é a resposta a δ[n],
então a resposta a δ[n - k] é h[n – k]. Com isso, podemos dizer que:
∑
∞
−∞=
−=
k
knhkxny ][][][ (Eq. 1.1)
Como conseqüência, um sistema linear invariante no tempo é completamente
descrito por sua resposta ao impulso. Essa equação é conhecida como soma de
convolução (convolution sum) que pode ser representada pela notação:
y[n] = x[n]*h[n] (Eq. 1.2)
Apesar da semelhança na notação, deve-se salientar que a soma de convolução
para sinais discretos não é uma aproximação da integral de convolução.
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 12
Propriedades da soma de convolução:
1) Comutatividade:
x[n]*h[n] = h[n]*x[n]
Isso pode ser facilmente justificável com uma mudança de variável 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) Conexão em Cascata
4) Conexão em Paralelo
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 13
5) Causalidade
Como definido anteriormente, um sistema é dito causal se sua resposta não
depende de eventos futuros. Ou seja, para calcular a saída de y[n0], precisamos
apenas de x[n], n ≤ n0. Isso implica na condição:
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:
∞<= ∑
∞
−∞=n
nhS |][|
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], então seu sistema inverso, se existir, tem resposta ao impulso hi[n]
definida pela relação:
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 através de uma equação de
diferenças de coeficientes constantes lineares de n-ésima ordem da forma:
∑ ∑= =
−=−
N
k
M
k
kk knxbknya
0 0
][][ (Eq. 1.3)
Um exemplo de um tal sistema é um acumulador definido pela seqüência cujo
diagrama de blocos pode ser visto na figura abaixo:
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 14
Tal sistema é representado pela equação de diferenças:
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 saída é dada pela entrada x[n] somada com o
valor anterior do acumulador, y[n – 1].
1.4 Sistemas LTI como Filtros Seletores de Frequência
O termo filtro é normalmente usado para descrever um dispositivo que
discrimina, de acordo com algum atributo do objeto aplicado como entrada, o
que passa através dele. Por exemplo, como um filtro de ar que deixa o ar
passar, mas retém partículas de impureza. Um sistema LTI também funciona
como um tipo de discriminante ou filtrando entre os vários componentes de
frequência na sua entrada. A forma da filtragem é definida pela resposta de
frequência H(ω) que depende da escolha de parâmetros do sistema (como os
coeficientes do filtro). Assim, com uma escolha apropriada de parâmetros,
podemos projetar filtros seletores de frequência que deixam passar sinais
contendo componentes de frequência em algumas bandas e atenuando sinais
contendo componentes de frequência em outras bandas.
Em geral, um sistema LTI modifica o espectro do sinal de entrada X(ω) de
acordo com a resposta em frequência H(ω) que leva a um sinal de saída com
espectro Y(ω) = H(ω)X(ω). De certa forma, H(ω) atua como uma função de peso
nos diferentes componentes de frequência do sinal de entrada. Assim, um
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 15
sistema LTI pode ser visto como um filtro embora não bloqueie completamente
qualquer componente de frequência do sinal de entrada. Consequentemente, os
termos “sistema LTI” e “filtro” são sinônimos e são normalmente usados sem
distinção.
Um filtro é um sistema LTI usado para desempenhar a função de filtragem
seletora de frequência. Filtragem é usada em processamento digital de sinais
em uma grande variedade de formas, como remoção de ruído, equalização,
análise espectral de sinais, etc.
Filtros são normalmente classificados de acordo com suas características no
domínio da frequência como passa-baixa, passa-alta, passa-faixa e rejeita-faixa.
As características de resposta em magnitude ideais desses tipos de filtros estão
ilustradas na Fig. 1.2. Esses filtros ideais têm características de ganho constante
na banda de passagem (normalmente, tomados como unitários) e ganho zero na
banda de corte. Mais detalhes sobre filtros digitais e formas de projeto serão
vistos nos Capítulos 4 e 5.
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 16
Fig. 1.2. Resposta em magnitude para alguns filtros seletores de frequência
discretos no tempo.
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 17
Outra característica de um filtro ideal é uma resposta de fase linear. Considere
que um sinal {x[n]} com componentes de frequência dentro da faixa de ω1< ω
<ω2 passa por um filtro com resposta em frequência:


 <<
=
−
senão
Ce
H
nj
0
)( 21
0
ωωω
ω
ω
onde C e n0 são constantes. O sinal na saída do filtro terá um espectro:
0
)()()()( nj
eCXHXY ω
ωωωω −
==
Aplicando as propriedades da transformada de Fourier, obtemos a saída no
domínio do tempo:
Y[n] = C.x[n – n0]
Consequentemente, a saída do filtro é simplesmente uma versão escalonada e
atrasada do sinal de entrada. Tanto um atraso simples quanto uma diferença em
escala são considerados toleráveis e não distorções do sinal. Portanto, filtros
ideais têm uma característica de fase linear na banda de passagem que é:
Θ(ω) = -ωn0
A derivada da fase em relação à frequência é medida em unidades de atraso.
Assim, podemos definir o atraso do sinal como uma função da frequência como:
ω
ω
ωτ
d
d
g
)(
)(
Θ
−=
τg(ω) é chamado de atraso de grupo (group delay) do filtro. Entendemos τg(ω)
como o atraso de tempo que os componentes de frequência ω de um sinal são
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 18
submetidos à medida que ele passa da entrada à saída do sistema. Note que,
quando Θ(ω) é linear, τg(ω) = n0 = constante. Nesse caso, todas as componentes
de frequência do sinal de entrada sofrem o mesmo atraso de tempo.
Como conclusão, todos os filtros ideais têm características de magnitude
constante e fase linear dentro da banda de passagem. Em todos os casos, tais
filtros não são fisicamente realizáveis, mas servem como idealizações
matemáticas para filtros práticos.
1.5 Representação de Sequências pela Transformada de Fourier
Assim como sinais do contínuo, os sinais discretos no tempo também podem ser
representados de formas diferentes. Uma das formas mais utilizadas é através
da transformação do sinal para o domínio da freqüência através da
Transformada de Fourier. Muitas seqüências podem ser representadas por uma
integral de Fourier da forma:
∫−
=
π
π
ωω
ω
π
deeXnx njj
)(
2
1
][
(Eq. 1.4)
onde X(ejw
) é dada por:
∑
∞
−∞=
−
=
n
njj
enxeX ωω
][)(
(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 função complexa em ω. Como na
resposta à freqüência, algumas vezes, pode-se expressar X(ejω
) na forma:
X(ejω
) = XR(ejω
) + j.XI(ejω
)
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 19
ou na forma polar:
X(ejω
) = |X(ejω
)| ej∠X(e^jω)
As quantidades |X(ejω
)| e ∠X(ejω
) são chamadas de magnitude e fase da
Transformada de Fourier (também chamada de espectro de Fourier ou,
simplesmente, espectro).
Há casos onde a Transformada de Fourier para uma dada seqüência não
converge. Esses casos podem ser definidos através da Transformada Z como
veremos posteriormente.
Podemos verificar facilmente que as Eqs. 1.4 e 1.5 são inversas realmente.
Especificamente, considere:
^
][][
2
1
nxdeemx nj
m
mj
=





∫ ∑
−
∞
−∞=
−
π
π
ωω
ω
π
Se trocarmos a ordem da integração com o somatório, temos:








= ∫∑
−
−
∞
−∞=
π
π
ω
ω
π
demxnx mnj
m
)(
^
2
1
][][
Calculando a integral dentro dos parênteses, temos:



≠
=
=
−
−
=∫−
−
nm
nm
mn
mn
de mnj
,0
,1
)(
))(sin(
2
1 )(
π
π
ω
π
π
π
ω
][ mn −= δ
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 20
Assim:
][][][][
^
nxmnmxnx
m
=−= ∑
∞
−∞=
δ
Exemplo 1:
Seja x[n] = an
u[n].
A TF é dada por:
∑ ∑∑
∞
=
−
∞
=
−−
∞
−∞=
−
−
====
0 0 1
1
)(][)(
n
jw
n
njwjwnn
n
jwnjw
ae
aeeaenxeX
Que converge se |a.e-jw
| < 1 ou |a| < 1.
OBS:
α
α
−
→∑
∞
= 1
1
0n
n
, para |α| < 1

Exemplo 2:
Vamos calcular a resposta ao impulso de um filtro passa-baixa ideal cuja
resposta em freqüência é:



<<
<
=
π||,0
||,1
)(
ww
ww
eH
c
cjw
LPF
A resposta o impulso hLPF[n] pode ser encontrada através da Transformada
Inversa de Fourier:
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 21
∫∫ −−
==
c
c
w
w
jwnjwnjw
LPFLPF dwedweeHnh
ππ
π
π 2
1
)(
2
1
][
∞<<−∞= n
n
nw
nh c
LPF ,
)sin(
][
π

1.5.1 Propriedades da Transformada de Fourier
Algumas propriedades da TF: Seja: x[n] ↔ X(ejw
) e y[n] ↔ Y(ejw
)
Propriedade Seqüência Transformada de Fourier
Linearidade a.x[n] + b.y[n] a.X(ejw
) + b.Y(ejw
)
Deslocamento no Tempo x[n – nd] e-jwnd
X(ejw
)
Deslocamento na Freq ejwon
x[n] X(ej(w – w0)
)
Reverso no Tempo x[-n]
X(e-jw
)
X*(e-jw
), se x[n] é real
Diferenciação em Freq n.x[n] j dX(ejw
)/dw
Convolução x[n]*y[n] X(e-jw
).Y(e-jw
)
Modulação x[n].y[n]
∫−
−
π
π
θθ
θ
π
deYeX wjj
)()(
2
1 )(
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 22
1.6 Códigos do MatLab
Função Impulso
function [x, n] = impseq(n0, n1, n2) % Impulso
n = [n1:n2];
x = [(n-n0) == 0];
stem (x);
Exemplos:
1.
>> impseq (5, 0, 10);
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]');
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 23
Função 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]');
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 24
Senóide
function x = sinseq(n1,n2) % Senóide
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);
Operações em sequências
Adição 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;
Multiplicação 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;
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 25
Deslocamento
y[n] = x[n – k]
function [y,n] = sigshift(x, m, n0)
n = m + n0;
y = x;
Inversão
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 sequência.
Sobre as sequências, 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)’);
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 26
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)');
Convolução
Considere as sequências:
x = [3, 11, 7, 0, -1, 4, 2], -3 ≤ n ≤ 3
h = [2, 3, 0, -5, 2, 1]; -1 ≤ n ≤ 4
onde, novamente, os termos em negrito indicam a origem do eixo das abscissas.
As sequências podem ser vistas abaixo:
x[n] h[n]
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 27
Podemos usar a função 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 função conv é que não sabemos, na resposta, onde está
a origem da sequência. Para tanto, vamos criar uma nova função:
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 = 6 31 47 6 -51 -5 41 18 -22 -3 8 2
ny = -4 -3 -2 -1 0 1 2 3 4 5 6 7
A amplitude -51 está no ponto de origem (ny = 0).
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 28
Equações de Diferenças e Resposta ao Impulso
Exemplo: Dada a seguinte equação de diferenças:
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 equação de diferenças é da forma:
∑ ∑= =
−=−
N
k
M
k
kk knxbknya
0 0
][][
De acordo com a equação dada, temos:
a = [1, -1, 0.9] e b = [1]
No MatLab, fazemos:
>> x = impseq(0, -20, 120);
>> n = [-20:120];
>> h = filter(b, a, x);
>> stem(n, h); title('Resposta ao impulso'); xlabel('n'); ylabel('h[n]');
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 29
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]');
c) O sistema é estável?
Como vimos, um sistema é estável se:
∞<= ∑
∞
−∞=n
nhS |][|
Assim, no MatLab, basta fazermos:
>> sum(abs(h))
Ans = 14.8785
Logo, o sistema é estável.

Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 30
1.7 Exercícios
1. Considere um sistema linear arbitrário com entrada x[n] e saída y[n]. Mostre
que se x[n] = 0 para todo n, então y[n] deve ser zero para todo n também.
2. Usando a definição de linearidade, mostre que o sistema de atraso ideal e a
média móvel são ambos lineares.
3. Para cada sistema abaixo, determine se ele é (1) estável, (2) causal, (3)
linear, (4) invariante no tempo e (5) sem memória:
a. T(x[n]) = g[n]x[n], com g[n] dado
b. T(x[n]) = Σn
k=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, a e b números reais
f. T(x[n]) = x[-n])
g. T(x[n]) = x[n] + 3.u[n + 1]
4. O sistema T abaixo é invariante no tempo. Quando as entradas dele são
x1[n], x2[n] e x3[n], as saídas são y1[n], y2[n] e y3[n], respectivamente.
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 31
a) Determine se o sistema pode ser linear.
b) Se a entrada x[n] do sistema é um impulso (δ[n]), qual a saída y[n]?
c) Determine a relação entre a entrada e a saída do sistema.
5. Para cada par de sequências abaixo, use convolução 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 saída y[n] que satisfaz a equação de
diferenças:
y[n] = n.y[n – 1] + x[n]
O sistema é causal tal que, se x[n] = 0, para n < 0, então y[n] = 0, para n < 0.
a) Se x[n] = δ[n], determine y[n] para todo n.
b) O sistema é linear?
c) O sistema é invariante no tempo?
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 32
7. Plote a seguintes sequências no MatLab:
a) x[n] = n2
.(u[n + 5] – u[n – 6]) + 10.δ[n], -5 ≤ n ≤ 5
b) x[n] = 20.(0,5)n
.(u[n – 4] – u[n - 10]), -5 ≤ n ≤ 5
8. Seja x[n] = {1, -2, 4, 6, -5, 8, 10}, gere e plote no MatLab as seguintes
sequências:
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 sequências:
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 convolução linear tem as seguintes propriedades como válidas:
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 função conv_m.m apresentada anteriormente.
10. A operação de dilatação de sinal (ou decimação ou downsampling) é
definida por:
y[n] = x[nM]
na qual a sequência de entrada é down-sampled por um fator inteiro M. Por
exemplo, se :
x[n] = {...., -2, 4, 3, -6, 5, -1, 8,...}
então a sequência down-sampled por um fator de 2 é dada por:
y[n] = {..., -2, 3, 5, 8, ..}
Escreva uma função no MatLab que execute essa dilatação. A função deve ser
da forma:
function [y, n] = dnsample(x, n, M)
Cuidado com a origem do eixo!! 
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 33
1.8 Bibliografia Complementar
1. Vinay K. Ingle, John G. Proakis, Digital Signal Processing, Thomson
Learning, 2000.
2. Michael Weeks, Digital Signal Processing Using MatLab and Wavelets,
Infinity Science Press, 2007.
3. Alan V. Oppenheim, Ronald Schafer, Discrete Time Signal Processing,
Prentice Hall, 1989
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 34
2. A Transformada Z
A Transformada Z (TZ) é uma ferramenta matemática poderosa para análise de
sinais e sistemas. A transformada Z constitui a forma discreta da transformada
de Laplace. Seja a Transformada de Fourier (TF) de uma seqüência dada por:
∑
∞
−∞=
−
=
n
jwnjw
enxeX ][)(
Seja z = ejw
. Temos então, a TZ definida como:
∑
∞
−∞=
−
=
n
n
znxzX ][)(
Essa é chamada também de TZ bilateral. A transformada unilateral é dada por:
∑
∞
=
−
=
0
][)(
n
n
znxzX
Notadamente, há uma relação entre a TZ e a TF. Se z é uma variável 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 representação gráfica corresponde
ao círculo no Plano imaginário (chamado de Plano-Z). Se esse círculo tem raio
igual a 1, então temos a condição da TZ = TF (Fig. 2.1). Assim, a TZ calculada
no círculo unitário é igual à TF.
A Transformada Z não converge para todos os valores de Z. Onde a TZ
converge é chamada de região de convergência (ROC – Region of
Convergence). Para garantir a convergência é preciso que:
∞<∑
∞
=
−
0
|][|
n
n
znx
Assim, é possível que TZ convirja mesmo se a TF não convergir. Para a TF
convergir, a ROC da TZ deve conter o círculo unitário. Uma transformada Z só
está completamente definida se sua ROC estiver determinada.
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 35
Fig. 2.1. Plano Z: representação gráfica da transformada Z no plano complexo.
No círculo unitário, a transformada Z reduz-se à transformada de Fourier.
A série definida pela TZ é chamada de série de Laurent. Uma tal série
representa uma função contínua em qualquer ponto dentro da região de
convergência. Assim, a TZ e todas as suas derivadas devem ser funções
contínuas de z na ROC. Isso implica que, se a região de convergência uniforme
inclui o círculo unitário, então a TF e suas derivadas com respeito a w são
funções contínuas de w. Além disso, a seqüência deve ser absolutamente
somável, i.e., uma seqüência estável.
Entre as mais úteis e importantes TZs estão aquelas para as quais X(z) é uma
função racional dentro da região de convergência, i.e.:
)(
)(
)(
zQ
zP
zX =
onde P(z) e Q(z) são polinômios em z. Os valores de z que fazem X(z) = 0 são
chamados de zeros de X(z). Os valores de z para os quais X(z) tende a infinito
são chamados de pólos de X(z). Os pólos de X(z) são as raízes do polinômio do
denominador.
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 36
2.1 Propriedades da Transformada Z
a) Linearidade: ax1[n] + bx2[n] ↔ aX1(z) + bX2(z), ROC = ROCx1∩ ROCx2
Comentários:
A prova de tal propriedade vem diretamente da definição de transformada Z:
∑
∞
−∞=
−
=
n
n
znxzX ][)(
Considere que x[n] = ax1[n] + bx2[n]. Logo:
=+=+= ∑∑
∞
−∞=
−−
∞
−∞=
−
n
nn
n
n
znbxznaxznbxnaxzX ][][])[][()( 2121
∑∑∑∑
∞
−∞=
−
∞
−∞=
−
∞
−∞=
−
∞
−∞=
−
+=+=
n
n
n
n
n
n
n
n
znxbznxaznbxznax ][][][][ 2121
= aX1(z) + bX2(z)
b) Deslocamento no tempo: x[n + n0] ↔ zn
0.X(z), ROC = ROCx (cuidado deve ser
tomado observando o que acontece para z = 0 ou z = ∞).
Comentários:
Suponha que y[n] = x[n – n0]. Logo:
∑
∞
−∞=
−
−=
n
n
znnxzY ][)( 0
Fazendo m = n – n0:
∑∑∑
∞
−∞=
−−
∞
−∞=
−−
∞
−∞=
+−
===
m
mn
m
nm
m
nm
zmxzzzmxzmxzY ][..][][)( 000 )(
)(.)( 0
zXzzY n−
=
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 37
c) Multiplicação por uma exponencial discreta: an
x[n] ↔ X(z/a), ROC = |a|ROCX
Comentários:
Essa propriedade é observável substituindo an
x[n] na definição de TZ:
∑∑
∞
−∞=
−
∞
−∞=
−
==
n
nn
n
n
znxaznxzX ][][)(
Como conseqüência disso, todas as posições de pólos e zeros são escalonadas
por um fator de a, já que, se X(z) tiver um pólo em z = z1, X(a-1
z) terá um pólo
em z = a.z1. Se a for um número real, essa propriedade pode ser entendida
como uma compressão ou expansão do plano Z.
d) Convolução no tempo: x1[n]*x2[n] ↔ X1(z).X2(z) , ROC contém ROCx1∩ ROCx2
Comentários:
Seja:
∑
∞
−∞=
−=
k
knxkxny ][][][ 21
Tal que:
∑
∞
−∞=
−
=
n
n
znyzY ][)(
∑ ∑
∞
−∞=
−
∞
−∞= 





−=
n
n
k
zknxkx ][][ 21
Se mudarmos a ordem dos somatórios:
∑ ∑
∞
−∞=
∞
−∞=
−
−=
k n
n
zknxkxzY ][][)( 21
Fazendo no segundo somatório m = n – k, temos:
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 38
∑ ∑
∞
−∞=
−
∞
−∞=
−






=
k
k
m
m
zzmxkxzY ][][)( 21
Assim, para valores de z dentro das regiões de convergência para X1(z) e X2(z),
podemos escrever:
)()()( 21 zXzXzY =
e) Diferenciação no Domínio Z: n.x[n] ↔ -z.dX(z)/dz, ROC = ROCx (cuidado
deve ser tomado observando o que acontece para z = 0 ou z = ∞).
Comentários:
Essa propriedade pode ser facilmente provada diferenciando a definição da TZ:
∑
∞
−∞=
−
=
n
n
znxzX ][)(
∑
∞
−∞=
−−
−=
n
n
znxn
zd
zdX 1
][)(
)(
)(
. (-z)
∑
∞
−∞=
−−
−−=−
n
n
znxnz
zd
zdX
z 1
][)(
)(
)(
∑
∞
−∞=
−
==−
n
n
nnxZznnx
zd
zdX
z ]}[{][
)(
)(
f) Reverso no tempo: x[-n] ↔ X(z-1
), ROC = 1/ROCX
Comentários:
Novamente, a definição de TZ prova esta propriedade:
∑
∞
−∞=
−
−=
n
n
znxzX ][)(
Fazendo m = -n, temos:
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 39
)()]([][)( 11 −
∞
−∞=
−−
∞
−∞=
=== ∑∑ zXzmxzmxzX
m
m
m
m
2.2 Pares de Transformadas Z
Segue um conjunto de pares de Transformadas Z mais úteis:
2.3 Exemplos de Cálculo da Transformada Z
A seguir, vamos apresentar alguns cálculos de transformada Z e como definir a
ROC.
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 40
Exemplo 1: x[n] = an
u[n]
∑ ∑ ∑ ∑
∞
−∞=
∞
−∞=
∞
=
∞
=
−−−−
====
n n n n
nnnnnn
azzaznuaznxzX
0 0
1
)(][][)(
ROC:
|az-1
| < 1 ⇒ |z| > |a|
||||,
1
1
)()( 1
0
1
az
az
z
az
azzX
n
n
>
−
=
−
== −
∞
=
−
∑
Para a = 1:
1||,
1
1
)(][][ 1
>
−
=→←= −
z
z
zXnunx Z
Observamos que, para a = 1, a ROC não contém o círculo unitário. Logo, a TF
para essa seqüência não converge.

Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 41
Exemplo 2: x[n] = -an
u[-n – 1]
∑∑∑
∞
−∞=
−
∞
−∞=
−
∞
−∞=
−
−−−=−−−==
n
nn
n
nn
n
n
znuaznuaznxzX ]1[]1[][)(
∑∑∑
∞
=
−
∞
=
−
−
−∞=
−
−=−=−=
0
1
1
1
)(1)(
n
n
n
nn
n
nn
zazazazX
ROC:
|a-1
z|<1 ⇒ |z|<|a|
||||,
1
1
1)(1)( 1
0
1
az
az
z
za
zazX
n
n
<
−
=
−
−=−= −
∞
=
−
∑

Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 42
Exemplo 3: x[n] = (1/2)n
u[n] + (-1/3)n
u[n]
∑∑
∞
−∞=
−
∞
−∞=
−














−+





==
n
n
nn
n
n
znunuznxzX ][
3
1
][
2
1
][)(
∑∑
∞
−∞=
−
∞
−∞=
−






−+





=
n
n
n
n
n
n
znuznuzX ][
3
1
][
2
1
)(
∑∑
∞
=
−
∞
=
−






−+





=
00 3
1
2
1
)(
n
n
n
n
n
n
zzzX
∑∑
∞
=
−
∞
=
−






−+





=
0
1
0
1
3
1
2
1
)(
n
n
n
n
zzzX
(i) (ii)
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
11
3
1
1
1
2
1
1
1
)(
−−
+
+
−
=
zz
zX
Para X(z), os pólos são dados por z=1/2 e z=-1/3 e os zeros são z=0 e z=1/12.
Uma das propriedades da ROC que podemos observar aqui é que os pólos não
fazem parte dela. 
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 43
Exemplo 4: x[n] = (-1/3)n
u[n] – (1/2)n
u[-n – 1]
∑∑
∞
−∞=
−
∞
−∞=
−








−−





−





−==
n
n
nn
n
n
znunuznxzX ]1[
2
1
][
3
1
][)(
∑∑
∞
−∞=
−
∞
−∞=
−
−−





−





−=
n
n
n
n
n
n
znuznuzX ]1[
2
1
][
3
1
)(
∑∑
−
−∞=
−
∞
=
−






−





−=
1
0 2
1
3
1
)(
n
n
n
n
n
n
zzzX
∑∑
∞
=
−∞
=
−






−





−=
10 2
1
3
1
)(
n
n
n
n
n
n
zzzX
∑∑
∞
=
−∞
=
−














−+





−=
0
1
0
1
2
1
1
3
1
)(
n
n
n
n
zzzX
(i) (ii)
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
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 44
ROC(i)
ROC(ii)
ROC:
z
z
zzz
zX
21
2
3
1
1
1
21
1
1
3
1
1
1
)(
11 −
−
+
=
−
−+
+
=
−−

Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 45
Exemplo 5:
Função delta δ[n]: δ[n] = 0, n ≠ 0, e δ[n] = 1, n = 0
Transformada Z:
∑
∞
−∞=
−
===
n
n
zznxzX 1.1][)( 0
ROC = Todo o Plano Z

Exemplo 6: x[n] = δ[n – n0]
∑∑
∞
−∞=
−−
∞
−∞=
−
=−==
n
nn
n
n
zznnznxzX 0
][][)( 0δ
ROC = Todo o Plano Z.

Nos exemplos 5 e 6, x(n) é finita. X(z) é um polinômio de base z-1
e todo o plano
Z menos quando z = 0. Nesse ponto, a transformada não é definida.
Exemplo 7: Determine a transformada Z da sequência:
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] ↔ zn
0.X(z)),
temos:
X(z) = Z{x[n]} = z-2
.Z{n(0,5)n
.cos(πn/3)u[n]}
Considerando agora a diferenciação no domínio 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 Seção 2.2:
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 46
21
1
25,0)
3
cos.5,0(21
)
3
cos.5,0(1
]][)
3
cos()5,0[(
−−
−
+−
−
=
zz
z
nu
n
z n
π
π
π
21
1
25,05,01
25,01
]][)
3
cos()5,0[( −−
−
+−
−
=
zz
z
nu
n
z n π
, ROC = |z| > 0,5
Assim:






+−
−
−= −−
−
−
21
1
1
25,05,01
25,01
)(
zz
z
dz
d
zzX
4321
543
0625,025,075,01
0625,05,025,0
)( −−−−
−−−
+−+−
+−
=
zzzz
zzz
zX ROC = |z| > 0,5
O seguinte procedimento no MatLab pode ajudar a verificar se a transformada
está correta. Para tanto, vamos calcular as primeiras 8 amostras da sequência
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 sequência
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) % sequência original
x =
0 0 0 0.2500 -0.2500 -0.3750 -0.1250 0.0781
Conferindo com a sequência gerada pelo processo de filtragem.

Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 47
2.4 Propriedades da Região de Convergência
A região de convergência (ROC) traz algumas propriedades:
1) A ROC é um anel ou disco no Plano Z com centro na origem.
2) A TF da seqüência x[n] converge absolutamente se e somente se a ROC da
TZ contém o círculo unitário.
3) A ROC não pode conter pólos.
4) Se x[n] é uma seqüência de duração finita, a ROC é todo plano Z.
5) Se x[n] é causal (right-sided), a ROC extende-se para além dos pólos mais
externos, possivelmente tendendo a infinito.
6) Se x[n] é não causal (left-sided), a ROC extende-se para uma região menor
que o menor pólo até zero.
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 48
7) Se x[n] é uma seqüência com componentes parte causal e parte não-causal,
então a ROC é um anel.
8) A ROC é uma região conectada.
2.5 A Transformada Z Inversa
O cálculo da TZ inversa não é tão direto quanto o da TF. Aqui, existem diversas
maneiras formais e informais de calcular a TZ inversa dada uma expressão
algébrica e a ROC associada.
Seja a Transformada Z definida por:
∑
∞
−∞=
−
=
n
n
znxzX ][)(
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:
∫ ∫ ∑
∞
−∞=
−−−
=
C C n
nkk
dzznxdzzzX 11
][)(
(1)
onde C denota o contorno fechado na ROC de X(z), tomado no sentido anti-
horário. Como a série converge nesse contorno, podemos mudar a ordem da
integração e do somatório no lado direito, ficando com:
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 49
∫ ∑ ∫
∞
−∞=
−−−
=
C n C
nkk
dzznxdzzzX 11
][)(
(2)
Pelo teorema de integração de Cauchy:



≠
=
=∫
−−
kn
kn
dzz
j C
nk
,0
,1
2
1 1
π (3)
onde C é qualquer contorno que inclui a origem. Aplicando (3), o lado direito de
(2) reduz-se a 2πj.x[k] e assim a fórmula inversa é alcançada:
∫
−
=
C
k
dzzzX
j
kx 1
)(
2
1
][
π (4)
Fig. 2.2. Contorno C para a integral da transformada Z inversa.
Essa é a inversa da transformada Z para uma dada seqüência. No entanto, nós
não precisaremos usar essa inversão já que dentro de sinais e sistemas, as
transformadas Z são funções racionais (i.e., razão entre dois polinômios). Para
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 50
tais transformadas, há métodos mais simples de inversão que envolvem tabelas
conhecidas e métodos mais simples. Os principais métodos são:
- Método da inspeção
- Expansão em Frações Parciais
- Expansão em Séries de Potências
O método da inspeção é o mais simples e consiste em apenas observar a
transformada e ver se ela é da forma de alguma TZ conhecida. Por exemplo,
dado:
1
2
1
1
1
)(
−
−
=
z
zX
, |z|> ½
Por observação, sabemos que:
x[n] = -(½)n
u[-n – 1]
Notadamente, o método da inspeção não é o mais apropriado para calcular TZs
inversas mais complexas.
Para ver como obter uma expansão em frações parciais, vamos assumir que
X(z) pode ser expressa como uma razão de polinômios em z-1
, i.e.,
∑
∑
=
−
=
−
= N
k
k
k
M
k
k
k
za
zb
zX
0
0
)(
Para calcular a transformada inversa, tentamos expressar X(z) da forma:
∑∑ =
−
−
=
−
−
+=
N
k k
k
NM
r
r
r
zd
A
zBzX
1
1
0 1
)(
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 51
Exemplo 8: Suponha:
)1)(
2
1
1(
21
2
1
2
3
1
21
)(
11
21
21
21
−−
−−
−−
−−
−−
++
=
+−
++
=
zz
zz
zz
zz
zX
Vamos considerar que:
=
−
+
−
+= −
−
1
2
1
1
0
1
2
1
1
)(
z
A
z
A
BzX
)1)(
2
1
1(
)
2
1
1()1()1)(
2
1
1(
11
1
2
1
1
11
0
−−
−−−−
−−
−+−+−−
=
zz
zAzAzzB
)1)(
2
1
1(
)
2
1
1()1()
2
1
2
1
1(
11
1
2
1
1
211
0
−−
−−−−−
−−
−+−++−−
=
zz
zAzAzzzB
Logo:
=
−−
+−−−+++
=
−−
−−
)1)(
2
1
1(
)
2
1
()
2
1
2
3
()(
)(
11
0
2
210
1
210
zz
BzAABzAAB
zX
)1)(
2
1
1(
21
11
21
−−
−−
−−
++
=
zz
zz
Assim, temos:
1210 =++ AAB
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 52
2
2
1
2
3
210 =−−− AAB
21
2
1
00 =⇒= BB
Com isso, ficamos com:








−=+
−=+
⇒
=−−−
=++
5
2
1
1
2
2
1
3
12
21
21
21
21
AA
AA
AA
AA
Resolvendo, temos:
A1 = -9 e A2 = 8
Logo:
1
1 1
8
2
1
1
9
2)( −
− −
+
−
−
+=
zz
zX
que corresponde à Transformada Z da sequência:
][.8][)
2
1
.(9][2][ nununnx n
+−= δ

A expansão em série de potências é aplicada quando a transformada Z é um
polinômio da forma:
∑
∞
−∞=
−
=
n
n
znxzX ][)(
Isso ocorre, principalmente, se a TZ é uma seqüência finita.
Por exemplo, considere que a TZ de uma seqüência x[n] é da forma:
)1)(1)(
2
1
1()( 1112 −−−
−+−= zzzzzX
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 53
Uma expansão em frações parciais para esse caso não é apropriada. No
entanto, efetuando os produtos, podemos reduzir a expressão a:
12
2
1
1
2
1
)( −
+−−= zzzzX
que equivale à seqüência:
x[n] = δ[n + 2] – ½.δ[n + 1] - δ[n] + ½.δ[n – 1]

Exemplo 9: Considere a função:
143
)( 2
+−
=
zz
z
zX
Primeiro, vamos re-arranjar X(z) tal que ela se torne uma função em potências
de z-1
:
21
1
21
1
43
0
43
)( −−
−
−−
−
+−
+
=
+−
=
zz
z
zz
z
zX
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 informação sobre a função residuez, digite help residuez no MatLab.
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 54
que corresponde a:
1
1
3
1
1
5,0
1
5,0
)(
−
−
−
−
−
=
z
z
zX
De maneira similar, podemos voltar à forma anterior:
>> [b, a] = residuez(R, p, C)
b =
-0.0000 0.3333
a =
1.0000 -1.3333 0.3333
que corresponde a:
21
1
21
1
21
1
43
0
43
3
1
3
4
1
3
1
0
)( −−
−
−−
−
−−
−
+−
+
=
+−
=
+−
+
=
zz
z
zz
z
zz
z
zX
como antes.

Exemplo 10: Calcule a transformada Z inversa de:
)9,01()9,01(
1
)( 121 −−
+−
=
zz
zX , |z|>0,9
Podemos calcular o polinômio no denominador assim como os resíduos usando
MatLab:
>> b = 1;
>> a = poly([-0.9 -0.9 0.9]) % calcula os coeficientes do polinômio que tem essas
raízes
a = 1.0000 0.9000 -0.8100 -0.7290
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 55
>> [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 frações parciais como:
1211
9,01
25,0
)9,01(
5,0
9,01
25,0
)( −−−
+
+
−
+
−
=
zzz
zX , |z| > 0,9
121
1
1
9,01
25,0
)9,01(
9,0
9,0
5,0
9,01
25,0
)( −−
−
−
+
+
−
+
−
=
zz
z
z
z
zX , |z| > 0,9
que, de acordo com as propriedades da transformada Z e a tabela da Seção 2.2,
nos dá:
][)9,0(25,0]1[)9,0)(1(
9
5
][)9,0.(25,0][ 1
nununnunx nnn
−++++= +
Vamos tentar deixar todas as parcelas em função de u[n]. Para tanto, vamos
trabalhar na segunda parcela:
]1[)9,0)(1(
9
5 1
++ +
nun n
Observe que: a.u[n + 1] = a.u[n = -1] + a.u[n]. Logo:
][)9,0)(1(
9
5
)9,0)(1(
9
5
]1[)9,0)(1(
9
5 1
1
11
nunnnun n
n
nn +
−=
++
+++=++
][)9,0)(1(
9
5
]1[)9,0)(1(
9
5 11
nunnun nn ++
+=++
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 56
][)9,0)(1(5,0][)9,0.(9,0).1(
9
5
nunnun nn
+=+=
][)9,0(5,0][)9,0(5,0 nunun nn
+=
Logo:
][)9,0(25,0][)9,0.(5,0][)9,0.(75,0][ nununnunx nnn
−++=
Como antes, podemos verificar as 8 primeiras amostras da sequência x[n], no
MatLab:
>> [delta, n] = impseq(0,0,7);
>> x = filter (b, a, delta)
x = 1.0000 0.9000 1.6200 1.4580 1.9683 1.7715 2.1258 1.9132
>> x = 0.75*(0.9).^n+0.5*n.*(0.9).^n + 0.25*(-0.9).^n
x = 1.0000 0.9000 1.6200 1.4580 1.9683 1.7715 2.1258 1.9132

Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 57
2.6 Exercícios
1. Calcule a transformada Z das sequências:
a. x[n] = -(1/2)n
u[-n – 1]
b. y[n] = (-1/2)n
u[n] + (1/3)n
u[-n – 1]
c. y[n] =2δ[n – 3] + (-1/4)n
u[-n - 1] + (1/2)n
u[n]
2. Calcule a transformada Z das seguintes sequências usando as suas
propriedades e a tabela da Seção 2.2 e verifique seus resultados usando
MatLab.
a. x[n] = 2.δ[n-2] + 3u[n – 3]
b. x[n] = (1/3)n
u[n – 2] + (0,9)n-3
u[n]
3. Seja x[n] uma sequência com transformada Z dada por X(z). O que se pode
dizer sobre as sequências 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.
1
2
1
1
1
)(
−
+
=
z
zX , ROC = |z| > ½
b.
1
2
1
1
1
)(
−
+
=
z
zX , ROC = |z| < 1/2
c.
21
1
8
1
4
3
1
2
1
1
)(
−−
−
++
−
=
zz
z
zX , ROC = |z| > 1/2
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 58
5. Determine a transformada inversa usando o método de expansão em frações
parciais de:
321
321
1
4
1
8
13
4
11
1
441
)(
−−−
−−−
−+−
+−−
=
zzz
zzz
zX
sabendo que a sequência é causal.
6. Suponha que X(z) é:
21
1
1
81,01
32
)( −−
−
+−
+
=
zz
z
zX , |z| > 0,9
Encontre as primeiras 20 amostras de x[n], usando o MatLab.

Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 59
2.7 Bibliografia Complementar
1. Vinay K. Ingle, John G. Proakis, Digital Signal Processing, Thomson
Learning, 2000.
2. Michael Weeks, Digital Signal Processing Using MatLab and Wavelets,
Infinity Science Press, 2007.
3. Alan V. Oppenheim, Ronald Schafer, Discrete Time Signal Processing,
Prentice Hall, 1989
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 60
3. Teoria da Amostragem
Sinais discretos no tempo podem ser gerados de diferentes formas, mas a mais
comum é sendo uma representação de sinais contínuos no tempo. Em parte,
isso é devido ao fato que o processamento de sinais contínuos no tempo é feito
através do processamento discreto no tempo de seqüências obtidas através de
amostragem. Um sinal contínuo 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 representação discreta no tempo de um sinal
contínuo no tempo é através de uma amostragem periódica, quando a
seqüência de amostras x[n] é obtida de um sinal contínuo no tempo xc(t) de
acordo com a relação:
x[n] = xc(nT), -∞ < n < ∞ (Eq. 3.1)
Na Eq. 3.1, T é chamado de período de amostragem e sua inversa, fs = 1/T, é a
freqüência de amostragem, medida em amostras por segundo.
Referimo-nos a um sistema que implementa a operação da Eq. 3.1 como um
conversor ideal contínuo-para-discreto (C/D) no tempo. Na prática, a operação
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 61
de amostragem é implementada por um conversor analógico-para-digital (A/D).
Tais sistemas podem ser vistos como aproximações de conversores C/D ideais.
Na implementação ou escolha de um conversor A/D deve-se considerar a
quantização da saída, linearidade, a necessidade de circuitos sample-and-hold e
limitações na taxa de amostragem.
Em geral, a amostragem é um processo não-inversível. Ou seja, dada uma
seqüência x[n], não é possível reconstruir o sinal original xc(t). Muitos sinais
diferentes podem gerar a mesma seqüência de amostras de saída.
É 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 conversão desse trem em uma seqüência. Na Fig.
3.2, a diferença fundamental entre xs(t) e x[n] é que xs(t) é um sinal contínuo com
valores zero exceto nos inteiros múltiplos de T. x[n], por outro lado, não possui
informação explícita sobre a taxa de amostragem e é um sinal onde as regiões
que não representam valores inteiros não têm valor definido.
São muitas as razões para o aumento no uso de sistemas digitais:
1. Muitas informações (ou dados) estão nessa forma, e.g. entrada/saída de
computadores, sinais de controle digital, etc.
2. A disponibilidade de componentes pequenos, confiáveis e de baixo custo,
principalmente, com o aumento da escala de integração dos circuitos
integrados.
3. Relativa simplicidade no projeto de circuitos e facilidade de
implementação usando circuitos integrados.
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 62
Fig. 3.2. Amostragem com um trem de impulsos periódicos seguida de uma
conversão para uma seqüência discreta no tempo. a) Visão geral do sistema; b)
xc(t) (sinal original no tempo contínuo) e xs(t); c) a seqüência x[n] de saída.
4. Ampla utilização de computadores digitais no processamento de todo tipo
de dados e sinais.
5. Armazenamento de sinais realizado de modo simples e econômico
(simplicidade das memórias digitais)
6. Crescente uso e disponibilidade de técnicas de processamento digital de
sinais (DSP).
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 63
7. Fidelidade em transmissões longas devido ao uso de estações
repetidoras regenerativas.
8. Flexibilidade do formato digital que permite:
a. Combinação em um mesmo canal de uma variedade de diferentes
tráfegos (telégrafo, dados, voz, imagem, vídeo, etc);
b. Multiplexação feita de forma simples e econômica;
c. Transmissão com velocidade ajustável; rápida ou lenta em função
do tráfego e/ou qualidade exigidas.
9. Uso de parte do sinal digital para controlar o progresso do sinal através
do sistema (ex: cabeçalho).
10. Possibilidade da codificação (teoria da informação):
a. Codificação da fonte, reduzindo redundância, isto é, compactando
os dados;
b. Codificação do canal, combatendo os efeitos do ruído,
interferências, etc.
11.Aplicações de técnicas de criptografia, garantindo a privacidade e
autenticidade da comunicação.
A digitalização de sinais analógicos vem tornando-se cada vez mais importante,
principalmente, com o desenvolvimento das redes digitais de serviços
integrados.
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 64
Na conversão analógico-digital é necessário colher-se um número discreto de
amostras de um sinal contínuo. O problema crucial na amostragem está com o
número de amostras/seg devem ser colhidas. Um número muito pequeno de
amostras pode resultar em uma representação demasiadamente pobre do sinal.
A análise quantitativa acerca desse problema é estudada pelo Teorema de
Shannon-Nyquist.
A princípio, pode-se imaginar que, no processo de amostragem de um sinal
analógico, há sempre perda de informação 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 condições, as amostras de um sinal
podem conter precisamente toda a informação a ele associada. Isto significa que
o sinal pode ser perfeitamente recuperado a partir de amostras colhidas sem
nenhuma aproximação.
O estudo sobre o teorema da amostragem é aplicado a sinais banda limitado,
isto é, aqueles que não possuem componentes espectrais para freqüência acima
de uma dada freqüência (Fig. 3.3).
Fig. 3.3. Exemplo de um sinal banda limitado.
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 65
Embora essa condição não seja rigorosamente verificada, ela é bastante útil em
termos práticos.
3.1 Teorema de Shannon
Teorema de Shannon: Um sinal de banda limitada por fm Hz está unicamente
determinado por amostras, se são tomadas, pelo menos, 2.fm amostras
eqüidistantes por segundo.
Prova:
Se as amostras são obtidas a cada Ts segundos, considera-se então um trem
de impulsos δTs(t)
∑
∞
−∞=
−=
n
Ts nTstt )()( δδ
A amostragem de um sinal f(t) em intervalos de T segundos será definida por:
∑
∞
−∞=
−==
n
Tss nTsttfttftf )().()().()( δδ
Então a função amostrada contém apenas informações acerca das amostras
f(nTs), n = 0, 1, 2, 3, ...., pois
∑
∞
−∞=
−=
n
s nTstnTsftf )().()( δ
Toda a informação 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.
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 66
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 auxílio do
teorema da convolução na freqüência:
f1(t).f2(t) ↔ (1/2π)F1(w)*F2(w)
onde * é a operação de convolução. Segue, então, que:
∑
∞
−∞=
−↔
n
SsT nwwwwFttf )(*)(
2
1
)()( δ
π
δ
Se:
fs(t) ↔ Fs(w)
Então, o espectro de fs(t) é dado por:
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 67
∑∑
∞
−∞=
∞
−∞=
−=−=
n
S
s
n
Sss nwwwF
w
nwwwwFwF )()(
2
)(*)(
2
1
)( δ
π
δ
π
∑
∞
−∞=
−=
n
S
s
s nwwwF
T
wF )()(
1
)( δ , com ws = 2π/Ts
e, finalmente,
∑
∞
−∞=
−=
n
S
s
s nwwF
T
wF )(
1
)(
Este espectro é esboçado para vários valores de ws, isto é, vários valores para o
espaçamento Ts entre amostras.
A escolha do valor de Ts e, consequentemente, de ws é importante para evitar a
sobreposição entre sinais no domínio da freqüência. A fig. 3.5 apresenta três
casos onde o valor de ws é maior, igual ou menor a wm (freqüência limite da
banda do sinal de entrada). Nesses três casos, pode-se ver que não há
sobreposição quando ws ≥ 2wm. Então, o uso de um filtro passa-baixa ideal
permite recuperar o sinal perfeitamente sem distorções (Fig. 3.6). A
sobreposição dos sinais é chamada de aliasing e deve ser evitada.
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 68
a)
b)
c)
d)
Fig. 3.5. a) Sinal original banda limitado em wm; resultado no domínio da
freqüências de amostragens com: b) ws > 2wm, c) ws = 2wm, d) ws < 2wm
(sobreposição de sinais – aliasing).
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 69
Fig. 3.6. Recuperação do sinal original com um filtro passa-baixa.
Para recuperação do sinal com um FPB sem distorções, é preciso que:
ws ≥ 2wm
ou seja
2π/Ts ≥ 2.2πfm ⇒ Ts ≤ 1/(2fm) seg
O limite 1/Ts = 2fm é chamado de taxa de Nyquist. Valores de Ts que não
atendam a essa condição podem provocar diversas distorções no sinal, como:
• Ganho nas altas freqüências
• Perda nas altas freqüências
• Modulação das freqüências do sinal original
• Casos híbridos
Esses problemas podem ser vistos na Fig. 3.7. A Figura 3.8 mostra uma
distorção desse tipo em uma imagem. Esse problema (conhecido como efeito
Moirée) surgiu por causa de uma baixa resolução utilizada na digitalização da
imagem. Ele se apresenta de forma mais forte em partes da imagem que
tenham um padrão repetitivo (como essas linhas circulares).
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 70
Fig. 3.7. Distorções que podem ser provocadas por escolha errada na banda de
passagem do fitro passa-baixa para recuperação do sinal de entrada após a
amostragem.
Fig. 3.8. Efeito Moirée.
3.2 Re-Obtenção do Sinal a partir de suas amostras
De acordo com o teorema de Shannon-Nyquist, se Ts ≤ 1/(2fm), então a
passagem do sinal amostrado por um filtro passa-baixa ideal recupera
exatamente o sinal analógico. Suponha que o filtro passa-baixa tem função de
transferência:
H(w) = Ts. ∏(w/(2wm))
então
Fs(w).Ts. ∏(w/(2wm)) = F(w)
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 71
A seguir, vamos analisar o processo de re-obtenção do sinal no domínio do
tempo:
f(t) ↔ F(w) = Fs(w).Ts. ∏(w/(2wm))
O uso do teorema da convolução 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 função sample e tem a forma sen(x)/x, tem-se
f(t) = fs(t)*Ts(wm/π)Sa(wmt)
logo
)(*)()()( twSanTtnTf
wT
tf m
n
ss
ms






−= ∑
∞
−∞=
δ
π
∑
∞
−∞=
−=
n
mss
ms
twSanTtnTf
wT
tf )](*)()[()( δ
π
Lembrando da propriedade da amostragem da função impulso, segue-se
∑
∞
−∞=
−=
n
smssm nTtwSanTfTftf ))(()(.2)(
No caso particular em que Ts = 1/(2fm), tem-se
∑
∞
−∞=
−=
n
m
m
ntwSa
f
n
ftf )()
2
()( π
Como o sinal é recomposto através das amostras, observa-se que f(t)
corresponde à superposição de várias funções sample deslocadas, centradas
em 0, ±T, ±2T, .... (Fig. 3.9).
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 72
Fig. 3.9. Interpolação das amostras por filtro passa-baixa.
Observações
a) Nos pontos de amostragem nT, o valor correto de f(t) é f(nT). Em T = 0,
todas as funções sample se anulam, exceto aquele centrado em t=0, cujo
valor é f(0). Em t=T apenas a sample aí centrada não é 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 interpolação.
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 73
4. Filtros Digitais
Um sistema discreto no tempo é definido matematicamente como uma
transformação que mapeia uma seqüência de entrada x[n] em uma seqüência
de saída y[n]. Isso pode ser denotado por:
y[n]=T{x[n]}
como representado na Fig. 4.1.
Fig. 4.1. Representação de um sistema discreto no tempo
Uma classe importante de sistemas consiste naqueles que são lineares e
invariantes no tempo. Os sistemas lineares são aqueles que obedecem ao
princípio da superposição. Se a propriedade da linearidade é combinada com a
representação de uma seqüência geral como uma combinação de impulsos,
então um sistema linear pode ser completamente caracterizado pela sua
resposta ao impulso. Seja hk[n] a resposta do sistema a δ[n – k]. Assim, como:
∑
∞
−∞=
−=
k
knkxnx ][][][ δ
então
}][][{][ ∑
∞
−∞=
−=
k
knkxTny δ
Pelo princípio da superposição, podemos escrever:
∑∑
∞
−∞=
∞
−∞=
=−=
k
k
k
nhkxknTkxny ][][}][{][][ δ
De acordo com essa equação, a resposta do sistema a qualquer entrada pode
ser expressa em termos da resposta a δ[n – k] (o impulso).
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 74
A propriedade da invariância no tempo implica que, se h[n] é a resposta a δ[n],
então a resposta a δ[n - k] é h[n – k]. Com isso, podemos dizer que:
∑
∞
−∞=
−=
k
knhkxny ][][][ (Eq. 4.1)
Como conseqüência, um sistema linear invariante no tempo é completamente
descrito por sua resposta ao impulso. Essa equação é conhecida como soma de
convolução (convolution sum) que pode ser representada pela notação:
y[n] = x[n]*h[n] (Eq. 4.2)
Apesar da semelhança na notação, deve-se salientar que a soma de convolução
para sinais discretos não é uma aproximação da integral de convolução.
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], então seus sistema inverso, se existir, tem resposta ao impulso
hi[n] definida pela relação:
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 através de uma equação de
diferenças de coeficientes constantes lineares de n-ésima ordem da forma:
∑ ∑= =
−=−
N
k
M
k
kk knxbknya
0 0
][][ (Eq. 4.3)
Um exemplo de um tal sistema é um acumulador definido pela seqüência cujo
diagrama de blocos pode ser visto na figura abaixo:
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 75
Esse sistema é representado pela equação de diferenças:
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.
4.1 Filtros Digitais
Em geral, estamos interessados em manipular o sinal. Por exemplo, podemos
querer retirar algum ruído de um sinal, como no caso de um sinal de voz, onde o
ruído deve ser diferenciado da voz propriamente dita. Para isso, filtros são
utilizados. Filtros estão envolvidos em diversas partes de um sistema de
processamento digital de sinal. Eles podem ser implementados tanto em
hardware quanto em software e atuam em sinais digitais de diversas naturezas,
como sons, voz, imagem ou vídeo. Em cada caso, os filtros assumem
particularidades diferentes. Vamos entender um pouco como se dá o processo
em sinais e, em seguida, particularizar para o caso de imagens digitais.
Filtros digitais são formados por poucos componentes. Basicamente são apenas
multiplicadores, somadores e elementos de retardo (delay). Desses,
multiplicadores e somadores implementam essas operações aritméticas em
seqüências discretas. Retardos são unidades que processam elementos
anteriores de uma seqüência (Fig. 4.2).
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 76
Fig. 4.2. Retardo (delay) aplicado a uma seqüência x[n].
A representação mostrada na Fig. 4.2 em diagrama de blocos é comum para
filtros. Os elementos básicos de um filtro também são representados dessa
maneira. Nesse caso, o elemento de delay é representado como z-1
, devido à
Transformada Z. As representações em diagrama de blocos podem ser vistas na
Fig. 4.3.
Fig. 4.3. Diagrama de blocos de: a) Somador de duas seqüências, b)
multiplicador de duas seqüências, c) multiplicador de uma seqüência por uma
constante e d) retardo.
Exemplos:
1) Podemos ver na Fig. 4.4 a representação em diagrama de blocos da equação
de diferença definida por:
y[n] = a1.y[n – 1] + a2.y[n – 2] + b.x[n]
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 77
cuja transformada Z (ou função de sistema) é dada por:
2
2
1
11
)( −−
−−
=
zaza
b
zH
Fig. 4.4. Diagrama de blocos para uma equação de diferenças.
2) Uma equação de diferenças pode ser generalizada da forma:
∑ ∑= =
−=−−
N
k
M
k
kk knxbknyany
1 0
][][][
com função de sistema correspondente:
)(
)(
1
)(
1
0
zX
zY
za
zb
zH N
k
k
k
M
k
k
k
=
−
=
∑
∑
=
−
=
−
A função de sistema ou função de transferência corresponde à relação entre a
saída e a entrada do sistema.
Podemos re-escrever a equação de diferenças na forma de uma relação de
recorrência:
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 78
∑ ∑= =
−+−=
N
k
M
k
kk knxbknyany
1 0
][][][
que pode ser representada em diagrama de blocos como na Fig. 4.5.
Fig. 4.5. Representação em diagrama de blocos de uma equação de diferenças
geral.
Nessa figura, temos:
∑=
−=
M
k
k knxbnv
0
][][
∑=
−+=
N
k
k knyanvny
1
][][][
Como apresentado na Fig. 4.5, referimos a essa forma de diagrama de blocos
como a Forma Direta I. Uma implementação com uma menor quantidade de
retardos também pode ser utilizada e é chamada de Forma Direta II (Fig. 4.6,
considerando, sem perda de generalizada, M = N).
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 79
Fig. 4.6. Representação com menos retardos (Forma direta II).
Os filtros são classificados em relação à sua resposta ao impulso. Nesse
sentido, os filtros dividem-se em filtros FIR (Finite Impulse Response) e IIR
(Infinite Impulse Response).
4.2 Filtros FIR
A estrutura de um filtro FIR é bastante regular e, uma vez definidos os
coeficientes, o filtro pode ser completamente especificado. Esses são os
coeficientes do filtro. Na Fig. 4.7, podemos ver uma estrutura simples de um
filtro FIR. Podemos observar que a passagem pelos componentes do filtro se dá
sempre da esquerda para a direita. Por isso, esse filtro é chamado também de
feed-forward.
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 80
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 saída seria y[n]=[0.5, 0.5]. A equação para cada termo é:
y[0] = 0.5.x[0] + 0.5.x[-1]
y[1] = 0.5.x[1] + 0.5.x[0]
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 81
Ou, de forma geral:
y[n] = 0.5.x[n] + 0.5.x[n - 1]
Os filtros FIR são expressos como:
∑=
−=
M
k
k knxbny
0
][][
com função de transferência:
∑=
−
=
M
k
k
k zbzH
0
)(
A resposta ao impulso h[n] é dada por:


 −≤≤
=
senão
Mnb
nh n
0
10
][
e a representação em equação de diferenças é:
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:
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 82
Dados os coeficientes, pode-se calcular de forma simples a saída 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 saída é dada por:
Há três importantes propriedades de um sistema:
• Causalidade
• Linearidade
• Invariância no tempo
Um sistema é dito causal quando ele não precisa de informações futuras para
calcular a saída atual. Um sistema é linear se obedece ao princípio da
superposição. 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 saída do sistema reflete
qualquer deslocamento que a entrada. Ou seja, se y[n] = T{x[n]}, então x[n – m]
gera uma saída y[n – m].
Filtros FIR podem implementar diversas diferentes funções apenas com
mudanças nos seus coeficientes. A função de um filtro depende de seu
comportamento no domínio da freqüência. Um filtro pode ser passa-baixa,
passa-alta, passa-faixa, rejeita-faixa ou notch. Um filtro notch é um filtro que tem
fendas profundas ou, idealmente, zeros perfeitos na sua resposta em frequência.
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 83
Filtros notch são bastante úteis quando frequências específicas devem ser
eliminadas. Isso acontece, por exemplo, quando precisamos eliminar a
frequência de 60Hz (e seus harmônicos) da rede elétrica.
Filtros passa-baixa ou passa-alta permitem passar baixas ou altas freqüências
de um sinal. As Figs. 4.8 e 4.9 apresentam exemplos simples de filtros assim.
Fig. 4.8. Exemplos de filtros passa-baixa e passa-alta ideais.
Fig. 4.9. Exemplos de filtros passa-baixa e passa-alta.
Os filtros da Fig. 4.8 são filtros ideais não realizáveis. A Fig. 4.9 apresenta filtros
com uma mudança mais suave da banda de passagem para a banda de corte
(no FPB) e vice-versa (no FPA).
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 84
Na prática, tais filtros têm características um pouco diferentes. Podemos
observar ondulações e uma banda de transição mais suave. Essas
características podem ser vistas na Fig. 4.10 a qual apresenta o espectro de
diferentes filtros (ou seja, suas transformadas de Fourier). É através do espectro
que podemos analisar o comportamento do filtro.
Fig. 4.10. Padrões de ondulação na banda de passagem ou na banda de parada
e um banda de transição suave.
Por exemplo, um filtro apenas com coeficientes [0,5 0,5] comporta-se como um
FPB. Seu comportamento foi avaliado anteriormente, tendo sua saída definida
por:
y[n] = 0.5.x[n] + 0.5.x[n - 1]
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 85
que é o mesmo que y[n] = (x[n] + x[n – 1])/2. Por isso, filtros passa-baixa são
chamados, às vezes, de filtro da média.
Um filtro com coeficientes [0,5 -0,5] corresponde a um filtro passa-alta, chamado
de filtro de diferenciação. O seguinte código no MatLab apresenta a
transformada de Fourier para uma seqüência 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) Seqüência [0,5 0,5] e sua transformada de Fourier (um
FPB) e (direita) a seqüência [0,5 -0,5] e sua transformada (um notch FPA).
Vamos analisar o FPA:
y[n] = (x[n] - x[n – 1])/2
Pequenas diferenças entre as amostras resultam em valores pequenos; grandes
diferenças resultam em valores grandes. Assim, a resposta em frequência desse
filtro deve atenuar mudanças suaves no sinal (como as relacionadas com as
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 86
baixas frequências) e enfatizar mudanças rápidas (como as relacionadas com as
altas frequências).
Dois outros tipos de filtros são notch e passa-faixa. Filtros notch eliminam
frequências específicas. Filtros passa-faixa têm 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
frequência através 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
frequência através 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 é simétrico
>> half = 1:ceil(length(Y2)/2);
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 87
>> plot(half/max(half), abs(Y2(half)), 'b');
>> 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 é simétrico
>> half = 1:ceil(length(Y2)/2);
>> plot(half/max(half), abs(Y2(half)), 'b');

4.2.1 Sistemas com Fase Linear
Em diversas aplicações como processamento de voz ou som, filtros digitais são
usados para implementar operações seletivas de frequência. Assim,
especificações são necessárias no domínio da frequência em termos de
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 88
magnitude desejada e resposta em fase do filtro. Em geral, uma resposta em
fase linear na banda de passagem é desejada (Fig. 4.13).
Fig. 4.13. Exemplos de fases lineares e não-lineares.
Considere um sistema LTI cuja reposta em frequência sobre um período é:
Hid(ejω
)=e-jωα
, |ω| < π
onde α é um número real, não necessariamente um inteiro. Esse sistema tem
magnitude constante:
|Hid(ejω
)| = 1,
fase linear
∠Hid(ejω
) = -ωα
e atraso de grupo constante
grd[Hid(ejω
)] = α
A transformada inversa de Fourier de Hid(ejω
) é dada por:
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 89
∫∫ −
−−
−
−
==
π
π
αω
π
π
ωωα
ω
π
ω
π
dedeenh njnjj
id
)(
2
1
2
1
][
=
−
=
−
=
−
−−
−
−− π
π
αωπ
π
αω
απαπ
)()(
)(
1
2
1
)(
1
2
1 njjnj
e
nj
e
nj
][
)(
1
2
1 )()( njnj
ee
nj
−−−
−
−
= απαπ
απ
Sabendo que 2/)( αα
α jj
eesen −
−= , temos:
)]([
)(
1
][
)(
1
2
1 )()(
απ
απαπ
απαπ
−
−
=−
−
−−−
nsen
n
ee
nj
njnj
)(
)]([
][
απ
απ
−
−
=
n
nsen
nhid , -∞< n < ∞ (Eq. 1)
Assim
)(
)]([
*][][*][][
απ
απ
−
−
==
n
nsen
nxnhnxny id
∑
∞
−∞= −−
−−
=
k kn
knsen
kxny
)(
)]([
][][
απ
απ
Se α = nd, nd inteiro, pela propriedade do deslocamento do tempo da
transformada de Fourier e lembrando que ℑ{δ[n]} = 1 :
Hid(ejω
) = e-jωnd
↔ hid[n] = δ[n – nd]
Logo:
][*][][ dnnnxny −= δ
Ou seja, a mesma seqüência de entrada apenas deslocada de nd amostras.
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 90
De forma geral, o sistema é de fase linear se
∠Hid(ejω
) = β - ωα, -π < ω < π
Por exemplo, considere uma resposta em freqüência com fase linear da forma
H(ejω
) = |H(ejω
)|e-jωα
, |ω| < π
Suponha que H(ejω
) é o filtro passa-baixa:



≤<
<
=
−
πωω
ωωωα
ω
||,0
||,
)(
c
c
j
j
LP
e
eH
cuja resposta ao impulso é, como vimos:
)(
)]([
][
απ
αω
−
−
=
n
nsen
nh c
LP
Se ωc = π, temos a Eq. 1. Quando α é um inteiro, digamos α = nd:
=
−−
−−
=−
)2(
)]2([
]2[
dd
ddc
dLP
nnn
nnnsen
nnh
π
ω
][
)(
)]([
]2[ nh
nn
nnsen
nnh LP
d
dc
dLP =
−
−
=−⇒
π
ω
Nesse caso, temos um sistema de fase zero (zero phase system). Se α = -nd:
][][|)(|)()(
^^^
nhnheHeeHeH LPLP
j
LP
njj
LP
j
LP
d
−=⇒== ωωωω
Assim, se 2α é um inteiro (o que implica que α é um inteiro ou um inteiro mais
0.5), a resposta ao impulso correspondente tem simetria sobre α, i.e.:
h[2α - n] = h[n]
Isso é condição suficiente (mas não necessária) para termos um sistema de fase
linear.
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 91
Fase Linear Generalizada
Um sistema é dito de fase linear generalizada se sua resposta em freqüência
pode ser expressa na forma:
H(ejω
) = A(ejω
)e-jαω+jβ
(Eq. 2)
onde α e β são constantes e A(ejω
) é uma função real ω. O sistema que
consideramos antes tinha β = 0. Um sistema como o da Eq. 2 é dito de fase
linear generalizada dado que a fase é uma função linear de -ωα. Tal sistema
também se caracteriza por um atraso de grupo constante:
grd[H(ejω
)] = α
De forma geral, a fase linear tem forma:
∠[H(ejω)] = β - ωα, 0 < ω < π
onde α e β são constantes reais. Lembramos que, como vimos antes, a resposta
ao impulso de sistemas de fase linear tem simetria sobre α, se 2α é um inteiro.
Temos que, se:
)]())[cos(()( ωαβωαβωω
−+−= jseneAeH jj
ou
)()()cos()()( ωαβωαβ ωωω
−+−= senejAeAeH jjj
Equivalentemente, por definição:
∑∑∑
∞
−∞=
∞
−∞=
∞
−∞=
−
−==
nnn
njj
nsennhjnnhenheH ωωωω
][cos][][)(
com h[n] real.
Assim:
)()()cos()()( ωαβωαβ ωωω
−+−= senejAeAeH jjj
e
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 92
∑∑∑
∞
−∞=
∞
−∞=
∞
−∞=
−
−==
nnn
njj
nsennhjnnhenheH ωωωω
][cos][][)(
Logo, podemos considerar:
∑
∞
−∞=
=−
n
j
nnheA ωωαβω
cos][)cos()(
e
∑
∞
−∞=
−=−
n
j
nsennhseneA ωωαβω
][)()(
Com isso:
∑
∑
∞
−∞=
∞
−∞=
−
=
−
−
=−
n
n
nnh
nsennh
sen
tg
ω
ω
ωαβ
ωαβ
ωαβ
cos][
][
)cos(
)(
)(
Fazendo uma multiplicação cruzada dos dois lados da igualdade acima, temos:
∑∑
∞
−∞=
∞
−∞=
−−=−
nn
nsennhnnhsen ωωαβωωαβ ][)cos(cos][).(
0][)cos(cos][).( =−+−⇒ ∑∑
∞
−∞=
∞
−∞= nn
nsennhnnhsen ωωαβωωαβ
0)cos(][.cos)(][ =−+−⇒ ∑∑
∞
−∞=
∞
−∞= nn
nsennhnsennh ωωαβωωαβ
0])cos(.cos)(][[ =−+−⇒ ∑
∞
−∞=n
nsennsennh ωωαβωωαβ
0)(][ =+−⇒ ∑
∞
−∞=n
nsennh ωωαβ
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 93
0])([][ =+−⇒ ∑
∞
−∞=n
nsennh βαω (Eq. 3)
ou
0})](cos[.cos)]([]{[ =−+−∑
∞
−∞=n
sennnsennh βαωβαω (Eq. 4)
para todo valor de ω. Assim, se β = 0 ou π, a Eq. 4 torna-se:
0)]([][ =−∑
∞
−∞=n
nsennh αω (Eq. 5)
Se β = π/2 ou 3π/2, a Eq. 4 torna-se:
0)](cos[][ =−∑
∞
−∞=n
nnh αω (Eq. 6)
Na Eq. 5, se h[n] = h[2α - n], com 2α inteiro:
0)]2([]2[0)]([][ =−−−⇒=− ∑∑
∞
−∞=
∞
−∞= nn
nsennhnsennh ααωααω
0)]([]2[ =−−⇒ ∑
∞
−∞=n
nsennh αωα (Eq. 7)
A Eq. 7 tem as mesmas soluções da Eq. 5, se 2α é um inteiro (ou seja, α é um
inteiro ou um inteiro mais 0.5). Assim, se β = 0 ou π, 2α = M inteiro, podemos ter
h[2α - n] = h[n]. De forma similar, na Eq. 6, se β = π/2 ou 3π/2, 2α = M inteiro,
podermos ter h[2α - n] = -h[n].
Com isso, temos dois conjuntos de condições para garantir um sistema de fase
linear generalizada:
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 94
i)
β = 0 ou π
2α = M inteiro
h[2α - n] = h[n]
ii)
β = π/2 ou 3π/2
2α = M inteiro
h[2α - n] = -h[n]
Sistemas Causais de Fase Linear Generalizada
Se o sistema for causal, a Eq.3 torna-se:
0])([][
0
=+−∑
∞
=n
nsennh βαω
para todo valor de ω.
Causalidade implica h[n] = 0, para n < 0 e n > M (para um sistema FIR, já que a
resposta ao impulso é finita), i.e., sistemas FIR causais têm fase linear
generalizada se eles têm 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 π:
][
)(
)(
)(
)(
)2(
)2(
]2[ nh
n
nsen
n
nsen
n
nsen
nh =
−
−
−=
−
−
=
−−
−−
=−
απ
απ
απ
απ
ααπ
ααπ
α
O segundo caso acontece para β = π/2 ou 3π/2.
Especificamente, se
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 95
h[n] = h[M – n], 0 ≤ n ≤ M,
e 0, caso contrário
então pode ser mostrado que
H(ejω
) = AP(ejω
)e-jωM/2
onde AP(ejω
) é uma função real, par e periódica em w. De forma similar, se
h[n] = -h[M – n], 0 ≤ n ≤ M,
e 0, caso contrário
segue que:
H(ejω
) = jAI(ejω
)e-jωM/2
= AI(ejω
)e-jωM/2 + jπ/2
onde AI(ejω
) é uma função real, ímpar e periódica em ω. 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 simétrica
h[n] = h[M – n], 0 ≤ n ≤ M
com M um inteiro par (observe que isso gera um número ímpar de amostras). O
atraso M/2 é um inteiro. A resposta em frequência é:
∑=
−
=
M
n
njj
enheH
0
][)( ωω
Considerando a condição de similaridade, essa resposta em frequência pode ser
expressa como:
∑=
−
=
2/
0
2/
)cos(][)(
M
k
Mjj
kkaeeH ωωω
onde a[0] = h[M/2],
a[k] = 2h[(M/2) – k], k = 1, 2, 3, ..., M/2
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 96
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 simétrica como
h[n] = h[M – n], 0 ≤ n ≤ M
mas com M um inteiro ímpar. Nesse caso, H(ejw
) pode ser expresso como:
}]
2
1
(cos[][{)(
2/)1(
1
2/
∑
+
=
−
−=
M
k
Mjj
kkbeeH ωωω
onde
b[k] = 2.h[(M + 1)/2 - k], k = 1, 2, ..., (M + 1)/2
Novamente H(ejw
) tem a forma de AP(ejw
)e-jwM/2
.
3. Sistemas FIR com fase linear do Tipo III
Se o sistema tem uma resposta ao impulso assimétrica:
h[n] = -h[M - n], 0 ≤ n ≤ M
com M um inteiro par, então H(ejw
) tem a forma:
∑=
−
=
2/
0
2/
)sin(][)(
M
k
Mjj
kkcjeeH ωωω
onde
c[k] = 2h[(M/2) - k], k = 1, 2, ..., M/2
Nesse caso, H(ejw
) tem a forma:
H(ejw
) = AI(ejw
)e-jwM/2 + jπ/2
4. Sistemas FIR com fase linear do Tipo IV
Se o sistema tem uma resposta ao impulso assimétrica:
h[n] = -h[M - n], 0 ≤ n ≤ M
com M um inteiro ímpar, então H(ejw
) tem a forma:
}]
2
1
(sin[][{)(
2/)1(
1
2/
∑
+
=
−
−=
M
k
Mjj
kkdjeeH ωωω
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 97
onde
d[k] = 2h[(M+1)/2 - k], k = 1, 2, ..., (M + 1)/2
e H(ejw
) tem a forma:
H(ejw
) = AI(ejw
)e-jwM/2 + jπ/2
Exemplos:
a) Tipo I, resposta simétrica, M par
h[n] = 1, 0 ≤ n ≤ 4, e 0, caso contrário
h[n] = h[M – n]
A resposta em frequência é:
)2/sin(
)2/5sin(
1
1
)( 2
54
0 w
w
e
e
e
eeH jw
jw
jw
n
jwnjw −
−
−
=
−
=
−
−
== ∑
Magnitude e fase:
b) Tipo II, resposta simétrica, M ímpar
h[n] = 1, 0 ≤ n ≤ 5, e 0, caso contrário
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 98
h[n] = h[M – n]
A resposta em frequência é:
)2/sin(
)3sin(
)( )2/5(
w
w
eeH jwjw −
=
Magnitude e fase:
c) Tipo III, resposta assimétrica, M par
Se h[n] = δ[n] - δ[n – 2]
Então H(ejw
) = 1 – e-2jw
= j[2.sin(w/2)]e-jw
Magnitude e fase:
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 99
d) Tipo IV, resposta assimétrica, M ímpar
Se h[n] = δ[n] - δ[n – 1]
Então H(ejw
) = 1 – e-jw
= j[2.sin(w/2)]e-jw/2
Magnitude e fase:

Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 100
Exemplo: O seguinte código implementa no MatLab um filtro FIR tipo I:
h = [3 4 5 6 5 4 3]/30; % Veja que vai de zero a seis
M = length(h);
N = (M-1)/2;
L = 512;
H = fft([h zeros(1,L-M)]);
k = 0:L-1;
W = exp(j*2*pi/L);
A = H.* W.^(N*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')

Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 101
Exemplo: O seguinte código implementa no MatLab um filtro FIR tipo II:
h = [3 5 6 7 7 6 5 3]/42;
M = length(h);
N = (M-1)/2;
L = 512;
H = fft([h zeros(1,L-M)]);
k = 0:L-1;
W = exp(j*2*pi/L);
A = H.* W.^(N*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')

Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 102
4.3 Filtros IIR
Os filtros FIR usam apenas cálculos feed forward. Se feedback é permitido, a
resposta de um filtro ao impulso não será necessariamente finita. Assim, filtros
com feedback são chamados de filtros com resposta ao Impulso Infinita (IIR –
Infinite Impulse Response). Por exemplo, o filtro abaixo:
cuja equação que descreve sua saída é 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 saídas,
considerando o filtro causal:
Entrada Saída
0 0
1 0,6
0 0,44
0 0,176
.... ....
Ou seja, mesmo quando a entrada se anula, o filtro continua apresentando uma
saída. Essa saída diminui, mas não torna-se zero. Claro que, na prática, a
resposta chega a zero em algum momento. Considere então o filtro a seguir:
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 103
Esse filtro tem saídas:
Entrada Saída
0 0
1 0,6
0 0,8
0 0,8
.... ....
Esse é um filtro IIR. A saída será sempre 0,8 mesmo a entrada permanecendo
0. Nesse próximo exemplo, a saída cresce mesmo com entrada zero.
Entrada Saída
0 0
1 0,6
0 0,86
0 0,946
.... ....
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 104
De uma maneira geral, os filtros IIR são expressos como:
∑ ∑= =
−=−−
N
k
M
k
kk knxbknyany
1 0
][][][
com a seguinte função de sistema:
∑
∑
=
−
=
−
−
= N
k
k
k
M
k
k
k
za
zb
zH
1
0
1
)(
Suas formas Direta I e Direta II são mostradas nas Figs. 4.14 e 4.15.
Fig. 4.14. Forma Direta I de um filtro IIR
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 105
Fig. 4.15. Forma Direta II de um filtro IIR.
Exemplo 1: Considere a função de sistema:
21
21
125.075.01
21
)( −−
−−
+−
++
=
zz
zz
zH
A forma direta I e II podem ser desenhadas como:
Forma direta I:
e
Forma direta II:
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 106

Exemplo 2: Conexão em cascata
Considere a função de sistema:
1
1
1
1
21
21
25.01
1
.
5.01
1
125.075.01
21
)( −
−
−
−
−−
−−
−
+
−
+
=
+−
++
=
z
z
z
z
zz
zz
zH
Como os pólos e zeros são reais, uma estrutura em cascata tem seções com
coeficientes reais. Duas estruturas em cascata equivalentes podem ser criadas
para essa função:
i)
ii)

Exemplo 3: Conexão em paralelo:
Considere a função de sistema (observe que é a mesma função anterior):
21
1
21
21
125.075.01
87
8
125.075.01
21
)( −−
−
−−
−−
+−
+−
+=
+−
++
=
zz
z
zz
zz
zH
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 107
A forma paralela para esse sistema com uma seção de segunda ordem é:
Como os pólos são reais, podemos obter ainda uma forma paralela alternativa
expandindo H(z) como:
1121
1
25.01
25
5.01
18
8
125.075.01
87
8)( −−−−
−
−
−
−
+=
+−
+−
+=
zzzz
z
zH
que gera o diagrama abaixo apenas com seções de primeira ordem:

Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 108
4.4 Exercícios
1. Um filtro IIR é definido por:
2
32
25.01
5.05.210
)( −
−−
−
−+
=
z
zz
zH
Desenhe sua estrutura na Forma Direta I ou na Forma Direta II.
2. Um filtro causal e invariante no tempo é definido por:
321
25.025.01)( −−−
+++= zzzzH
Desenhe sua estrutura na Forma Direta I ou na Forma Direta II. Esse filtro é FIR
ou IIR?
3. Um filtro IIR é definido por:
21
21
8
1
4
3
1
21
)(
−−
−−
+−
++
=
zz
zz
zH
Desenhe sua estrutura na Forma Direta I ou na Forma Direta II.
4. Modifique os códigos das páginas 86 e 87 para implementar exemplos de
filtros FIR dos tipos III e IV.

Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 109
4.5 Bibliografia Complementar
1. Vinay K. Ingle, John G. Proakis, Digital Signal Processing, Thomson
Learning, 2000.
2. Michael Weeks, Digital Signal Processing Using MatLab and Wavelets,
Infinity Science Press, 2007.
3. Alan V. Oppenheim, Ronald Schafer, Discrete Time Signal Processing,
Prentice Hall, 1989
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 110
5. Técnicas de projeto de filtros
Neste Capítulo, tratamos ao problema de projetar um filtro a partir de
especificações. Em processamento digital de sinais há dois importantes tipos de
sistemas: o primeiro tipo filtra os sinais no domínio do tempo e são chamados
filtros digitais. O segundo tipo provê a representação do sinal no domínio da
frequência e são chamados de analisadores de espectro.
Os filtros são projetados como seletores de frequência. Há considerações
diferentes se o projeto é voltado para criação de filtros FIR ou IIR.
O projeto de um filtro digital tem três passos:
• Especificações: determinada pela aplicação a qual o filtro está sendo
construído;
• Aproximações: o projeto do filtro especificamente. Aqui, define-se H(z).
• Implementações: a transcrição da função de transferência para hardware
ou software.
Em diversas aplicações como processamento de voz ou som, filtros digitais são
usados para implementar operações seletivas de frequência. Assim,
especificações são necessárias no domínio da frequência em termos de
magnitude desejada e resposta em fase do filtro. Em geral, como vimos no
Capítulo anterior, uma resposta em fase linear na banda de passagem é
necessária (Fig. 4.13). No caso de filtros FIR, é possível encontrar um filtro de
fase exatamente linear. Para filtros IIR, uma fase linear na banda de passagem
não é possível. Assim, consideraremos especificações em magnitude apenas.
As especificações em magnitude podem ser dadas de duas maneiras:
Especificações absolutas que provêem um conjunto de requisitos na magnitude
da função de transferência, |H(ejw
)|. Essas especificações são comuns para
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 111
filtros FIR. A segunda forma é chamada de especificações relativas que provê os
requisitos em decibéis (dB) e é dada por:
escala dB = 0
|)(|
|)(|
log20
max
10 ≥− ω
ω
j
j
eH
eH
Essa é a forma mais comum na prática e é usada tanto para filtros FIR quanto
IIR. Vamos considerar o projeto de um filtro passa-baixa como exemplo.
Uma especificação absoluta de um filtro passa-baixa é mostrada na Fig. 5.1 na
qual:
• A banda [0, wp] é chamada de banda de passagem, e δ1 é a tolerância a
qual são permitidas ondulações (ripples) na resposta ideal da banda de
passagem;
• A banda [ws, π] é chamada de banda de corte, e δ2 é a tolerância a qual
são permitidas ondulações;
• A banda [ws, wp] é chamada de banda de transição, e não há qualquer
restrição na resposta em magnitude nessa banda.
Fig. 5.1. Especificação absoluta de um filtro passa-baixa real: banda de
passagem, banda de transição e banda de corte.
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 112
A especificação relativa de um filtro passa-baixa pode ser vista na Fig. 5.2 na
qual:
• Rp é a ondulação na banda de passagem em dB, e
• As é a atenuação na banda de corte em dB.
Fig. 5.2. Especificação relativa de um filtro passa-baixa real.
Os parâmetros das duas especificações são relacionados. Como |H(ejw
)|max na
especificação absoluta é igual a (1 + δ1), temos:
0
1
1
log20
1
1
10 >
+
−
−=
δ
δ
PR e
0
1
log20
1
2
10 >
+
−=
δ
δ
SA
Exemplo:
As especificações de um FPB definem as ondulações da banda de passagem
em 0,25 dB e a atenuação 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

Especificações semelhantes podem ser dadas para outros tipos de filtros
seletores de frequência (como passa-alta ou passa-faixa).
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 113
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 função de
transferência H(z) ou sua equação de diferenças) que tem uma banda de
passagem [0, wp] com tolerância δ1 (ou RP in dB) e uma banda de corte [wS, π]
com tolerância δ2 (ou AS in dB).
A seguir, vamos projetar filtros digitais FIR. Esses filtros têm diversas vantagens
de projeto e implementação:
• A resposta em fase pode ser exatamente linear;
• São relativamente simples de projetar já que eles não têm problemas de
estabilidade;
• São eficientes para implementar;
• A Transformada Discreta de Fourier pode ser usada em sua
implementação.
5.1 Projeto de Filtros FIR
Tanto a aproximação quanto a implementação podem ser realizadas de diversas
maneiras diferentes, com o resultado de que não existe uma solução única para
o problema de projeto de filtros com um conjunto prescrito de especificações.
Todavia, podemos mencionar três diferentes abordagens para o projeto de filtros
analógicos e digitais:
• Abordagem analógica, a qual se aplica à classe de filtros analógicos.
• Abordagem de analógico para digital, em que a motivação é projetar um
filtro digital lançando mão de um projeto de filtro analógico.
• Abordagem digital direta a qual se aplica à classe de filtros digitais.
Para o projeto de filtros FIR, as técnicas são divididas nas seguintes categorias:
• Projeto usando janelas
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 114
• Método da amostragem em freqüência
• Projeto equirriple ótimo
• Projeto de mínimos quadrados
5.1.1 Projeto usando janelas
A ideia básica de um projeto por janelas é selecionar um filtro seletor de
frequências ideal apropriado (que sempre é não-causal e de resposta ao impulso
infinita) e então truncar sua resposta ao impulso em uma janela para obter um
filtro FIR causal e de fase linear. Assim, o foco está na escolha de uma função
de janelamento e um filtro ideal apropriados. Seja Hd(ejw
) um filtro seletivo de
frequência ideal que tem magnitude unitária e características de fase linear
sobre sua banda de passagem, e resposta zero na banda de corte. Um filtro
passa-baixa (FPB) ideal de largura de banda wc < π é dado por:



≤<
≤
=
−
πωω
ωωαω
ω
||,0
||,.1
)(
c
c
j
j
d
e
eH
onde wc é chamado de frequência de corte (cut-off) e α é chamado de atraso de
amostra (sample delay). A resposta ao impulso desse filtro é de duração infinita
e é dada por:
∫−
−
=ℑ=
π
π
ωωω
ω
π
deeHeHnh njj
d
j
dd )(
2
1
)]([][ 1
)(
)]([
.1
2
1
][
απ
αω
ω
π
ω
ω
ωαω
−
−
== ∫−
−
n
nsen
deenh cnjj
d
C
C
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:
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 115


 −≤≤
=
senão
Mnnh
nh d
,0
10],[
][
e
α = (M – 1)/2.
Essa operação é 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 função simétrica 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:


 −≤≤
=
senão
Mn
nw
,0
10,1
][
é uma janela retangular.
No domínio da frequência, a resposta H(ejw
) do filtro FIR causal é dada pela
convolução de Hd(ejw
) e a resposta da janela W(ejw
):
∫−
−
==
π
π
λλ
λ
π
deHeWeWeHeH wj
d
jjwjw
d
jw
)()(
2
1
)(*)()( )(
Podemos ver essa convolução na Fig. 5.3 para uma janela comum.
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 116
Fig. 5.3. Operação de janelamento no domínio da frequência.
Observações:
1. Como a janela w[n] tem comprimento finito igual a M, sua resposta em
frequência tem uma região de pico central (lóbulo principal) cuja largura é
proporcional a 1/M e tem lóbulos laterais com pesos menores.
2. A convolução gera uma versão da resposta ideal Hd(ejw
), mas com algumas
distorções (ondulações).
3. A largura da banda de transição é proporcional a 1/M.
4. Os lóbulos laterais produzem ondulações que têm forma similar tanto na
banda de passagem quanto na de corte.
Projeto usando janelas: Para uma dada especificação de filtro, escolha um
filtro de comprimento M e uma função janela w[n] para a mais estreita largura do
lóbulo principal e a menor atenuação nos lóbulos laterais possível.
Da observação 4 acima, podemos notar que a tolerância δ1 da banda de
passagem e a tolerância δ2 da banda de corte não podem ser especificadas de
forma independente. Geralmente, toma-se δ1 = δ2.
Vamos descrever alguns tipos comuns de funções de janelamento.
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 117
1) Janela Retangular
Essa é a janela mais simples, mas que provê o pior desempenho em termos de
atenuação da banda de corte. Ela é definida como:


 ≤≤
=
senão
Mn
nw
,0
0,1
][
sendo sua resposta em frequência:
)2/(
]2/)1([
1
1
)( 2/
0
)1(
wsen
Mwsen
e
e
e
eeW jwM
M
n
jw
Mjw
jwnjw +
=
−
−
== −
=
−
+−
−
∑
A magnitude da função 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 lóbulo principal diminui.
Fig. 5.4. Magnitude da transformada de Fourier de uma janela retangular (M =
7).
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 118
Pode ser provado que a largura do lóbulo 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 lóbulo central é o dobro desse valor (já que envolve os
valores negativos e positivos):
2w = 4π/(M + 1)
Observa-se também que a magnitude do primeiro lóbulo lateral é
aproximadamente em w = 3π/(M + 1) e é dada por:
ππ
π
3
)1(2
)1(2
3
)2/3(
)2/(
)]2/)1([( +
≅






+
=
+ M
M
sen
sen
wsen
Mwsen
À medida que M cresce, a largura de cada lóbulo lateral diminui, mas a área
sobre cada um permanece constante. Assim, as amplitudes relativas dos picos
laterais vão permanecer constantes e a atenuação da banda de passagem
permanece em cerca de 21 dB. Isso significa que as ondulações vão sofrer um
pico perto das bordas das bandas. Isso é conhecido como fenômeno de Gibbs
(Fig. 5.5). Esse fenômeno ocorre por causa da transição brusca de 0 para 1 (e
de 1 para 0) da janela retangular.
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 119
Fig. 5.5. Fenômeno de Gibbs: Pico das ondulações nas fronteiras entre as
bandas.
2) Janela Triangular ou de Bartlett
Bartlett sugeriu uma transição mais suave para evitar o fenômeno de Gibbs. Isso
seria conseguido através de uma janela triangular da forma:








≤<−
≤≤
=
senão
MnM
M
n
Mn
M
n
nw
,0
2/,
2
2
2/0,
2
][
Essa janela e sua resposta em frequência podem ser vistas na Fig. 5.6
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 120
Fig. 5.6. Janela triangular.
3) Janela de Hanning (homenagem a Julius von Hann, meteorologista
austríaco)


 ≤≤−
=
senão
MnMn
nw
,0
0),/2cos(5,05,0
][
π
Fig. 5.7. Janela de Hanning
4) Janela de Hamming (Richard Hamming, matemático americano)


 ≤≤−
=
senão
MnMn
nw
,0
0),/2cos(46,054,0
][
π
Tem uma quantidade menor de descontinuidades em relação à janela de
Hanning.
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 121
Fig. 5.8. Janela de Hamming.
5) Janela de Blackman


 ≤≤+−
=
senão
MnMnMn
nw
,0
0),/4cos(08,0)/2cos(5,042,0
][
ππ
Também é similar às duas anteriores, mas tem um segundo harmônico o que faz
com que ela se aproxime de zero com mais suavidade.
Fig. 5.8. Janela de Blackman.
Tanto a janela de Bartlett, quanto Hamming, Hanning e Blackman têm lóbulos
laterais menores do que os da janela retangular. No entanto, para o mesmo
valor de M, a largura do lóbulo principal também é mais larga para essas janelas
se comparadas à janela retangular. Consequentemente, essas janelas
conseguem uma convolução no domínio da frequência mais suave e, como
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 122
resultado, a região de transição na resposta do filtro FIR é mais larga. Para
reduzir a largura da região de transição podemos aumentar o comprimento da
janela, o que resulta em filtros mais largos. A tabela a seguir resume algumas
características no domínio da frequência dessas janelas.
Tabela 5.1. Algumas características do domínio da frequência de algumas
funções de janelamento
Tipo de
janela
Largura de transição
aproximada do lóbulo
principal
Largura de
transição exata
Pico do
lóbulo
lateral (dB)
Retangular 4π/M 1,8π/M -21
Bartlett 8π/M 6,1π/M -25
Hanning 8π/M 6,2π/M -44
Hamming 8π/M 6,6π/M -53
Blackman 12π/M 11π/M -74
6) Janela de Kaiser (James F. Kaiser)
Esta é a melhor janela. Ela e considerada ótima porque provê um lóbulo
principal largo para a dada atenuação da banda de corte, o que implica a mais
brusca banda de transição. A função foi definida por Kaiser e é dada por:







≤≤














−−
=
senão
Mn
I
M
n
I
nw
,0
0,
][
2
11
][
0
2
0
β
β
I0(.) é a função de Bessel modificada de ordem zero:
∑
∞
=






+=
1
2
0
!
)2/(
1)(
n
n
n
x
xI
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 123
Fig. 5.8. Variadas formas da Janela de Kaiser.
Na expressão de w[n], existem dois parâmetros:
1. O comprimento M
2. O parâmetro β
Variando β e M, é possível ajustar a amplitude dos lóbulos laterais. Kaiser
encontrou duas fórmulas que permitem achar M e β de modo a atender às
especificações do filtro. Assim, dado que δ1 é fixo (especificado), a frequência de
corte wP da banda de passagem do filtro passa-baixa é a maior frequência tal
que:
|H(ejw
)| ≥ 1 - δ1
A frequência da banda de corte tem tolerância δ2, satisfazendo:
|H(ejw
)| ≤ δ2
A largura da banda de transição é:
∆w = wS - wP
Dado:
A = -20log10 δ,
considerando δ1 = δ2. Kaiser mostrou que:
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 124





<
≤≤−+−
>−
=
21,0
5021,)21(07886,0)21(5842,0
50,)7,8(112,0
4,0
A
AAA
AA
β (Eq. 5.1)
Além disso, dados ∆w e A, M é aproximadamente:
w
A
M
∆
−
=
285,2
8
O procedimento para projetar um filtro passa-baixa digital FIR usando a janela
de Kaiser consiste nos seguintes passos:
i) Estabelecer as especificações wP, wS e δ.
ii) Estabelecer a frequência 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 fórmulas de Kaiser para
encontrar os valores de M e β.
iv) Encontra a resposta ao impulso do filtro através de h[n]=hd[n]w[n], onde w[n]
é a janela de Kaiser e hd[n] = ℑ-1
[Hd(ejw
)].
Devido à complexidade de cálculos com funções de Bessel, o projeto dessas
janelas não é fácil. A equação de w[n] definida por Kaiser tem valores
encontrados empiricamente e são definidos sem prova.
Exemplo: Projetar, usando janelas de Kaiser, um filtro passa-baixa com as
seguintes especificações: wP = 0,4π, wS = 0,6π e δ = 0,001.
wc = (wS + wP)/2 = 0,5π
∆w = wS - wP = 0,2π
A = -20log10 δ = 60 dB
Como A > 50, pela Eq. 5.1:
β = 0,1102(A – 8,7) ≅ 5,633
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 125
M = (A - 8)/(2,285∆w) ≅ 36,219 ⇒ M = 37 (M inteiro)
A resposta ao impulso é:
][
)2/(
)]2/([
][][][ nw
Mn
Mnwsen
nwnhnh c
d
−
−
==
π
com w[n] dado pela definição da janela de Kaiser.

Implementações no MatLab
O MatLab tem diversas funções 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 funções base
importantes para os exemplos a seguir. Uma implementa uma resposta ao
impulso ideal de um filtro passa-baixa hd[n]. A outra função implementa a
plotagem no domínio da frequência, apresentando também a resposta em
magnitude absoluta e em escala dB (é uma variação da função freqz do
MatLab).
Função 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);
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 126
Função 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 especificações wP = 0,2π,
RP = 0,25 dB, wS = 0,3π e AS = 50 dB.
Tanto a janela de Hamming quanto a de Blackman provêem atenuação de mais
de 50 dB. Vamos escolher a janela de Hamming que provê a menor banda de
transição e assim tem a menor ordem.
wp = 0.2*pi; ws = 0.3*pi;
tr_width = ws - wp;
M = ceil(6.6*pi/tr_width) + 1
n = [0:M-1];
wc = (ws + wp)/2;
hd = ideal_lp (wc, M);
w_ham = (hamming(M))';
h = hd.*w_ham;
[db, mag, pha, w] = freqz_m(h, [1]);
delta_w = 2*pi/1000;
Rp = -(min(db(1:wp/delta_w+1)))
As = -round(max(db(ws/delta_w+1:501)))
subplot(1, 1, 1)
subplot (2, 2, 1); stem(n, hd); title('Resposta ao Impulso Ideal');
axis([0 M-1 -0.1 0.3]);xlabel('n');ylabel('hd[n]');
subplot (2, 2, 2); stem(n, w_ham); title('Janela de Hamming');
axis([0 M-1 0 1.1]);xlabel('n');ylabel('w[n]');
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 127
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

Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 128
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
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 129

Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 130
Exemplo 3:
Vamos projetar o filtro com as seguintes especificações (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 transição: ∆w1 = w1P – w1S, ∆w2 = w2S – w2P. Essas
duas larguras de banda devem ser a mesma no projeto da janela; i.e., não há
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 também 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 a seguir:
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 131
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)))
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]');
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 132
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 = 75
alpha = 37
Rp = 0,0030
As = 75

Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 133
Exemplo 4:
A resposta em frequência de um filtro passa-faixa ideal é dada por:





≤<
≤≤
<≤
=
ππ
ππ
π
||3/2,1
3/2||3/,0
3/||0,1
)(
w
w
w
eH jw
e
Usando uma janela de Kaiser, projete um filtro passa-faixa de comprimento 45
com atenuação na banda de corte de 60 dB.
Observe que a largura da banda de transição não foi dada. Ela será encontrada
a partir do comprimento M = 45 e do parâmetro β da janela de Kaiser. Das
equações de projeto da janela de Kaiser, podemos determinar β a partir de As:
)7,8(1102,0 −= SAβ
Vamos agora implementar a janela de Kaiser e observar a atenuação 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
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 134
axis([0 1 -80 10]);xlabel('frequencia em pi unidades');ylabel('Decibeis');
beta = 5,6533
Observe que, com esse valor, a mínima atenuação da banda de corte é menor
que 60 dB (observe que há lóbulos na banda de corte com pico acima de 60 na
escala negativa - ou seja, é menor que 60 em módulo – resposta em magnitude
na figura acima, destacada em vermelho). Assim, precisamos aumentar BETA
para aumentar a atenuação para 60 dB. Vamos colocar um acréscimo no valor
calculado de BETA para conseguir uma atenuação maior. Observamos que,
assim, a atenuação 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))';
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 135
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

Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 136
Exemplo 5:
A resposta em frequência de um filtro diferenciador digital ideal é dada por:



<<−−
≤<
=
0,
0,
)(
wjw
wjw
eH jw
d
π
π
Usando uma janela de Hamming de comprimento 21, projete um diferenciador
FIR. Plote as respostas no domínio do tempo e da frequência.
A resposta ao impulso de um diferenciador ideal com fase linear é dada por:
∫−
−−
=ℑ=
π
π
αα
π
dweeeHeeHnh jwnwjjw
d
wjjw
dd )(
2
1
])([][
∫∫
−
−
−
+−=
π
α
π
α
ππ 0
0
)(
2
1
)(
2
1
dweejwdweejw jwnwjjwnwj




=
≠
−
−
=
α
α
α
απ
n
n
n
n
,0
,
)(
)(cos
A resposta ao impulso acima pode ser implementada no MatLab através da
janela de Hamming para projetar o diferenciador requisitado. Note que se M é
um número par, então α = (M - 1)/2 não é um inteiro e hd[n] será zero para todo
n. Assim, M deve ser um número í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 código
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)];
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 137
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 questão 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');
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 138
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');

Exemplo 6:
Projete um filtro transformador digital de Hilbert de comprimento 25 usando uma
janela de Hanning. A resposta em frequência ideal de um transformador de
Hilbert de fase linear é dada por:



<<−
<<−
= −
−
0,
0,
)(
wje
wje
eH wj
wj
jw
d
π
π
α
α
A resposta ao impulso ideal é dada por:
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 139




=
≠
−
−
=
α
α
α
απ
π
n
n
n
nsen
nhd
,0
,
)(
]2/)([2
][
2
que pode ser implementado no MatLab. Como M = 25, o projeto do filtro é do
tipo III:
M = 25; alpha = (M - 1)/2; n = 0:M-1;
hd = (2/pi)*((sin((pi/2)*(n - alpha)).^2)./(n - alpha));
hd (alpha + 1) = 0;
w_han = (hanning(M))';
h = hd.*w_han;
[Hr, w, P, L] = Hr_Type(h, 3);
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');
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 140

5.1.2 Técnicas de Projeto por Amostragem em Frequência
Nessa técnica, usamos o fato de que a função de sistema H(z) pode ser obtida a
partir de amostras H(k) da resposta em frequência H(ejw
). Seja h[n] a resposta
ao impulso de um filtro FIR com M amostras, H[k] é sua transformada discreta
de Fourier com M-pontos (Capítulo 6) e H(z) sua função de sistema. Então
temos:
∑∑
−
=
−
−−
=
−
−
−
==
1
0
/21
1
0 1
][1
][)(
M
k
Mkj
MM
n
n
ez
kH
M
z
znhzH π
e
∑
−
=
−
−
−
−
=
1
0
/2
1
][1
)(
M
k
Mkjjw
jwM
jw
ee
kH
M
e
eH π (Eq. 5.2)
com
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 141



−=−
=
==
1,...,1,][*
0,]0[
)(][ /2
MkkMH
kH
eHkH Mkj π
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. Então H[k] é dado por:
][2
][ kHj
r e
M
k
HkH ∠






=
π
onde




−=


 −
=
=





1,...,1,
)(2
0,]0[
2
Mk
M
kM
H
kH
M
k
H
r
r
r π
π
e






−+


 −
=−










 −
+



 −
=










 −
−
=∠
1,...,1
2
1
,)(
2
2
1
2
1
,...,0,
2
2
1
][
M
M
kkM
M
M
M
k
M
kM
kH
π
π
(para tipos 1 e 2)
ou






−+


 −
=−










 −
+





±−



 −
=










 −
−





±
=∠
1,...,1
2
1
,)(
2
2
1
2
2
1
,...,0,
2
2
1
2
][
M
M
kkM
M
M
M
k
M
kM
kH
ππ
ππ
(para tipos 3 e 4)
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 142
Dado um filtro passa-baixa ideal Hd(ejw
), escolha o filtro de comprimento M e
então amostre Hd(ejw
) em M igualmente espaçadas freqüências entre 0 e 2π. A
resposta H(ejw
) é a interpolação 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 técnica de amostragem em frequência.
Da Fig. 5.9, podemos observar que:
1) O erro de aproximação – a diferença entre a resposta ideal e a atual – é zero
nas freqüências amostradas.
2) O erro de aproximação nas outras freqüências depende da forma da resposta
ideal, ou seja, quanto mais “sharp” a resposta ideal, maior o erro de
aproximação.
3) O erro é maior perto das fronteiras das bandas e menor dentro das bandas.
5.1.3 Projeto Equirriple Ótimo
Os métodos de janelamento e de amostragem na frequência têm alguns
problemas:
1) Não podemos especificar wP e wS precisamente nos projetos.
2) Não podemos especificar δ1 e δ2 simultaneamente. Ou consideramos δ1 = δ2
(como no janelamento) ou otimizamos δ2 (como na amostragem).
3) O erro de aproximação não é distribuído uniformemente nas bandas. Ele é
mais alto perto das fronteiras das bandas e menor quanto mais distante delas.
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 143
O método equirriple ótimo evita esses problemas. No entanto ele é bastante
difícil de utilizar e requer computador na sua implementação. O objetivo é
minimizar o erro máximo de aproximação (minimax do erro). Tais filtros são
chamados de equirriple porque o erro é distribuído de maneira uniforme na
banda de passagem e de corte o que resulta em um filtro de menor ordem.
No MatLab, um projeto por equirriple é feito usando a função remez que
implementa o algoritmo Parks-McClellan.
Exemplo:
Vamos projetar um filtro passa-baixa usando o algoritmo de Parks-McClellan. Os
parâmetros de projeto são:
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);
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)
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 144
M = M + 1;
h = remez(M - 1, f, m, weights);
[db, mag, pha, w] = freqz_m(h, [1]);
delta_w = 2*pi/1000;
wsi = ws/delta_w + 1;
Asd = -max(db(wsi:501))
end
subplot (2, 1, 1); stem(h); title('Resposta ao Impulso Atual');
axis([0 M-1 -0.1 0.3]);xlabel('n');ylabel('h[n]');
subplot (2, 1, 2); plot(w/pi, db); title('Magnitude em dB');grid
axis([0 1 -100 10]);xlabel('frequencia em pi unidades');ylabel('Decibeis');
M = 43
Asd = 47.8404
M = 44
Asd = 48.2131
M = 45
Asd = 48.8689
M = 46
Asd = 49.8241
M = 47
Asd = 51.0857

Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 145
5.2 Projeto de Filtros IIR
Filtros IIR têm resposta infinita ao impulso, assim eles podem ser igualados a
filtros analógicos, os quais, em geral, têm resposta ao impulso infinitamente
longa. Assim, a técnica básica de projeto de filtros IIR transforma filtros
analógicos bem conhecidos em filtros digitais. A vantagem dessa técnica está no
fato que tanto tabelas de filtros analógicos quanto as conversões estão
vastamente disponíveis na literatura. Essa técnica é chamada de transformação
de filtro analógica-digital (A/D). No entanto, as tabelas de filtros só estão
disponíveis para filtros passa-baixa. Para gerar outros filtros seletores de
frequência, temos que aplicar transformações a filtros passa-baixa. Essas
transformações também estão disponíveis na literatura. Existem duas formas de
projeto de filtros IIR:
1)
2)
Para projetar filtros IIR, vamos:
1) Projetar FPB analógicos;
2) Aplicar transformações no filtro para obter FPB digitais;
3) Aplicar transformações de frequência nas bandas para obter outros filtros
digitais a partir do FPB.
O principal problema dessas técnicas é que não temos controle sobre a fase do
filtro. Assim, os projetos de filtros IIR serão apenas em magnitude. Técnica mais
avançadas usam otimização e não serão tratadas.
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 146
5.2.1 Escala Relativa
Seja Ha(j ) a resposta em frequência do filtro analógico. Então as
especificações do FPB quanto à resposta quadrática de magnitude são dadas
por:
1|)(|
1
1 2
2
≤Ω≤
+
jHa
ε , | | ≤ P
2
2 1
|)(|0
A
jHa ≤Ω≤ , S ≤ | |
onde ε é o parâmetro de ondulação da banda de passagem, P é a frequência
de corte da banda de passagem em rad/seg, A é o parâmetro de atenuação da
banda de corte e S é a frequência da banda de corte (Fig. 5.10).
Fig. 5.10. Especificações de um filtro passa-baixa analógico.
Da Fig. 5.10, temos:
2
2
1
1
|)(|
ε+
=ΩjHa em = P
2
2 1
|)(|
A
jHa =Ω em = S
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 147
Os parâmetros ε e A estão relacionados aos parâmetros RP e AS na escala dB
como:
110
1
1
log10 10/
210 −=⇒
+
−= PR
PR ε
ε (Eq. 5.3)
e
20/
210 10
1
log10 SA
S A
A
A =⇒−= (Eq. 5.4)
As tolerâncias δ1 e δ2 da escala absoluta são relacionados a ε e A por:
1
1
2
1
1
1
2
1
1
1
1
δ
δ
ε
εδ
δ
−
=⇒
+
=
+
−
e
2
1
1
2 11
1 δ
δ
δ
δ +
=⇒=
+
A
A
Especificações de filtros analógicos não têm informação de fase. Para calcular a
função de sistema Ha(s) no domínio-s considere:
jsaa sHjH /
)()( =Ω
=Ω
então temos
Ω=
−=Ω−Ω=ΩΩ=Ω jsaaaaaaa sHsHjHjHjHjHjH )()()().()(*).(|)(| 2
ou
jsaaa jHsHsH
/
2
|)(|)().(
=Ω
Ω=−
Observação:
O domínio-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
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 148
mapeia um sinal ou função em termos de vibrações (senóides), a transformada
de Laplace mapeia uma função em relação aos seus momentos:
∫
∞
∞−
−
= dtetftfL st
)()}({
onde s = σ + jω, com σ e ω números 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:
∑
∞
=
−
=
0
][)(
n
nsT
enxsX , onde T é o período de amostragem.
Essa relação 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 são mapeadas em ângulos no plano-z, enquanto
linhas horizontais são mapeadas em raios.
Fig. 5.11. Mapeamento do plano-s no plano-z.

Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 149
5.2.2 Características de Protótipos Analógicos
O projeto de filtros IIR reside na existência de filtros analógicos para obter filtros
digitais. Esses filtros analógicos são chamados de filtros protótipos. Três
protótipos são largamente usados na prática: Butterworth, Chebyshev (tipo I e II)
e Elíptico. Vamos ver as características das versões passa-baixa desses filtros.
1) Filtro Passa-Baixa de Butterworth
A principal característica desse filtro é que a resposta em magnitude é plana
(flat) na banda de passagem e de corte. A resposta quadrática de magnitude de
um FPB de N-ésima ordem é dada por:
N
c
a jH 2
2
1
1
|)(|






Ω
Ω
+
=Ω
onde N é a ordem do filtro e c é a frequência de corte. A plotagem de Ha(j ) é
mostrada na Fig. 5.12.
Fig. 5.12. Característica de um filtro Butterworth com variação de parâmetros.
Desse gráfico, podemos observar:
i) Em = 0, |Ha(j0)|2
= 1, para todo N.
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 150
ii) Em = c, |Ha(j c)|2
= 0,5, para todo N, o que implica 3 dB de atenuação em
c.
iii) |Ha(j )|2
é uma função monotonicamente decrescente em .
iv) |Ha(j )|2
se aproxima de um FPB ideal em N → ∞.
V) |Ha(j )|2
é maximamente plano em = 0.
Sua função de sistema Ha(s) é:
N
c
N
N
N
c
jsaaa
js
j
j
s
jHsHsH 22
2
2/
2
)(
)(
1
1
|)(|)()(
Ω+
Ω
=






Ω
+
=Ω=−
=Ω
Para projetar o filtro, precisamos encontrar as raízes e pólos da função do
sistema. Os pólos são dados por pk = ejπ(2k + 1)/2N
.ejπ/2
c, k = 0, 1, 2,..., 2N-1.
Assim, os pólos estão em um círculo de raio c nos ângulos θk = (π/N)k + (π/2N)
+ π/2, k = 0, ..., 2N – 1. E os zeros são sk = (-1)1/2N
.j c = cejπ(2k+N+1)/2N
, k = 0, 1,
..., 2N – 1.
O FPB analógico é especificado pelos parâmetros P, S, RP e AS. Assim, a
essência do projeto no caso do filtro de Butterworth é obter a ordem N e a
frequência de corte dada c. Assim, dadas essas especificações, queremos:
i) em = P, Pa RjH =Ω− 2
10 |)(|log10 ou
PN
cP
R=





ΩΩ+
− 210
)/(1
1
log10
e
ii) em = S, Sa AjH =Ω− 2
10 |)(|log10 ou
SN
cS
A=





ΩΩ+
− 210
)/(1
1
log10
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 151
Resolvendo as equações para N = c, temos:
)/(log2
)]110/()110[(log
10
10/10/
10
SP
AR SP
N
ΩΩ
−−
=
Em geral, N não é um inteiro e, por isso, deve ser truncado para o menor inteiro
maior que o valor calculado: N = N. Obviamente, isso irá gerar um filtro com
ordem maior do que o necessário. Para satisfazer exatamente as especificações
do projeto em P:
N R
P
C
P2 10/
110 −
Ω
=Ω
ou para satisfazer exatamente as especificações em S:
N A
S
C
S2 10/
110 −
Ω
=Ω
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
Solução:
  379,2
)3,0/2,0(log2
)]110/()110[(log
10
6,17,0
10
==




 −−
=
ππ
N
Para satisfazer exatamente as especificações em P temos:
4985,0
110
2,0
3.2 7,0
=
−
=Ω
π
C
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 152
Para satisfazer exatamente as especificações em S temos:
5122,0
110
3,0
3.2 6,1
=
−
=Ω
π
C
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:
6
2
5,0
1
1
|)(|





 Ω
+
=ΩjHa
Como = s/j, temos:
6666
2
641
1
21
1
5,0
1
1
|)(|
ss
j
S
sHa
−
=
−
=






+
=
cujos pólos 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
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 153
Para termos um filtro causal e estável, usamos os pólos do semi-plano
esquerdo:
)433,025,0)(433,025,0)(5,0(
1
)(
jsjss
sHa
−++++
=
)25,05,0)(5,0(
1
)( 2
+++
=
sss
sHa
Vamos ajustar o numerador para que o ganho na frequência zero seja unitário.
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:
)25,05,0)(5,0(
125,0
)25,05,0)(5,0(
8/1
)( 22
+++
=
+++
=
ssssss
sHa
Para transformar o filtro em digital, podemos usar o método de transformação
bilinear. Nele, consideramos:
2/1
2/1
1
12
1
1
sT
sT
z
z
z
T
s
−
+
=⇒
+
−
= −
−
(Eq. 5.5)
onde T é um parâmetro. Historicamente, o valor de T foi incluído porque a
equação de diferenças correspondendo a H(z) pode ser obtida aplicando a regra
da integração trapezoidal na equação de diferenças de H(s), com T
representando o passo de integração. Dada a invariância ao impulso, o
parâmetro T não tem conseqüência no projeto já que, no mapeamento de
analógico 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
1
1
1
21
1
)()(
1
1
2
z
z
saa sHzH
z
z
s
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 154








+





−
−
+





−
−






+
−
−
=
−
−
−
−
−
−
25,0
1
1
25,0
1
1
25,0
1
1
2
125,0
)(
1
12
1
1
1
1
z
z
z
z
z
z
zHa

A transformação bilinear pode ser ligada à fórmula trapezoidal para integração
numérica. Por exemplo, considere um filtro linear analógico com função de
transferência:
as
b
sH
+
=)( (Eq. 5.6)
Esse sistema pode ser caracterizado também pela equação de diferenças:
)(.)(.
)(
txbtya
dt
tdy
=+
Ao invés de substituir uma diferença finita pela derivada, suponha que
integramos a derivada e aproximamos a integral pela fórmula trapezoidal. Assim:
∫ +=
t
t
tydyty
0
)()(')( 0ττ
onde y’(t) denota a derivada de y(t). A aproximação da integral anterior pela
fórmula trapezoidal em t = nT e t0 = nT – T leva a:
[ ] )()(')('
2
)( TnTyTnTynTy
T
nty −+−+= (Eq. 5.7)
Agora, essa equação diferencial calculada em t = nT leva a:
)(.)(.)(' nTxbnTyanTy +−= (Eq. 5.8)
Usamos a Eq. 5.8 na Eq. 5.7 e obtemos a equação de diferenças para o sistema
discreto no tempo equivalente. Com y(n)≡ y(nT) e x(n)≡ x(nT), obtemos o
resultado:
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 155
( ))1()(
2
)1(
2
1)(
2
1 −+=−





−−





+ nxnx
bT
ny
aT
ny
aT
cuja transformada Z é
( ) )(1
2
)(
2
1)(
2
1 11
zXz
bT
zYz
aT
zY
aT −−
+=





−−





+
Consequentemente, a função de transferência do filtro digital equivalente é:
1
1
)2/1(2/1
)1)(2/(
)(
)(
)( −
−
−−+
+
==
zaTaT
zbT
zX
zY
zH
ou, equivalentemente:
a
z
z
T
b
zH
+





+
−
=
−
−
1
1
1
12
)(
(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:






+
−
= −
−
1
1
1
12
z
z
T
s
que é a chamada transformação 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 têm resposta monotônica 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 especificações. Veja o
exemplo na Fig. 5.13 gerado usando o fdatool do MatLab. Nele, temos dois
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 156
filtros (um de Butterworth e um de Chebysshev tipo I) gerados sobre as mesmas
condições, buscando sempre a menor ordem possível. O filtro de Butterworth
tem ordem 31, enquanto o de Chebyshev I tem ordem 16.
A resposta quadrática de magnitude de um filtro Chebyshev tipo I é dada por:






Ω
Ω
+
=Ω
c
N
a
T
jH
22
2
1
1
|)(|
ε
onde N é a ordem do filtro, ε é o fator de ondulação da banda de passagem (Eq.
5.3) e TN(x) é o polinômio de Chebyshev dado por:



∞<<
≤≤
= −
−
xx
xxN
xTN
1,))(cosh(cosh
10,))(cos.cos(
)( 1
1
Podemos considerar x = ( / c).
Para um filtro de Chebyshev do tipo II:
1
22
2
1
1
|)(| −












Ω
Ω
+
=Ω
c
N
a
T
jH
ε
Ou seja, x = ( / c) é substituído por seu inverso e ε2
TN
2
(x) também.
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 157
Fig. 5.13. Dois filtros com as mesmas especificações gerados como Butterworth
e Chebyshev tipo I: o de Chebyshev tem menor ordem.
3) Filtro Passa-Baixa Elíptico
Esses filtros apresentam ondulações na banda de passagem e de corte. São
similares em magnitude a filtros FIR equirriple. São filtros ótimos no sentido que
eles alcançam a menor ordem N para as dadas especificações. Esses filtros são
muito difíceis de projetar e analisar. Não é possível projetá-los com ferramentas
simples, sendo necessário uso de tabelas e computadores.
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 158
A resposta quadrática de magnitude é dada por:






Ω
Ω
+
=Ω
c
N
a
U
jH
22
2
1
1
|)(|
ε
onde N é a ordem do filtro, ε é o fator de ondulação da banda de passagem (Eq.
5.3) e UN(x) é a função elíptica Jacobiana de ordem N.
Apesar da análise complexa, o cálculo da ordem do filtro é simples e dado por:
)1()(
)1()(
2
1
2
1
kKkK
kKkK
N
−
−
=
onde
S
P
k
Ω
Ω
= ,
12
−
=
A
k
ε
e ∫ −
=
2/
0
22
1
1
)(
π
θ
θ
d
senx
xK
5.3 Transformações em Frequência
Como dissemos anteriormente, o projeto de filtros seletores de frequência como
passa-alta, passa-faixa ou rejeita faixa, são feitos a partir de um protótipo do tipo
passa baixa. A partir desse protótipo, é possível aplicar uma transformação
algébrica para construir o filtro desejado.
Seja HPB(Z) a função do sistema de um filtro passa-baixa dado o qual se quer
transformar para obter uma nova função H(z). Observe que as variáveis
complexas Z e z estão associadas ao filtro passa-baixa protótipo e ao filtro
obtido pela transformação, respectivamente. O que se deseja, portanto, é uma
função Z=G(z) que satisfaça:
)( 11)()( −−
=
= zGZPB ZHzH
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 159
Se HPB(Z) é a função racional de um sistema causal e estável, uma exigência
natural é que a função transformada H(Z) também apresente essas
características. Isso implica que:
1. G(z-1
) deve ser uma função racional de z-1
.
2. O interior do círculo unitário do plano Z deve mapear o interior do círculo
unitário do plano z.
3. O círculo unitário do plano Z deve mapear no círculo unitário do plano z.
Denotando por θ e w as variáveis (ângulos) associados, respectivamente, aos
planos Z e z, a transformação Z-1
= G(z-1
) pode ser re-escrita como:
)( jwj
eGe −−
=θ
)(
|)(|
jw
eGjjwj
eeGe ∠−−
=θ
De forma que:
|G(e-jw
)| = 1
e
-θ= ∠G(e-jw
)
A forma mais geral da função G(z-1
) que satisfaz às condições acima é:
∏=
−
−
−−
−
−
±==
N
k k
k
z
z
zGZ
1
1
1
11
1
)(
α
α
onde |αk| < 1. Dependendo da escolha de N e αk, diversos mapeamentos podem
ser obtidos. O mais simples é (N = 1, α1 = α):
1
1
11
1
)( −
−
−−
−
−
==
z
z
zGZ
α
α
Agora, escolhendo uma ordem apropriada N e os coeficientes {αk}, podemos
obter uma variedade de mapeamentos. As transformações mais comuns estão
na Tabela 5.1.
Nessa tabela, vale a pena comentar a transformação passa-baixa para passa-
baixa (primeira conversão da tabela). Isso é feito para que se possa construir um
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 160
filtro passa-baixa que pode ser modificado apenas com a variação de um
parâmetro: α.
5.4 Comparação entre Filtros FIR e IIR
Seja M o comprimento (número de coeficientes) de um filtro FIR de fase linear e
N a ordem de um filtro elíptico (IIR). Se assumirmos que ambos os filtros
atendem exatamente às mesmas especificações, os dois filtros são equivalentes
e atendem à relação:
3≅
N
M
Isso mostra que, para a maior parte das aplicações, filtros IIR elípticos são
desejáveis do ponto de vista computacional. As condições mais favoráveis para
filtros FIR são:
1. Grandes valores de δ1;
2. Pequenos valores de δ2;
3. Grande largura da banda de transição.
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 161
Tabela 5.1. Transformações em frequência para filtros digitais (filtro passa-baixa
protótipo tem frequência de corte em wc’).
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 162
5.5 Exercícios
1. Projete um filtro passa-faixa, usando filtros passa-baixa ideais e janela de
Hamming, de acordo com a seguinte resposta em frequência:








<≤
<≤
<≤
<≤
<≤
=
ππ
ππ
ππ
ππ
π
||6,0,1
6,0||5,0,0
5,0||4,0,1
4,0||3,0,0
3,0||0,1
)(
w
w
w
w
w
eH jw
e
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 especificações:
Frequência da Banda de corte: 0,4π
Frequência 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 necessário do filtro para que as especificações sejam completamente
atendidas.
3. A resposta em frequência de um filtro passa-faixa ideal é dada por:





≤<
≤≤
<≤
=
ππ
ππ
π
||3/2,0
3/2||3/,1
3/||0,0
)(
w
w
w
eH jw
e
Usando uma janela de Kaiser, projete um filtro passa-faixa de comprimento 45
com atenuação na banda de corte de 60 dB. Plote a resposta ao impulso e a
resposta em magnitude do filtro. Modifique o que for necessário do filtro para
que as especificações sejam completamente atendidas.
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 163
4. Projetar um filtro digital passa-baixas, a partir do filtro analógico de
Butterworth com as seguintes especificações do filtro digital:
0,89125 ≤ |H(ejw
)| ≤ 1, 0 ≤ |w| ≤ 0,2π
|H(ejw
)| ≤ 0,17783, 0,3π ≤ |w| ≤ π

5.6 Bibliografia Complementar
1. Vinay K. Ingle, John G. Proakis, Digital Signal Processing, Thomson
Learning, 2000.
2. Michael Weeks, Digital Signal Processing Using MatLab and Wavelets,
Infinity Science Press, 2007.
3. Alan V. Oppenheim, Ronald Schafer, Discrete Time Signal Processing,
Prentice Hall, 1989
4. Tamal Bose, Digital Signal and Image Processing, John Wiley and Sons,
2004.
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 164
6. Transformada Discreta de Fourier
O uso de transformadas serve para observar características de um sinal que já
estavam presentes nele, mas que podem não ser observáveis em um domínio.
Assim, as transformadas conseguem levar o sinal para outro domínio e trazê-lo
de volta ao domínio original. A mais conhecida das transformadas é a
transformada de Fourier. Criada por Jean-Baptiste Fourier, a Transformada de
Fourier muda um sinal do domínio do tempo para o domínio da freqüência. Além
da observação de outras características do sinal, a mudança de domínio
também traz outras vantagens. No caso da transformada de Fourier, mudamos
um sinal de um domínio o qual não temos controle (o tempo) para outro domínio
que pode ser facilmente modificado (a freqüência). Uma mudança de estação de
rádio nada mais é que uma mudança de freqüência de um sinal.
A transformada de Fourier é uma ferramenta muito utilizada em análise e
processamento de sinais. Consiste de uma generalização da série complexa de
Fourier quando o período tende a infinito. A transformada de Fourier F(w) da
função f (t) é definida por:
∫
∞
∞−
−
=ℑ≡ dtetftfwF wtj π2
)()}({)(
onde e-jwπ
é o kernel da transformada de Fourier.
A transformada inversa de Fourier é definida como:
∫
∞
∞−
−
≡ℑ≡ dwewFwFtf wtj π
π
21
)(
2
1
)}({)(
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 são válidas:
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-j2πwt
0.F(w)
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 165
3) Deslocamento na freqüência: f(t)ej2πw
0
t
→ F(w – w0)
4) Escalonamento: f(a.t) → (1/|a|)F(w/a)
5) Convolução no tempo: f(t)*g(t) → F(w).G(w)
6) Convolução na freqüência: f(t).g(t) → (1/2π)F(w)*G(w)
6.1 A Série Discreta de Fourier
Com o advento do computador digital, foi necessária uma adequação da
transformada para sinais de tempo discreto. Considere uma seqüência x[n] que
é periódica com período N, tal que x[n] = x[n + k.N], para qualquer inteiro k, e N
é o período fundamental da sequência. Da análise de Fourier, sabemos que
funções periódicas podem ser sintetizadas como uma combinação linear de
exponenciais complexas cujas freqüências são múltiplas (ou harmônicas) da
frequência fundamental (no caso 2π/N). Da periodicidade no domínio da
frequência da transformada de Fourier discreta no tempo, concluímos que existe
um número finito de harmônicos; as frequências {(2π/N)k, k = 0, 1, 2, ...., N-1}.
Assim, a sequência periódica x[n] pode ser expressa como:
∑
−
=
=
1
0
2
][
1
][
N
k
kn
N
j
ekX
N
nx
π
, n = 0, ±1, .... (Eq. 6.1)
onde {X[k], k = 0, ±1, ....} são chamados de coeficientes da série discreta de
Fourier, sendo dados por:
∑
−
=
−
=
1
0
2
][][
N
n
kn
N
j
enxkX
π
, k = 0, ±1, .... (Eq. 6.2)
onde x[n] é a seqüência discreta no domínio do tempo que descreve os valores
amostrados da variável contínua x(t) e N é o número de amostras da seqüência
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 166
da entrada. Observe que X[k] também é uma sequência periódica com período
fundamental igual a N. Ou seja, X[k + N] = X[k]. As equações 6.1 e 6.2 são a
representação discreta em série de Fourier de sequências periódicas.
Por conveniência de notação, podemos chamar:
WN = e-j(2π/N)
e assim o par de equações torna-se:
Equação de análise: ∑
−
=
=
1
0
][][
N
n
kn
NWnxkX
Equação de síntese: ∑
−
=
−
=
1
0
][
1
][
N
k
kn
NWkX
N
nx
Tanto x[n] quanto X[k] são seqüências periódicas.
Exemplo:
Encontre a representação em série de Fourier da sequência:
x[n] = {...0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, ....}
O período fundamental da sequência é N = 4. Assim, W4 = e-j2π/4
= e-jπ/2
= cos(-
π/2) + j.sen(-π/2) = 0 + j.(-1) = -j
Agora
∑=
=
3
0
4][][
n
kn
WnxkX
Assim:
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 167
∑∑ ==
=+++===
3
0
3
0
.0
4 6]3[]2[]1[]0[][][]0[
nn
n
xxxxnxWnxX
De forma similar:
∑∑ ==
+−=−==
3
0
3
0
.1
4 22)]([][]1[
n
n
n
n
jjnxWnxX
∑∑ ==
−=−==
3
0
2
3
0
.2
4 2)]([][]2[
n
n
n
n
jnxWnxX
∑∑ ==
−−=−==
3
0
3
3
0
.3
4 22)]([][]3[
n
n
n
n
jjnxWnxX

Uma outra forma de ver a transformada discreta de Fourier é através de uma
representação em matrizes. Considere que x e X são vetores coluna
correspondendo aos períodos primários das sequências x[n] e X[k],
respectivamente. Então as equações de síntese e análise podem ser vistas
como:
X = WNx
e
x = (1/N)W*
NX
onde WN é dada por:
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 168
A matriz WN é chamada de matriz DFS. Essa forma de calcular os coeficientes
da série 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 -2 + 2i -2 - 0i -2 - 2i
Exatamente como calculamos anteriormente. A transformada inversa pode ser
obtida como:
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.
Exemplo:
Considere uma sequência representando uma onda quadrada periódica:
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 169
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]');
Para N = 40, temos:
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 170
6.2 A Transformada Discreta de Fourier
Na prática, definimos a Transformada Discreta de Fourier (DFT) como o período
primário da DFS. Essa DFT é a transformada de Fourier para sequências
arbitrárias de duração finita.
Primeiro, definimos a squência de duração finita x[n] que tem N amostras sobre
0 ≤ n ≤ N – 1 como uma sequência de N-pontos. Seja x~ [n] um sinal periódico de
período N, criado usando uma sequência de N-pontos x[n]; isto é:
∑
∞
−∞=
−=
r
rNnxnx ][][~
O teorema da amostragem no domínio da frequência diz que, se x[n] é de
duração finita ([0, N-1]), então N amostras de X(z) no círculo unitário determinam
X(z) para todo z. Nesse sentido, N eqüidistantes amostras da transformada de
Fourier discreta no tempo X(ejw
) da sequência de N-pontos x[n] pode reconstruir
unicamente X(ejw
). Essas N amostras ao redor do círculo unitário são chamdas
de coeficientes da transformada discreta de Fourier. Seja X
~
[k] =DFS x~ [n], que é
uma sequência periódica (e assim de duração finita). Seu intervalo primário é
então a transformada discreta de Fourier, que é de duração finita. Essas noções
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 171
são claras na seguinte definição. A Transformada Discreta de Fourier de uma
sequência de N-pontos é dada por:


 −≤≤
==
senão
NkkX
nxDFTkX
,0
10],[
~
])[(][
ou
∑
−
=
=
1
0
][][
N
n
kn
NWnxkX , 0 ≤ k ≤ N – 1
Note que X[k] também é uma sequência de N-pontos, ou seja, ela não é 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:
])[(][ kXIDFTnx =
ou
∑
−
=
−
=
1
0
][
1
][
N
k
kn
NWkX
N
nx , 0 ≤ n ≤ N – 1
Novamente, x[n] não é definida fora do intervalo 0 ≤ n ≤ N – 1. A extensão de
x[n] fora desse intervalo é x~ [n].
Do início desse capítulo, fica claro que a DFS é praticamente equivalente à DFT
quando 0 ≤ n ≤ N – 1. Assim a implementação da DFT pode ser feita de forma
similar. Se x[n] e X[k] são organizados como vetores coluna x e X,
respentivamente, então temos:
X = WNx
e
x = (1/N)W*
NX
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 172
onde WN é a matriz DFS como antes. A implementação tanto da DFT quanto da
IDFT no MatLab é igual às da DFS e IDFS que apresentamos anteriormente.
Considere aquelas mesmas funções com nomes dft e idft apenas.
Uma outra possível representação da transformada discreta de Fourier é a forma
retangular que se utiliza da relação de Euler. A relação de Euler é dada por ejθ
=
cosθ + jsenθ . A DFT pode ser escrita então da seguinte forma:
∑
−
=












−





=
1
0
22
cos][][
N
n N
mn
jsen
N
mn
nxmX
ππ
lembrando que j = √−1. Este é um conceito abstrato conveniente para nos ajudar
a comparar a relação de fase entre várias componentes senóidais do sinal.
A DFT apresenta algumas propriedades que são muito úteis no processamento
digital de sinais, como: simetria, linearidade, deslocamento no tempo e
freqüência, entre outras. Fora a simetria, as outras propriedades são comuns à
transformada de Fourier de tempo contínuo.
6.3 Propriedades da Transformada Discreta de Fourier
1) Linearidade
Dadas duas seqüências periódicas com período N, x1[n] e x2[n], e suas
respectivas DFTs X1[k] e X2[k], então:
a.x1[n] + b.x2[n] ↔ a.X1[k] + b.X2[k]
Obs: Se x1[n] e x2[n] são sequências de durações diferentes (N1-pontos e N2-
pontos, por exemplo), escolha N3 = max(N1, N2). Se, por exemplo, N1 < N2, então
X1[k] é a DFT de x1[n] aumentada de (N2 – N1) zeros.
2) Deslocamento de uma seqüência
Seja x[n] uma seqüência periódica com coeficientes de Fourier X[m]. Assim:
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 173
x[n – m] ↔ WN
km
X[m]
3) Dualidade
Se x[n] ↔ X[k]
então X[n] ↔ N.x[-k]
4) Simetria
A simetria pode poupar muito esforço computacional. Quando a seqüência do
sinal for real, então X[N − m]* = X[m]. Ou seja, basta que calculemos as
componentes de X[m] para 0 ≤ m ≤ N/2 .
Prova:
∑
−
=
−
=
1
0
2
][][
N
n
kn
N
j
enxkX
π
Logo
*
1
0
22*
1
0
)(
2
*
][][][






=






=− ∑∑
−
=
−−
=
−− N
n
nm
N
jnN
N
jN
n
mNn
N
j
eenxenxmNX
πππ
*
1
0
2
2*
][][






=− ∑
−
=
−
N
n
nm
N
j
nj
eenxmNX
π
π
onde e-j2πk
= cos(2πn) - jsen(2πn) = 1 – j.0 = 1. Assim:
*
1
0
2
*
][][






=− ∑
−
=
N
n
nm
N
j
enxmNX
π
Se x[n] for real:
][][][
1
0
2
*
mXenxmNX
N
n
nm
N
j
==− ∑
−
=
−
π
5) Convolução Periódica
∑
−
=
↔−
1
0
2121 ][][][][
N
m
kXkXmnxmx
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 174
onde o lado esquerdo da igualdade é conhecido como convolução, representado
por x1[n]*x2[n]. É importante observar que o somatório ocorre no intervalo 0 ≤ m
≤ N-1. O valor de x2[n – m] se repete periodicamente fora desse intervalo.
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');
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 175
Observe que, como o sinal x[n] é real, a magnitude da resposta em frequência
apresenta uma imagem refletida. Assim, precisamos apenas da primeira metade
dela. Para a fase, o padrão também aparece refletido no eixo da freqüência;
novamente, só precisamos de metade da plotagem. Para a questão 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');
6.4 A Transformada Discreta Bi-Dimensional de Fourier
Para duas dimensões, a DFT e sua inversa podem ser vistas como:
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 176
Essa é a forma como a transformada é calculada para imagens digitais, por
exemplo. Se considerarmos uma imagem em níveis de cinza onde o valor 0
corresponde à ausência de cor (o preto) e o valor 1 corresponde ao valor
máximo da cor (o branco), a imagem abaixo:
Pode ser vista como uma figura tridimensional, cuja visão em perspectiva seria
como na figura:
que é uma versão tridimensional da função porta. Dessa forma, a transformada
também é uma função sample, mas também tridimensional:
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 177
Uma propriedade importante da DFT aplicada a imagens é sua sensibilidade à
rotação. Por exemplo, considere a figura abaixo e sua DFT:
Se for imposta uma rotação à imagem, a transformada guardará a informação da
inclinação inicial, podendo ser possível encontrar o ângulo de rotação da
imagem. Por exemplo, na figura a seguir, foi imposta uma rotação de 45º à
imagem da figura acima. Veja o resultado da DFT como apresenta a inclinação.
6.5 O Espectrograma
O espectrograma apresenta a densidade espectral do sinal ao longo do tempo.
Em processamento de voz, o espectrograma é usado para identificar fonemas
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 178
no sinal. A forma mais comum de representarmos um espectrograma é através
de um gráfico bi-dimensional onde a abscissa corresponde ao tempo e a
ordenada à frequência. Uma terceira dimensão indica a amplitude de cada
frequência e é normalmente associada a uma cor. Com isso, o espectrograma
pode ser visto como uma imagem. Normalmente, espectrogramas são gerados
através do cálculo do quadrado da magnitude da STFT (Short-Time Fourier
Transform – Transformada de Fourier de Tempo Curto) do sinal. Ou seja,
Espectrograma(t, ω) = |STFT(t, ω)|2
Exemplo:
Considere o sinal de voz abaixo. Nele está sendo dito: “jessica brown”. O som foi
gerado por uma voz feminina, com ruído de fundo. Arquivo phrase59_16k.wav,
da pasta Enroll_Session1 -> f16 -> female_list_4a (base TIMIT do MIT). Em
seguida, apresentamos seu espectrograma. No padrão de cores do MatLab, as
cores vermelha e amarela correspondem a picos (o que indica alta densidade da
frequência), enquanto os tons azuis correspondem a valores baixos. Há um
ruído no início da gravação.
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 179
A função usada para gerar esse espectrograma pode ser vista abaixo:
% read the signal
[y,fs]=wavread('phrase59_16k.wav');
% calculate the table of amplitudes
[B,f,t]=specgram(y,1024,fs,256,192);
% calculate amplitude 50dB down from maximum
bmin=max(max(abs(B)))/300;
% plot top 50dB as image
imagesc(t,f,20*log10(max(abs(B),bmin)/bmin));
% label plot
axis xy; xlabel('Time (s)'); ylabel('Frequency (Hz)');
colormap(jet);
(fonte: http://www.phon.ucl.ac.uk/courses/spsci/matlab/lect9.html)
As figuras a seguir mostram as mesmas palavras ditas pela mesma mulher, mas
com outro tipo de microfone. Observe as diferenças mais visíveis no
espectrograma.
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 180
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 181
6.6 Exercícios
1. Determine os coeficientes da DFS das seguintes sequências periódicas,
usando a definição 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 sequências periódicas, dados os seguintes coeficientes DFS,
usando a definição 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] periódica com período fundamental N = 50, onde um período é
dado por:



≤≤
≤≤
=
−
4926,0
250,
][
3,0
1
n
nne
nx
n
e seja x2[n] periódica com período fundamental N = 100, onde um período é
dado por:



≤≤
≤≤
=
−
9926,0
250,
][
3,0
21
n
nne
nx
n
a) Encontre DFT{x1[n]} e plote (usando a função stem) os gráficos de sua
magnitude e de sua fase.
b) Encontre DFT{x2[n]} e plote (usando a função stem) os gráficos de sua
magnitude e de sua fase.
c) Qual a diferença entre as duas plotagens?
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 182
4. Nas questões abaixo, para cada função, plote a magnitude e a fase de sua
DFT (crie as funções no MatLab):
a) Dente de serra:
b) Onda quadrada

Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 183
6.7 Bibliografia Complementar
1. Vinay K. Ingle, John G. Proakis, Digital Signal Processing, Thomson
Learning, 2000.
2. Michael Weeks, Digital Signal Processing Using MatLab and Wavelets,
Infinity Science Press, 2007.
3. Alan V. Oppenheim, Ronald Schafer, Discrete Time Signal Processing,
Prentice Hall, 1989
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 184
7. Transformada Rápida de Fourier (FFT- Fast Fourier
Transform)
Embora a DFT seja o melhor procedimento matemático para determinar o
conteúdo espectral de uma seqüência no domínio do tempo, ela é muito
ineficiente. Em 1965, um artigo foi publicado por J.W.Cooley e J.W.Tukey
descrevendo um algoritmo eficiente para implementação da DFT, este algoritmo
ficou conhecido como Transformada rápida de Fourier (FFT). Antes do advento
da FFT, a DFT com muitos pontos estava restrita a grandes centros de
pesquisas. Graças a Cooley e Tukey, e a indústria dos semicondutores, DFTs
com 1024 pontos podem ser calculadas em apenas alguns segundos em
computadores pessoais.
O esforço computacional pode ser definido como o número máximo de
operações elementares necessárias para resolver o problema. No caso da DFT,
pode-se tratar da complexidade multiplicativa e complexidade aditiva i.e.,
número de multiplicações ponto flutuante (respectivamente adições) necessárias
para calculá-la. Tradicionalmente tem-se usado apenas a complexidade
multiplicativa como o parâmetro mais importante. A FFT foi implementada com o
objetivo de diminuir complexidade (temporal) necessária para calcular uma DFT
(Transformada Discreta de Fourier), visando aplicações em tempo real.Para uma
seqüência de N pontos, o algoritmo comum para cálculo da DFT realiza N2
multiplicações, enquanto o algoritmo FFT realiza apenas (N/2)log2N.
A FFT usa um número reduzido de operações aritméticas para calcular a DFT
em relação ao seu cálculo direto. As primeiras aplicações práticas da FFT
usando computação digital foram resultantes de manipulações da DFT.
7.1 Algoritmos Rápidos
Existem diversos algoritmos para executar computações. Por exemplo, há
diversos algoritmos dedicados à ordenação de uma seqüência. O que difere
esses algoritmos é o tempo de resposta deles ou a chamada complexidade do
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 185
algoritmo. No entanto, a análise de complexidade de um algoritmo não considera
detalhes de implementação. Nesse sentido, os algoritmos rápidos propõem
modificações na forma de resolver algum problema a fim de conseguir um ganho
de tempo de processamento. Isso pode não afetar a complexidade do algoritmo,
mas deve diminuir seu tempo de processamento. Claro, há condições
específicas para que isso ocorra. Casos onde essas condições não são
atendidas podem provocar até um aumento no tempo de processamento. A
busca por soluções rápidas deve ser constante no desenvolvimento de um
algoritmo.
Por exemplo, considere a computação da variável A dada por:
A = a.c + a.d + b.c + b.d
Esse cálculo direto leva o programa a executar 4 multiplicações e 3 adições.
Essa expressão, no entanto, pode ser simplificada para:
A = (a + b).(c + d)
provocando uma redução das operações para apenas 1 multiplicação e 2
adições. Em geral, a multiplicação é o elemento de maior custo considerado.
Observamos que essa expressão é equivalente à primeira, apenas executando
menos operações aritméticas.
Um outro exemplo menos trivial é o cálculo de uma multiplicação complexa. O
produto complexo:
(e + jf) = (a + jb).(c + jd)
é definido por:
e = (ac – bd)
f = (ad + bc)
exigindo 4 multiplicações e duas adições. Um algoritmo mais eficiente calcula:
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 186
e = (a – b)d + a(c – d)
f = (a – b)d + b(c + d)
tendo 3 multiplicações apenas. O aumento na quantidade de adições não
prejudica o desempenho do algoritmo já que a multiplicação é o elemento mais
custoso.
7.2 Algoritmo de Cooley-Tukey ou Decimação no Tempo
J.W.Cooley (IBM) em colaboração com J.W.Tukey (Bell Labs) conseguiram uma
revolução maior no tratamento digital de sinais em 1965 com a publicação da
transformada rápida de Fourier, a FFT. Trata-se de um método engenhoso e
altamente eficiente de reagrupar os cálculos dos coeficientes de uma DFT. A
idéia é representar uma DFT de tamanho arbitrário N = N1.N2 em termos de
DFTs menores de tamanhos N1 e N2, procedendo recursivamente.
Lembrando que os coeficientes da DFT são definidos por:
∑∑
−
=
−
=
−
==
1
0
1
0
/2
][)]([)(
N
n
kn
N
N
n
knNj
WnxenxkX π
(Eq. 7.1)
onde k = 0, 1, 2, ...., N – 1. Calculada assim diretamente, a DFT requer O(N2
)
operações.
A idéia do algoritmo de Cooley-Tukey é dividir a seqüência x[n] em duas
seqüências: uma com os coeficientes de índice par e outra com os coeficientes
de índice ímpar. Como a quebra é em duas seqüências, o algoritmo é conhecido
também como Radix-2. Algoritmos no qual a seqüência é decomposta
sucessivamente em seqüências menores são chamados de algoritmos de
decimação em tempo.
O princípio do algoritmo de decimação em tempo pode ser analisado
considerando que N é um inteiro potência de 2, i.e., N = 2v
. Como N é um inteiro
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 187
par, podemos considerar calcular X(k), separando x[n] em duas seqüências 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:
∑ ∑+=
parn ímparn
nk
N
nk
N WnxWnxkX
_ _
][][)(
Substituindo as variáveis n = 2r para n par e n = 2r + 1 para n ímpar:
∑∑
−
=
+
−
=
++=
12/
0
)12(
12/
0
2
]12[]2[)(
N
r
kr
N
N
r
rk
N WrxWrxkX (Eq. 7.2)
∑∑
−
=
−
=
++=
12/
0
2
12/
0
2
)](12[)](2[)(
N
r
rk
N
k
N
N
r
rk
N WrxWWrxkX (Eq. 7.3)
Mas WN
2
= WN/2 já que:
WN
2
= e-2j(2π/N)
= e-2j(π/(N/2))
= WN/2
Consequentemente, a Eq. 7.3 pode ser escrita como:
∑∑
−
=
−
=
++=
12/
0
2/
12/
0
2/ ]12[]2[)(
N
r
rk
N
k
N
N
r
rk
N WrxWWrxkX
][][)( kHWkGkX k
N+= (Eq. 7.4)
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 188
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 sequência
original e o segundo termos uma DFT de N/2 pontos dos pontos de índice ímpar
da seqüência original. A Fig. 7.1 apresenta um diagrama de fluxo do cálculo de
uma DFT de 8 pontos.
Fig. 7.1. Decimação 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 são 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 saída, X[0] é obtido multiplicando H[0] por WN
0
e
somando o produto com G[0]. X[1] é obtido multiplicando H[1] por WN
1
e
somando o resultado com G[1]. Para calcular X[4] deveríamos multiplicar H[4]
por WN
4
e somar o resultado com G[4]. Contudo, como G[k] e H[k] são
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 189
periódicas em k com período 4 (nesse caso), H[4] = H[0] e G[4] = G[0]. Assim,
H[4] é obtido multiplicando h[0] por WN
4
e somando o resultado com G[0]. Os
outros valores são obtidos de forma similar.
Com a computação re-estruturada de acordo com a Eq. 7.4, podemos analisar a
complexidade desse novo método e comparar com o algoritmo clássico da DFT.
A computação direta da DFT requer N2
multiplicações complexas e adições. A
Eq. 4 requer o cálculo de duas DFTs de N/2 pontos o que significa 2(N/2)2
multiplicações complexas e o mesmo número de adições, se usarmos o método
clássico para calcular cada DFT dessas. Então as duas DFTs de N/2 pontos
devem ser combinadas precisando N multiplicações complexas, correspondendo
a multiplicar H[k] pelo twiddle e N adições complexas para somar G[k] com o
resultado desse produto. Assim, a computação da Eq. 6.4 para todos os valores
de k requer, no máximo:
N + 2(N/2)2
= N + N2
/2
multiplicações complexas e adições. Para N> 2, esse valor é menor que as N2
operações necessárias pela DFT clássica.
A Eq. 7.4 corresponde a quebrar a computação da DFT de N-pontos em duas
DFTs de N/2 pontos. Se N/2 é par, o que acontece quando N é igual a uma
potência de 2, podemos considerar calcular cada DFT de N/2 pontos usando o
mesmo método. Assim, cada uma será quebrada em duas DFTs de N/4 pontos.
Com isso, G[k] e H[k] serão dados por:
∑∑
−
=
−
=
++=
14/
0
4/2/
14/
0
4/ ]12[]2[][
N
l
lk
N
k
N
N
l
lk
N WlgWWlgkG (Eq. 7.5)
∑∑
−
=
−
=
++=
14/
0
4/2/
14/
0
4/ ]12[]2[][
N
l
lk
N
k
N
N
l
lk
N WlhWWlhkH (Eq. 7.6)
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 190
Consequentemente, a DFT de N/2 pontos G[k] pode ser obtida combinando as
DFTs de N/4 pontos das sequências g[2l] e g[2l + 1]. O mesmo acontecendo
com o cálculo 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, então o cálculo aconteceria como
na Fig. 7.2. Inserindo a computação 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 potências de WN ao invés de WN/2, considerando que WN/2 = WN
2.
Fig. 7.2. Gráfico de fluxo da decimação em tempo de uma DFT de N/2 pontos
em duas DFTs de N/4 pontos (para N = 8).
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 191
Fig. 7.3. Fluxo completo do cálculo 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 computação 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 cálculo de uma DFT de 2 pontos.
Para o caso geral, mas ainda considerando N como potência de 2, podemos
continuar com a decomposição 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
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 192
processo requer v estágios, onde v = log2N. Anteriormente, calculamos a
quantidade de operações executadas para uma DFT usando uma única
decimação em tempo (uma única quebra) e chegamos a N + 2(N/2)2
= N + N2
/2.
Quando temos uma decomposição de uma DFT de N/2 pontos e duas de N/4
pontos, o fator (N/2)2
é substituído por N/2 + 2(N/4)2
, assim, a computação total
requer:
N + N + 4(N/4)2
multiplicações complexas e adições. Se N = 2v
, isso pode ser feito no máximo v
= log2N vezes. Assim, se fizermos a decomposição o maior número de vezes
possível, temos uma quantidade total de multiplicações complexas e adições
igual a N.log2N.
Todo o processo ainda pode ser mais simplificado se explorarmos a simetria e
periodicidade dos coeficientes WN
r
. Primeiro, podemos observar que a
passagem de um estágio para o outro na Fig. 7.3 tem uma computação básica
como mostrada na Fig. 7.5. Ou seja, ela envolve a obtenção de um par de
valores de um estágio a partir de um par de valores do estágio anterior, onde os
coeficientes são sempre potências de WN e os expoentes são separados por
N/2. Por causa de sua forma, essa computação é chamada de butterfly. Como:
WN
N/2 = e-j(2π/N)N/2
= e-jπ
= -1
o fator WN
r+N/2
pode ser escrito como:
WN
r+N/2
= WN
N/2
.WN
r
= -WN
r
Com isso em mente, o cálculo da butterfly da Fig. 7.5 pode ser simplificado para
a forma da Fig. 7.6 que requer apenas uma multiplicação complexa ao invés de
duas.
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 193
Fig. 7.5. Gráfico de fluxo de uma computação butterfly.
Fig. 7.6. Gráfico de fluxo de uma computação butterfly simplificada.
Em termos práticos, para desenvolver o cálculo apresentado na Fig. 7.3,
poderíamos usar dois arrays: um para o array sendo computado e outro para o
array usado na computação. Vamos denotar a seqüência de números
complexos resultante do m-ésimo estágio como Xm[l], onde l = 0, 1, ..., N-1, e
m=1, 2, ...., v. Além 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 saída do m-ésimo estágio. 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]
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 194
X0[6] = x[3]
X0[7] = x[7]
Usando essa notação, podemos legendar a entrada e a saída do butterfly da Fig.
7.6, como indicado na Fig. 7.7, de acordo com as seguintes equações:
(Eqs. 7.7)
que podem ser re-escritas como:
(Eqs. 7.8)
Fig. 7.7. Gráfico de fluxo das Eqs. 7.8.
Pelas equações 7.8 e pela Fig. 7.3, está claro que apenas o passo m-1 é
necessário estar armazenado para poder calcular os valores do array no passo
m. Esse tipo de computação é chamado de computação in-place.
É importante observar também, pela Fig. 7.3, que a seqüência de entrada é
acessada de uma maneira não-sequencial. De fato, a ordem no qual os dados
de entrada são 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.
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 195
Escrevendo esses índices na forma binária, obtemos o seguinte conjunto de
equações:
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 representação binária do índice da seqüência x[n], então o
valor da seqüência x[n2, n1, n0] é armazenado no array na posição X0[n0, n1, n2],
invertendo os bits do índice n. Essa ordenação em subseqüências de índices
pares e ímpares é apresentada no diagrama em árvore da Fig. 7.8.
Outra forma de melhorar o desempenho do cálculo da DFT é através da
subdivisão da seqüência de saída. Esses algoritmos são chamados de
algoritmos de decimação em freqüência. Todo o processo é bem semelhante à
decimação em tempo.
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 196
Fig. 7.8. Diagrama em árvore apresentando a ordenação bit-reverso
Fig. 7.9. Diagrama final de uma DFT de 8 pontos
Fig. 7.10. Diagrama da DFT de 8 pontos usando computação butterfly
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 197
7.3 Outras FFTs
Existem diversas variações no algoritmo da FFT. O algoritmo de Cooley-Tukey
ou de decimação no tempo re-arranja os elementos de entrada e depois constrói
a saída em log2N iterações. Também é possível derivar algoritmos de FFT que
primeiro desenvolvam um conjunto de log2N iterações nos dados de entrada e
re-arranje os valores de saída em ordem reversa de bits. Tais algoritmos são
chamados de decimação em freqüência ou algoritmos de FFT de Sande-Tukey.
Para algumas aplicações, como a convolução, os dados são convertidos para o
domínio da freqüência e depois de volta ao domínio do tempo. Nesses casos, é
possível evitar todo o reverso dos bits.
Outra classe de FFTs sub-dividem o conjunto de dados inicial de comprimento N
em conjunto menores de tamanho proporcional a potências de 2, por exemplo, N
= 4, FFTs de base 4, ou N = 8, FFTs de base 8. Essas transformações são feitas
por seções de códigos otimizadas que usam características de simetria desses
valores de N. Por exemplo, para N = 4, os senos e cossenos são todos ±1 ou 0,
eliminando muitas multiplicações, deixando mais adições e subtrações. A
melhoria de desempenho em relação a FFTs mais simples é de cerca de 20 a
30%.
Existem também algoritmos de FFT que atuam em conjuntos de comprimento N
que não é potência de 2. Eles trabalham usando relações análogas ao lema de
Danielson-Lanczos para sub-dividir o problema inicial em problemas
sucessivamente menores, não por potências de 2, mas por qualquer primo
pequeno que divida N. Quanto maior for o maior fator primo de N, pior o método
funciona. Se N é primo, então nenhuma sub-divisão é possível e o usuário
termina usando uma FFT com complexidade O(N2
) ao invés de O(N.log2N).
Deve-se ficar atento a esse tipo de implementação.
Algoritmos de Winograd são de certa forma análogos às FFTs de base 4 e 8.
Winograd derivou códigos altamente otimizados para atuar em DFTs de N
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 198
pequeno, e.g., para N = 2, 3, 4, 5, 7, 8, 11, 13, 16. Os algoritmos também usam
um método mais eficiente para combinar os sub-fatores. O método envolve uma
re-ordenação de dados antes e depois do processamento, conseguindo uma
grande redução no número de multiplicações do algoritmo. Para valores de N
da ordem de potências de 2, o algoritmo de Winograd pode ser mais rápido que
algoritmos mais simples de FFT. Essa vantagem deve ser analisada com
cuidado já que o método torna bastante mais complicada a indexação dos dados
envolvidos na transformada.
Finalmente, uma classe interessante de transformadas para gerar convoluções
mais rápidas são as transformadas baseadas em teoria dos números. Esses
esquemas substituem a aritmética de ponto-flutuante por uma aritmética de
inteiros módulo algum valor primo grande N. De fato, esses métodos não são
transformadas de Fourier em absoluto, mas suas propriedades são similares e a
velocidade computacional pode ser muito superior.
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 199
7.4 Exercícios
1. Dada a equação abaixo para a transformada discreta do cosseno, apresente
como ficaria sua implementação usando o algoritmo rápido de decimação no
tempo.
∑=





 −−
=
N
n N
kn
nxkwky
1 2
)1)(12(
cos)()()(
π
, k = 1, ...., N
Onde:






≤≤
=
=
Nk
N
k
kkw
2
2
1
1
)(

Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 200
7.5 Bibliografia Complementar
1. Michael Weeks, Digital Signal Processing Using MatLab and Wavelets,
Infinity Science Press, 2007.
2. Alan V. Oppenheim, Ronald Schafer, Discrete Time Signal Processing,
Prentice Hall, 1989
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 201
8. Análise Wavelet
Em 1807, Joseph Fourier propôs sua análise de freqüência em sinais. Através
dessa análise, um sinal no domínio do tempo poderia ser convertido para o
domínio da freqüência e vice-versa. Dessa forma, características do sinal podem
ser observadas de uma maneira mais apropriadas.
A transformada de Fourier é definida como:
∫
∞
∞−
−
= dtetfF tj πω
ω 2
)()( (Eq. 8.1)
sendo a transformada inversa:
∫
∞
∞−
= ωω
π
πω
deFtf tj2
)(
2
1
)( (Eq. 8.2)
A Transformada de Fourier representa no domínio da freqüência uma função do
domínio do tempo. A representação no domínio do tempo especifica uma
função, em cada intervalo de tempo, enquanto que a representação no domínio
da freqüência especifica as amplitudes relativas das componentes de freqüência
da função. Por exemplo, na Fig. 8.1, a transformada de Fourier da função porta
é a chamada função sample (sen(x)/x).
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 202
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 série de senos e cossenos. O problema é que a
transformada considera o sinal todo. A transformada não é sensível a mudanças
de freqüência no sinal. Assim, ela é apropriada para os chamados sinais
estacionários: sinais cuja freqüência não muda com o tempo. O problema é que
os sinais reais são não-estacionários. Assim, nesses casos, a transformada de
Fourier torna-se inútil. A Fig. 8.2 apresenta a representação de dois sinais: um
estacionário e outro não.
Uma solução para esse problema foi sugerida por Gabor em 1946. Ao invés 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 porção que está sob a janela, sendo todo o restante
desconsiderado nesse momento. Dentro da janela, considera-se que o sinal tem
comportamento estacionário (Fig. 8.3).
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 203
Fig. 8.2. Exemplo de um sinal estacionário e um não-estacionário.
Fig. 8.3. Transformada de Fourier de Tempo Curto
A aplicação de janelas a um sinal é uma prática comum, usada bastante em
processamento digital de voz. O problema associado ao uso dessa técnica 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,
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 204
uma janela pequena pode trazer pouca informação sobre o sinal e exige muito
processamento. Já uma janela grande pode aumentar o erro na consideração de
estacionaridade do sinal.
Nesse sentido, o próximo passo natural na evolução das transformadas é a
aplicação de uma transformada em uma janela de tamanho variável. Essa é a
idéia básica da Transformada Wavelet. As janelas podem atuar em intervalos
maiores quando queremos informações mais precisas sobre baixas freqüências
ou em intervalos menores quando queremos informações mais precisas sobre
altas freqüências (Fig. 8.4).
Fig. 8.4. Transformada Wavelet
8.1 A Transformada Wavelet
A função da transformada Wavelet contínua é dada por:
(Eq. 8.3)
Nessa equação, s atua como fator de escala e τ atua como fator de translação
(deslocamento) da janela; ψ é uma função conhecida como a wavelet mãe. Essa
função é aplicada sobre a função em análise (x(t)), em janelas (cuja posição é
definida pelo deslocamento τ) e com dimensões diferentes (definidas pelo fator
de escala s). Variações nessa função criam as chamadas famílias de wavelets.
A primeira família de wavelets é a Haar criada na tese de Alfred Haar ainda em
1909 sem o propósito atual das Wavelets.
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 205
A Eq. 8.3 pode ser vista como uma forma geral da transformada que pode variar,
dependendo da função assumida por ψ. Dessa forma, podemos entender a
transformada de Fourier como um caso particular da transformada Wavelet com
a wavelet mãe sendo a função exponencial. Existem condições que definem
uma função como passível de ser wavelet, como veremos posteriormente.
O nome wavelet é a versão em inglês para o termo original ondeletteque
significa “pequena onda” como referência ao deslocar da onda por todo o sinal
desde escalas pequenas. O termo também referencia o fato da janela ter
comprimento finito.
A wavelet mãe é a função que analisa o sinal, efetivamente. Todas as janelas
são versões expandidas ou comprimidas e deslocadas dessa função. O fator de
escala afeta o sinal de forma que:
• Se s>1, então o sinal é expandido;
• Se s<1, então o sinal é comprimido.
Para análises de baixas freqüências do sinal, usamos uma alta escala para ter
uma visão global não detalhada do sinal. Para análise de altas freqüências usa-
se baixa escala para ter uma visão global detalhada do sinal. A Fig. 8.5
apresenta um exemplo de uma wavelet e o resultado da aplicação de um
elemento de escala nela. A Fig. 8.6 apresenta o resultado do deslocamento na
função.
Fig. 8.5. Influência da escala na wavelet mãe.
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 206
A Fig. 8.7 representa o comportamento da wavelet mãe ao longo de toda a
análise wavelet; à medida que a escala vai sendo modificada, como a wavelet
mãe se comporta.
Fig. 8.6. Influência do deslocamento na wavelet mãe.
Fig. 8.7. Comportamento da wavelet mãe à medida que mudanças de escala
vão sendo impostas a ela durante a análise.
Há algumas propriedades que devem ser obedecidas para que uma função
possa ser chamada de wavelet. Neste contexto, wavelets devem satisfazer
requisitos como:
• possuírem energia finita;
• possuírem certo grau de regularidade (suavidade);
• serem nulas no infinito;
• possuírem um certo número de momentos nulos;
• que sejam funções de classe Ck
(0<k<∞);
• que tenham suporte compacto, no tempo e na freqüência.
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 207
A análise wavelet no contínuo acontece da seguinte forma:
1- Tome uma função wavelet e compare-a com a região no início do sinal
original;
2- Calcule a correlação C entre a função e a região 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. Análise de wavelet no contínuo: a) correlação entre a função e a
wavelet mãe; b) novo cálculo com a função deslocada; c) re-início do
processamento com uma nova escala aplicada à wavelet mãe.
Quando o processo é concluído, temos os coeficientes resultantes das
comparações em cada escala da wavelet mãe. Esse resultado é plotado em um
gráfico tridimensional que apresenta o tempo versus a escala e o valor dos
coeficientes para cada escala.
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 208
Para as wavelets discretas, tradicionalmente discretizam-se os parâmetros s
(escala) e τ (deslocamento), variáveis do sinal transformado F(a,b), os
coeficientes wavelet. Para s toma-se valores inteiros (positivos e negativos),
potências de um parâmetro fixo s0:
s = s0
-j
, s0 > 1 e j∈Z
A discretização de b deve depender de j tal que wavelets estreitas (de alta
freqüência) sejam deslocadas por passos pequenos, e wavelets largas (de baixa
freqüência) sejam deslocadas por passos maiores. Assim, uma escolha natural
é:
b= k.b0.s0
-j
b0 > 0, fixo, j,k∈Z
A wavelet discreta fica então:
)()( 00
2/
0, kbtsst jj
kj −= ψψ (Eq. 8.3)
O fator s0 não pode ser arbitrário. Diferentes valores de s0 levam a wavelets
diferentes, e bases ortonormais de wavelets só são conhecidas para valores
racionais de s0. A escolha mais natural é s0=2. Fazendo-se b0=1, a wavelet da
equação 3 fica:
)2(2)( 2/
, ktt jj
kj −= ψψ
A wavelet acima é conhecida por wavelet diádica.
8.2 Análise em Multiresolução
A implementação da análise de wavelets é um processo bastante custoso. Em
1988, Mallat propôs sua implementação com filtros. Observamos que a intenção
inicial da transformada wavelet é poder observar um sinal em suas diferentes
freqüências. No entanto, na maioria dos casos práticos, as informações de baixa
freqüência são as mais importantes. Assim, um sinal pode ser dividido em duas
partes:
• Aproximações: componentes de alta escala e baixa freqüência do sinal
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 209
• Detalhes: componentes de pequena escala e alta freqüência do sinal.
Essa divisão nada mais é do que a divisão de um sinal em baixas e altas
freqüências. Isso pode ser facilmente conseguido com o uso de filtros passa-
baixa e passa-alta (Fig. 8.9).
Fig. 8.9. Decomposição de um sinal em suas componentes de baixa
(aproximações) e alta (detalhes) freqüências.
Um problema quanto a essa decomposição é 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 também,
embora as amostras de alta freqüência sejam suavizadas. Assim, cada
decomposição, aumentaria muito a quantidade de amostras. Para resolver esse
problema, a cada passo da decomposição, o sinal resultante é novamente
amostrado em um processo chamado de downsampling. Dessa forma, a saída
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).
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 210
Todo esse processo pode ser repetido em cascata, tratando, como sugerido,
apenas os componentes de baixa freqüência do sinal (os mais importantes). Isso
pode ser visto na Fig. 8.11. A isso se chama análise em multiresolução.
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. Decomposição do sinal em baixas e altas freqüências com o mesmo
processo se repetindo para as componentes de baixa freqüência.
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 informação que
não se consegue recuperar com o upsampling.
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 211
Fig. 8.12. Uso do upsampling (bloco com seta para cima) para reconstrução do
sinal.
8.3 Sobre os coeficientes das wavelets
Existem diversos tipos de wavelets como a Haar, Daubechies, Coiflets,
Shannon, etc.
Diversas são as aplicações de wavelets em processamento de sinais ou de
imagens. Dentre elas, podemos citar remoção de ruído, compressão (já que o
downsampling já é, naturalmente, um elemento de compressão com perda),
análise de texturas, filtragem, etc. Por exemplo, por processarem as diferentes
freqüências de um sinal, a análise wavelet é apropriada para imagens que
tenham diferente iluminação ao longo dela.
Para demonstrar uma transformada geral, vamos usar o esquema apresentado
na Fig. 8.13. Nela, um sinal de entrada alimenta dois canais, cada qual com um
par de filtros FIR. Tal estrutura é chamada de two-channel filter banks.
Fig. 8.13. Um two channel filter bank.
Análise Síntese
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 212
A metade esquerda da Fig. 8.13 (filtros h0 e h1) corresponde à transformada
direta, chamada de análise. A metade da direita é a transformada inversa,
chamada de síntese. É esperado que a síntese gere um sinal de saída 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 freqüência. Isso é chamado de subband
coding.
Para a transformada inversa, as saídas dos filtros da parte de análise (z[n] e
w[n]) passam por outros filtros FIR e, em seguida, são combinadas para gerar a
saída y[n]. A idéia é que w[n] e z[n] sejam versões transformadas de x[n] e que
y[n] é o sinal após 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 análise, w[n] e z[n] são definidos por:
w[n] = a.x[n] + b.x[n – 1]
z[n] = b.x[n] – a.x[n – 1]
Precisamos saber também que são w[n – 1] e z[n – 1]:
w[n - 1] = a.x[n - 1] + b.x[n – 2]
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 213
z[n - 1] = b.x[n - 1] – a.x[n – 2]
Assim, y[n] será:
y[n] = -a.z[n] + b.z[n – 1] + b.w[n] + a.w[n – 1]
E, em relação ao sinal original:
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 operações 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
então
y[n] = x[n – 1]
ou seja, a saída é 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
não 2(aa + bb) = 1 está relacionada ao processo de downsampling como
explicado anteriormente.
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 214
Algumas vezes, um two channel filter bank é chamado de quadrature mirror filter
(QMF). Um QMF é um filter banks com condições especiais nos coeficientes dos
filtros para evitar aliasing e conseguir uma reconstrução perfeita. Ou seja, sua
única diferença para filter banks é a escolha dos coeficientes dos filtros.
Seja um dos filtros da análise h0. Os outros filtros (h1, g0 e g1) são gerados a
partir de h0. Especificamente, h1 usa os mesmos coeficientes de h0, mas
negativa os coeficientes de índice par. O filtro de reconstrução 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 reconstrução, g0 e
g1 são 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, então QMF = CQF.
Fig. 8.15. QMF para a transformada de Haar.
Fig. 8.16. CQF para a transformada de Haar.
O termo “quadratura” quer dizer que as respostas dos filtros passa-baixa e
passa-alta são simétricas ao redor do ponto de “quadratura” π/2. O termo
h1 g1
h0 g0
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 215
“mirror” vem do fato de que a magnitude da resposta em freqüência do filtro HPF
é uma imagem espelhada da magnitude da resposta em freqüência do filtro LPF.
Um das famílias de wavelets mais utilizadas é a família das Daubechies. Criada
por Ingrid Daubechies, a família das wavelets Daubechies (ou db) é a única
família 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 freqüências. Um
exemplo de uma wavelete de daubechies pode ser visto na Fig. 8.17.
Fig. 8.17. Forma de uma onda da família 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:
w[n] = a.x[n] + b.x[n – 1] + c.x[ n – 2] + d.x[n – 3]
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 216
z[n] = d.x[n] - c.x[n – 1] + b.x[ n – 2] - a.x[n – 3]
Considerando que:
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 operações, que ac = -bd, então, chegamos à
expressão final:
y[n] = 2(aa + bb + cc + dd).x[n – 3]
Novamente, precisamos ter (aa + bb + cc + dd) = 1. Os coeficientes de
Daubechies obedecem a essas duas condições:
i) (aa + bb + cc + dd) = 1
ii) ac = -bd
8.4 Wavelets no MatLab
O MatLab traz uma série de ferramentas para lidar com wavelets. A mais básica
é a função swt (e swt2 para sinais bi-dimensionais como imagens) ou dwt. A
função swt permite diversos parâmetros de entrada (veja a documentação do
MatLab para ver todos), sendo os principais: o sinal de entrada, a quantidade de
níveis de decomposição e o tipo de wavelet (com o número de coeficientes
previamente calculados até certo ponto). Já a função dwt apresenta apenas a
decomposição do sinal nos componentes de aproximação e detalhes (como
apresentado na Fig. 8.11). A função wavemenu abre uma janela com diversas
funcionalidades do MatLab relacionadas com wavelets (Fig. 8.19). Todas essas
funções podem ser ativadas por linha de comando no próprio MatLab.
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 217
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');
>> % reconstrução
>> 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');
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 218
Plotagem do sinal de voz:
Plotagem das aproximações e detalhes:
Recuperação do sinal:
>> A0 = idwt(cA1,cD1,'db1',l_s);
>> err = max(abs(som-A0))
err = 1.1102e-016
>> plot (A0);
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 219
No wavemenu, selecione Wavelet 1-D, carregue o arquivo a_casa.wav e clique
em analyze com uma wavelet haar e 5 níveis de decomposição. O resultado
está apresentado abaixo:
Podemos visualizar a árvore de decomposição e o resultado final da
reconstrução comparando com o arquivo original na próxima imagem:
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 220
Para imagens, podemos usar o comando Wavelet 2-D do wavemenu.
Carregando a imagem lena.bmp e processando com uma db1 com 5 níveis de
decomposição, temos a janela apresentada na próxima figura e detalhada nas
seguintes.
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 221
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 222
Imagem original Imagem sintetizada
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 223
8.5 Exercícios
1.
a) Verifique se os coeficientes
a = (1-√3)/(4√2), b = (3-√3)/(4√2), c = (3+√3)/(4√2) e d = (1+√3)/(4√2)
podem ser coeficientes de uma wavelet de Daubechies.
b) Use esses coeficientes para filtrar a sequência:
x[n] = {8, 4, 0, 6, 3, 7, 2, 9}
de acordo com o filter banks da figura desta questão.
c) Agora, acrescente o downsampling antes das saídas z[n] e w[n] e um
upsampling após o processamento dessas saídas (antes da soma que gera
y[n]). Qual o erro entre a resposta da letra anterior e desta em relação à saída?
2. Para os coeficientes de filtros abaixo, use o MatLab para plotar a resposta em
frequência. 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}
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 224
3. No conjugate quadrature filter da 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 condições e exemplo de coeficientes para outra família de
wavelets.

Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 225
8.6 Bibliografia Complementar
1. Stéphane Mallat, A Wavelet Tour of Signal Processing, Academic Press,
2009.
2. Michael Weeks, Digital Signal Processing Using MatLab and Wavelets,
Infinity Science Press, 2007.
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 226
9. Processamento Digital de Imagens
Ao longo dos anos, o interesse em técnicas de processamento digital de
imagens (PDI) vem aumentando. Diversas são as aplicações que precisam
utilizar algum algoritmo associado ao processamento digital de imagens. Na
prática, os principais objetivos relacionados com PDI são: i) melhoria na
qualidade da imagem para observação humana ou para um mais
reconhecimento automático por máquinas; e ii) compressão para transmissão ou
armazenamento de imagens. Cada um desses objetivos leva a um grande leque
de técnicas e algoritmos.
No primeiro caso, podemos destacar aplicações relacionadas com imagens via
satélite, onde, em geral, as imagens chegam com distorções e ruídos que
precisam ser filtrados para uma análise humana. Da mesma forma, a quantidade
de estudos voltados para a visão computacional vêm crescendo mundialmente
e, na maioria dos casos, o primeiro passo para um sistema de visão
computacional é a aplicação de algoritmos de processamento de imagens para,
por exemplo, extrair a borda de objetos, permitindo uma melhor análise da sua
forma.
No segundo caso, em termos de compressão e transmissão, podemos observar
aplicações voltadas para a Internet que, cada vez mais, precisam usar imagens
para transmitir informações. Algumas dessas aplicações exigem imagens de alta
resolução, como o sensoriamento remoto. Nesses casos, é preciso usar
algoritmos que provoquem uma grande redução na quantidade de dados, sem
perder informação. Esse é o caso também de imagens médicas, mas, nesse tipo
de aplicação, a preocupação maior é o armazenamento das imagens. Por
exemplo, nos Estados Unidos, mamografia digitais precisam ser armazenadas
por 5 anos após o exame. Cada exame gera diversas lâminas que são imagens
de alta resolução ocupando GigaBytes de espaço de armazenamento. Nesse
caso também, é essencial que a compressão seja feita sem perdas.
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 227
Uma imagem digital pode ser entendida como uma função f(x,y), onde x e y são
as coordenadas espaciais e a função f é o nível de cinza (ou de brilho) naquele
ponto. Quando x, y e f estão numa escala finita e discreta, dizemos que temos
uma imagem digital.
A imagem digital pode ser gerada diretamente através de um dispositivo digital
ou pode ser digitalizada a partir de uma imagem real. Esse segundo caso é o
mais clássico, onde dispositivos, como scanners, por exemplo, faziam a
transposição da imagem do meio real para o digital. Para tanto, alguns
processos são fundamentais como veremos posteriormente.
Em termos de pesquisa e desenvolvimento, processamento digital de imagens
está inserido na grande área de processamento gráfico. Nessa área,
encontramos ainda elementos de computação gráfica e de visão computacional.
[Gomes e Velho, 1995] relacionam essas áreas de acordo com a representação
gráfica da Fig. 9.1. Essa representação e essa relação estão associadas ao tipo
de dado que entra e que sai de um sistema específico. Notadamente, essa
representação está relacionada com a percepção humana para os dados
inseridos e retornados pelos sistemas. Para os dispositivos, como
computadores, tudo é apenas processamento de dados.
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 228
Fig. 9.1. Relação 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
saída. A computação gráfica refere-se ao uso de dados de entrada para geração
das imagens de saída. 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 são renderizados compondo a imagem final. Já a
visão computacional corresponde ao oposto da computação gráfica: uma
imagem é inserida no sistema e dados são extraídos dela. Um exemplo pode ser
uma contagem automática de pessoas a partir de uma fotografia.
As primeiras aplicações relacionadas a imagens datam do início do século XX
com as primeiras transmissões de imagens para jornais. As imagens eram
transmitidas em 5 tons de cinza em cerca de uma semana. Com a invenção do
sistema Bartlane (dedicado para esse tipo de transmissão), o tempo de envio de
uma imagem passou a ser de apenas poucas horas. Em 1929, as imagens
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 229
começaram a ser geradas em 15 tons de cinza. A partir daí, o tratamento de
imagens começou a ter um maior desenvolvimento junto com o desenvolvimento
de tecnologias digitais, de uma maneira geral. Na década de 60, registra-se o
primeiro uso de computador para tratamento de imagens. No caso, procurava-se
corrigir distorções nas imagens transmitidas pela sonda Ranger 7.
9.1 Digitalização
Um sistema de processamento digital de imagens necessita de um dispositivo
de digitalização (câmera digital, scanner, etc), um meio para processar e
armazenar a imagem (como o computador) e uma forma de visualização da
imagem. Em geral, a grande dificuldade está relacionada com a digitalização
que pode gerar imagens com grande quantidade de dados a serem
processados.
Detalhando as principais funções relativas ao processamento digital de imagens,
comecemos com o processo de geração de uma imagem digital a partir de uma
imagem real: a digitalização.
Dada uma imagem real, a digitalização consiste em colher amostras dessa
imagem para representá-la em um meio discreto. O processo de coleta de
amostras é o mesmo que a digitalização de uma função como pode ser visto na
Fig. 9.2. Nela, vemos uma função no contínuo. Para ser representada em algum
domínio discreto, é preciso “adaptar” a função a esse domínio. Ou seja, partes
dela serão perdidas porque não podem ser representadas. Assim, amostras da
função são coletadas por impulsos separados por intervalos definidos de tempo
de forma que representem da melhor forma possível a função original.
Notadamente, em muitos casos reais, essa representação perde elementos que
não podem ser recuperados. Mas espera-se que a perda não seja significativa.
De qualquer forma, a reconstrução do sinal leva a uma forma aproximada do
sinal original. Isso está representado na Fig. 9.3. O sinal original é discretizado.
Cada amostra é então codificada e armazenada. A decodificação é feita sem
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 230
perda, recuperando o sinal discreto correto. A reconstrução que seria o processo
inverso da discretização é que ocorre de forma aproximada. O número de
amostras que deve ser colhido de um sinal para poder recuperá-lo é definido
pela taxa de Nyquist.
Fig. 9.2. Em azul (linha contínua) o sinal original e em vermelho (linha
pontilhada) as amostras colhidas do sinal para representá-lo em um domínio
discreto.
Fig. 9.3. Discretização e codificação em oposição à decodificação e
reconstrução do sinal contínuo original.
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 231
Tanto para sinais quanto para imagens, o processo de digitalização ocorre da
mesma forma. Em imagens, porém, ainda há outros elementos a serem
cuidados como será descrito posteriormente. Para geração 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 Físico (que
são os objetos reais, como eles existem na natureza), o Universo Matemático
(que é uma descrição abstrata desses objetos), o Universo de Representação
(com descrições simbólicas dos objetos) e, por fim, o Universo de
Implementação (onde são associadas às descrições abstratas e simbólicas com
estruturas de dados implementáveis no computador). No caso, a imagem digital
é representada no computador através de uma matriz.
A matriz imagem tem suas dimensões definidas durante o processo de
digitalização. A coleta de amostras define qual será a dimensão da matriz. Essa
medida define a resolução da imagem e é especificada em dpi (dots per inch ou
pontos por polegada). A resolução da imagem não pode ser alterada após o
processo de digitalização a não ser por uma nova digitalização. Definida as
dimensões da matriz, define-se cada elemento dessa matriz. Em uma imagem
digital, o seu menor elemento, ou seja, a célula da matriz, é chamado de pixel.
Seu valor é definido também durante a digitalização em um processo
semelhante ao de amostragem chamado de quantização. Em uma analogia com
sinais, como fizemos na Fig. 9.2, a quantização é responsável por discretizar o
sinal em sua amplitude. Isso pode ser visto na Fig. 9.4. Nas imagens, a
amplitude de cada célula da matriz corresponde à sua cor. Assim, através da
quantização definimos quantas cores a imagem terá. A essa definição de cores
chama-se de resolução de cor da imagem. Diferente da resolução da imagem, a
resolução de cor, em alguns casos, pode ser alterada após a digitalização.
Dessa forma, uma imagem digital está completamente definida: suas dimensões
e a cor de cada pixel. Como está claro, então, uma imagem nada mais é do que
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 232
uma matriz onde cada célula tem uma cor específica. O conjunto e a disposição
dessas cores é percebida pelo sistema visual humano e interpretado pelo nosso
cérebro como uma imagem.
Fig. 9.4. Como antes (Fig. 9.3), em azul (linha contínua) temos o sinal original,
em vermelho (linha pontilhada vertical) as amostras colhidas do sinal durante a
amostragem e em pontilhado na horizontal temos a discretização das amplitudes
durante a quantização.
Dada a importância das cores na formação e percepção da imagem,
descreveremos a seguir o sistema computacional de cores desde sua definição.
9.2 Sistema Computacional de Cores
A cor é tida como um fenômeno psicofísico. Ou seja, por um lado, ela deriva de
um fenômeno físico relacionado com a luz. No entanto, nossa percepção da cor
depende de sua interação com nosso sistema visual. Percebemos uma parede
como branca se uma luz branca incidir sobre ela. Se a única fonte de luz no
ambiente for uma luz vermelha, perceberemos a parede como um tom de
vermelho e não conseguiremos distingui-lo de outra cor.
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 233
No início do estudo sobre cores, o fenômeno que mais chamava a atenção era a
decomposição da luz branca em todas as cores do espectro ao passar por um
prisma. Acreditava-se que o prisma tinha essa propriedade “mágica” de
decompor a luz. Foi Sir Isaac Newton, físico, matemático e astrônomo inglês, no
século XVII, que derrubou essa idéia com um experimento simples: Newton
colocou um prisma na frente de outro e a decomposição 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 células fotossensíveis, cada uma responsável pela
percepção de uma cor.
Fig. 9.5. Experimento de Newton sobre a decomposição da luz branca.
No século XIX, Young propôs o modelo tricromático: nele, o sistema visual
humano era composto apenas de três células que seriam responsáveis pela
percepção de altas, médias e baixas freqüências. A idéia do modelo tricromático
foi comprovada por Helmholtz na década de 60, mas o modelo de Young não
explicava alguns fenômenos do sistema visual. No entanto, com seu trabalho,
Young mostrou que com apenas essas três cores primárias (de alta, média e
baixa freqüências) todas as cores do espectro poderiam ser geradas através de
um processo aditivo.
Atualmente, teoria da percepção das cores usa o modelo de Young-Helmholtz e
o modelo de Hering. De fato, nosso sistema visual não é sensível às freqüências
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 234
de forma separada, mas, sim, à composição delas. Seja L a componente de
baixa freqüência, M a média freqüência e H a alta freqüência, temos células
fotossensíveis às combinações:
L - M
H – (L + M)
L + M
As altas freqüências (baixo comprimento de onda) correspondem ao tom de azul
(B), as médias aos tons de verde (G) e as altas freqüências ao vermelho (R).
Assim, percebemos as combinações:
i) R – G
ii) B – (R + G)
iii) R + G
A combinação (iii) corresponde ao amarelo ou à luminosidade da cor. As
combinações (i) e (ii) formam a componente de crominância.
Em 1931, a Companhia Internacional de Iluminação definiu o modelo RGB
baseado na teoria de Young, onde a soma de diferentes intensidades de cada
uma dessas cores primárias corresponderia a uma cor do sistema. Esse é o
modelo adotado pelos sistemas computacionais, por televisores, projetores,
monitores, etc.
Além do sistema RGB, outros sistemas surgiram ao longo dos tempos para
aplicações específicas como o HSV, HSL, CMYK, CieLab, Pantone, etc. A
mudança de um sistema para outro pode trazer diversas vantagens dependendo
da aplicação.
No sistema computacional de cores, cada cor é representada pela tríplice (R, G,
B), onde cada componente de cor tem seu valor inteiro variando de 0 a 255, ou
seja, 1 byte. Assim, 3 bytes são necessários para representar uma cor. Com
isso, a quantidade máxima de cores que uma imagem pode ter em um
computador comum é cerca de 16 milhões.
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 235
No sistema padrão do Windows, adotado pela maioria dos sistemas
computacionais, as imagens podem ser armazenadas em 4 diferentes formatos,
baseado na quantidade de bits necessária 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 milhões 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 também
em uma paleta pré-definida, contendo apenas o nível de brilho de cada cor,
também chamado de tom de cinza. Essa paleta contém 256 entradas (cores),
precisando, assim, de 8 bits para cada pixel da imagem codificar a entrada da
paleta. O nível 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. (Eq. 9.1)
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 contribuição do componente B é pequena em relação aos outros
componentes.
Existem diferentes formas de representar as cores de um sistema. A mais
comum é através de um sólido como o cubo de cor, ou o cilindro ou o cone.
Essas são três representações comuns para o sistema RGB.
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 236
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). Variações nesses valores geram as outras cores do sistema
computacional de cores.
9.3 Histograma
Em uma imagem, o histograma é um gráfico que mostra a distribuição das cores
na imagem. No eixo x, encontramos todos os valores possíveis 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 não diz como as cores estão distribuídas na
imagem; apenas quantas vezes cada componente aparece.
No entanto, existem outras informações agregadas ao histograma de uma
imagem que permitem alterar algumas de suas características. 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
próximo ao 0 indica uma imagem escura, assim como um histograma
concentrado próximo ao 255 indica uma imagem clara. Um histograma com uma
pequena variação de cores (Fig. 9.6) indica uma imagem com baixo contraste (o
contraste está associado à separação das cores na imagem).
Fig. 9.6. Histograma de uma imagem de baixo contraste.
Por não conter informação sobre a distribuição das cores em uma imagem,
diferentes imagens podem ter o mesmo histograma (Fig. 9.7)
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 237
Fig. 9.7. Imagens completamente opostas, mas que têm o mesmo histograma.
As imagens podem ser manipuladas através de mudanças em seus
histogramas. As operações mais básicas são de equalização, stretch e
especificação. Na equalização, 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 não estiver presente na imagem
original, ele deverá estar na imagem final após a aplicação dessa operação. Já a
especificação faz com que uma imagem passe a ter o histograma como definido
em outra imagem.
Por outro lado, mudanças na imagem trazem conseqüências em seu
histograma. Por exemplo, se cada pixel da imagem é somado com um valor
positivo X, as cores dessa imagem tornar-se-ão mais próximas 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
expansão do histograma, aumentando seu contraste. Já o produto por um valor
entre 0 e 1 provocará a compressão do histograma, diminuindo seu contraste.
Nesse caso, valores negativos, claro, não fazem sentido já que as cores são
positivas entre 0 e 255.
Assim, através do histograma podemos obter algumas informações 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 características são vistas a seguir.
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 238
9.4 Filtragem de Imagens Digitais
A forma mais comum de manipular uma imagem (mudar suas características) é
através do processo de filtragem. Existem diversos tipos de filtros e maneiras
diferentes de realizar uma filtragem. Os filtros digitais podem ser classificados
em:
1) Filtros Estatísticos ou Determinísticos: onde os estatísticos são os que usam
alguma propriedade estatística da imagem. Exs: filtro da moda, da mediana.
2) Filtros lineares ou não-lineares: os filtros lineares não geram novas
freqüências na imagem, enquanto os lineares geram. Exs: Lineares: passa-
baixa, passa-alta, passa-faixa; Não-Lineares: filtros polinomiais com base de
polinômios de ordem maior que 2.
3) Filtros Topológicos ou de Amplitude: filtros topológicos são os que afetam a
estrutura da imagem (como os filtros de warping) e os filtros de amplitude atuam
apenas no espaço de cores da imagem.
Uma das formas de executar o processo de filtragem de uma imagem é através
da convolução. A convolução é uma operação comum em processamento de
sinais, resultante do seguinte cálculo:
∫
∞
∞−
−= τττ dthfthtf )().()(*)( (Eq. 9.2)
A Eq. 9.2 representa a convolução de uma função f(t) por uma função g(t). Em
termos gráficos, a convolução pode ser representada como na Fig. 9.8 (onde as
funções estão representadas como retângulos apenas para facilitar o
entendimento). Uma das funções, h, é rebatida e desloca-se pelo espaço das
funções. No momento que ela começa a ter alguma interseção com a função f a
área dessa interseção é calculada (resultado da integração). Enquanto as
funções tiverem área comum ao longo do deslocamento de h, o resultado é
avaliado. A integração é feita de -∞ a +∞, mas, claro, a área só é diferente de
zero enquanto há área em comum.
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 239
Para imagens, a convolução é aplicada de forma discreta. Ou seja, no caso das
imagens, as funções que convoluem são matrizes. Da mesma forma, a
integração é substituída por somatório. Na sua execução, como na versão
contínua, uma matriz é fixa e a outra desloca-se sobre ela. A área (resultado da
integração) é a região em comum entre as funções. Podemos ver esse processo
com as matrizes apresentadas na Fig. 9.10.
Fig. 9.8. Representação gráfica da convolução da função f pela função h.
Fig. 9.10. Convolução discreta aplicada a matrizes.
Uma característica da convolução discreta não é desejável na filtragem de
imagens. Por exemplo, considere na Fig. 9.9 que f é a imagem e h é o filtro. A
imagem de entrada tem dimensões 2x3, enquanto o resultado da operação é
uma matriz 3x4. Na prática, o processo de filtragem não pode acrescentar linhas
ou colunas à imagem. Assim, para aplicação em imagens digitais, a convolução
digital ocorre de maneira um pouco diferente.
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 240
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
somatório do produto de cada valor da máscara pelo valor da imagem sob a
máscara.
Fig. 9.10. Processo de convolução aplicado em imagens.
Por exemplo, suponha que a matriz de um filtro tem os valores:
987
654
321
www
www
www
Quando o ponto w5 casar no pixel p1, suponha que os valores abaixo da matriz
do filtro tenham valores:
987
654
321
zzz
zzz
zzz
O resultado da filtragem será: w1.z1 + w2.z2 + .... + w10.z10. Assim, a matriz do
filtro (chamada de máscara) atua como uma matriz de pesos. Para evitar perda
das características do filtro, a máscara deve ser sempre multiplicada por 1/∑iw.
Se o centro da máscara estiver numa posição (x,y) na imagem, o tom do pixel
posicionado em (x,y) será substituído por R. A máscara é então movida para a
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 241
próxima posição de pixel na imagem e o processo se repete. É prática 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 operação
anterior.
É preciso observar que essa operação exige algumas alterações 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 máscara não 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 extensão da imagem. Ou seja, a matriz imagem é
estendida, ganhando novos elementos em sua borda externa de forma que a
operação de convolução possa ser executada. É importante ressaltar que esses
novos elementos são inseridos apenas para fins de processamento. Eles não
farão parte da imagem original e nem da imagem de saída. 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 situação, 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
extensão é necessária para o processamento de toda a borda interna da
imagem. A quantidade de elementos a ser estendidos depende da dimensão do
filtro. Os elementos inseridos na extensão dependem do tipo de extensão. A
extensão mais simples é a fixa que preenche toda a borda externa com um valor
fixo. Se esse valor é zero, a extensão é chamada de nula. O preferível é que a
extensão seja preenchida com os valores da borda interna da imagem para
diminuir os “efeitos de borda” (pixels com cores não relacionadas com as cores
presentes no restante da imagem).
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 242
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 máscaras, os filtros lineares são os que têm as
maiores aplicações práticas. Como definido, os filtros lineares não acrescentam
novas freqüências à imagem. Vamos descrever esses filtros, exemplificá-los e
discutir a função deles em imagens. São eles: filtro passa-baixa, passa-alta e
passa-faixa.
1) Filtro Passa-Baixa
Teoricamente, esse filtro é gerado por uma função 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 função é deixar passar
as baixas freqüências (freqüências entre –w e w) e eliminar as altas freqüências.
Na prática, esse filtro tem um comportamento como o da Fig. 9.12c, onde ele, na
verdade, não elimina completamente as altas freqüências, mas as atenua.
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 243
a) b) c)
Fig. 9.12. a) Forma de um filtro passa-baixa ideal, b) matriz de um filtro passa-
baixa (filtro Box) e c) forma de um filtro passa-baixa real.
O resultado da aplicação de um filtro passa-baixa em uma imagem é seu
embaçamento. Em imagens, as freqüências estão associadas a regiões de
mudanças bruscas entre tons (como, por exemplo, uma passagem de branco
para preto). A atenuação dessas mudanças é interpretada por nosso sistema
visual como um embaçamento na imagem. A Fig. 9.13 ilustra essa idéia. A Fig.
9.13a mostra uma região de alta freqüência da imagem e a Fig. 9.13b apresenta
o resultado de uma filtragem passa-baixa.
a) b)
Fig. 9.13. Ilustração do efeito de um filtro passa-baixa: a) imagem original e b)
imagem resultante.
2) Filtro Passa-Alta
Esse filtro tem comportamento oposto ao passa-baixa e é gerado por uma
função que tem valor zero entre –w e w e 1 fora desse intervalo (Fig. 9.14a). O
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 244
filtro Laplaciano é um exemplo de um filtro passa-alta (Fig 9.14b). Como um filtro
passa-alta, sua função é deixar passar as altas freqüências e eliminar as baixas
freqüências. Na prática, esse filtro tem um comportamento como o da Fig. 9.14c,
onde ele, na verdade, não elimina completamente as baixas freqüências, 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 aplicação de um filtro passa-alta em uma imagem é o destaque
de seus contornos. A atenuação das baixas freqüências e intensificação das
altas provoca um realce nas regiões de fronteiras da imagem (regiões que há
mudanças bruscas entre tons claros e escuros). Uma ilustração do efeito da
aplicação desse filtro em uma imagem pode ser visto na Fig. 9.15.
a) b)
Fig. 9.15. Ilustração do efeito de um filtro passa-alta: a) imagem original e b)
imagem resultante.
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 245
3) Filtro Passa-Faixa
Esse filtro permite a passagem de freqüências dentro de um intervalo e cortam
as freqüências 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 função é deixar
passar freqüências específicas da imagem. Na prática, 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 passa-
faixa (filtro Prewitt – detector de linhas horizontais) e c) forma de um filtro passa-
faixa real.
O resultado da aplicação 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.
Além da extensão da imagem, na implementação de uma filtragem digital deve-
se considerar questões relacionadas a cores não-realizáveis. O processo de
filtragem pode, por exemplo, gerar uma cor negativa ou maior que 255. Esse
fenômeno é chamado de “cor não-realizável”. Assim, é preciso truncar o
resultado da filtragem para que as cores resultantes sejam sempre inteiras e
entre 0 e 255.
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 246
É possível também aplicar uma filtragem no domínio da frequência. Considere a
função 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 código 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, []);
9.5 Compressão de Imagens
Como uma imagem é apenas uma matriz de dados, qualquer algoritmo de
compressão de dados pode ser usado para gerar compressão no arquivo
imagem. No entanto, podemos usar características da própria imagem para
alcançar mais altas taxas de compressão.
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 247
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, regiões 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 não funciona bem, podendo até expandir o
espaço de armazenamento necessário para a imagem. No entanto, esse
algoritmo de compressão encontra-se implementado em uma variação do
formato BMP, o BMP_RLE (Run-Length Encoding).
Outro algoritmo que sofreu uma variação e foi implementado para imagens é o
Lempel-Ziv. O LZ77 foi criado por Abraham Lempel e Jacob Ziv em 1977, sendo
um algoritmo de compressão dinâmico. Ou seja, ele gera a codificação à medida
que lê o arquivo de entrada. Isso é diferente de outros algoritmos clássicos de
compressão de dados como o código de Huffman que, em sua versão clássica,
primeiro lê todo o arquivo, gerando a codificação. Somente depois, outra
varredura é feita para gerar a compactação.
Em 1984, Terry Welch propôs uma modificação no LZ77 (a qual foi chamada de
LZW) que o tornou mais eficiente. Essa modificação é, por exemplo,
implementada no formato GIF (Graphic Interchange Format) para
armazenamento de imagens de até 256 cores. O LZW é inicializado com um
dicionário básico de codificação e esse dicionário vai ganhando novos códigos à
medida que o arquivo vai sendo lido. Na transmissão ou armazenamento,
apenas o dicionário básico é enviado com o arquivo. Durante a
descompactação, o mesmo dicionário é formado automaticamente.
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 248
Uma forma mais nova para gerar compressão é através do uso de wavelets. A
decomposição wavelet gera um downsampling em cada nível que, por definição,
já diminui a quantidade de dados. Assim, é bastante natural que ela seja usada
como mecanismo para gerar compressão.
9.6 Processamento de Imagens no MatLab
O MatLab possui uma toolbox específica para o tratamento de imagens digitais.
Essa toolbox possui diversos comandos para as diversas técnicas de
processamento de imagens. Pelas próprias características do MatLab, ele se
torna bastante apropriado para trabalhar com imagens. Por exemplo, a estrutura
básica do MatLab é a matriz e uma imagem nada mais é do que uma matriz.
Uma imagem é lida no MatLab e armazenada como uma matriz do tipo uint8.
Esse tipo armazena valores inteiros de 0 a 255 (correspondendo aos tons da
imagem), mas não podem ser usados com operadores de números do tipo
double como adição, subtração, multiplicação e divisão. Para tanto, é preciso
primeiro converter a matriz imagem para o tipo double.
O seguinte código apresenta diversas funções do MatLab para imagens na
prática:
>> im = imread (‘lena.jpg’); % Leitura da imagem em tons de cinza
>> [lin, col] = size(im); % lê o número de linhas e colunas de uma imagem
% e armazena nas variáveis lin e col (variáveis quaisquer)
>> imshow (im); % visualização de imagens
>> im2 = double(im); % conversão da imagem para tipo numérico
>> im2 = im2 + 10; % aumento do brilho de uma imagem
>> im2 = uint8(im2); % volta ao tipo imagem
>> imwrite (im2, ‘nome.bmp’, ‘bmp’); %salva a nova imagem
O código acima apresenta apenas um exemplo de trabalho com imagens. No
caso, uma imagem em tons de cinza é carregada e armazenada na variável im.
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 249
Não há necessidade de indicar o tipo da imagem já que isso é lido direto do
cabeçalho da mesma. O MatLab aceita imagens do tipo bmp, jpg, tif, pcx e
alguns outros. A principal função desse código é a leitura do arquivo da imagem
com o comando imread. É possível esse comando ter dois argumentos de saída
quando queremos armazenar em uma variável 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) não há paleta de
cores. As matrizes R, G, B são armazenadas assim na imagem. Isso é tratado
no MatLab como uma matriz 3 dimensional. Cada dimensõ contém uma matriz
mxn que corresponde à matriz de um dos tons (exatamente na ordem RGB).
Para separar cada componente, o seguinte código 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 à variável r
>> g = im(:, :, 2); % matriz do segundo plano
>> b = im(:, :, 3); % matriz do terceiro plano
Nesse caso, observe que a leitura das dimensões da imagem deve ser feita
como:
>> [lin, col, plano] = size(im);
Ou seja, um terceiro parâmetro de saída 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:
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 250
rgb2grey: conversão de 24 bits para tons de cinza
im2bw: conversão para preto-e-branco (dado um ponto de corte)
rgb2ind: conversão de 24 bits para 256 cores
As dimensões 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 próximo
% bilinear = interpolação bilinear
% bicubic = interpolação bicúbica
% 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 funções histeq e imadjust provocam a equalização e a
especificação do histograma de uma imagem, respectivamente.
A filtragem de uma imagem pode ser conseguida com a função filter2. Observa-
se que a função 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 média (box)
>> im2 = uint8(round(filter2(h, im)));
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 251
>> imshow (im2);
No código acima, usamos a função fspecial para criar o filtro da média. O
parâmetro 5 indica a ordem do filtro (dimensões da matriz quadrada). A função
permite ainda a criação de filtros: gaussian, sobel, prewitt, laplacian, log,
average e unsharp. Cada um com sua particularidade quanto à ordem.
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 252
9.7 Exercícios
1. Diferencie os processos de amostragem e quantização.
2. Sobre filtros digitais:
a. Como os filtros se classificam de maneira geral?
b. Como se classificam os filtros lineares? Explique o resultado da aplicação
de cada um desses tipos a uma imagem.
3. O que representa o histograma de uma imagem e cite, pelo menos, duas
características 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 2 3
1 0 2
2 2 0
Qual a imagem resultante após a aplicação 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 diferenças à medida que as ordens se diferenciam mais e mais.
Explique os motivos das diferenças encontradas nos resultados.

Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 253
9.8 Bibliografia Complementar
1. Rafael Gonzalez, Richard Woods, Digital Image Processing, Ed. Prentice-
Hall, 2007.
2. Jonas Gomes, Luiz Velho, Computação Gráfica: Imagem, Sociedade
Brasileira de Matemática, 1996.
3. Hélio Pedrini, Análise de Imagens Digitais, Ed. Thomson, 2007.
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 254
10. Técnicas de Codificação de Áudio e Vídeo
Com a melhoria dos dispositivos digitalizadores, tem sido constante o aumento
na quantidade de dados a serem armazenados. Isso é mais sensível quando
falamos de dados relacionados com áudio ou imagens. Para imagens, o
problema agrava-se com vídeos que nada mais são do que seqüências de
imagens. Para reduzir o espaço necessário para armazenar tais arquivos (seja
para fins de preservação ou transmissão dos mesmos), algoritmos de
compressão de dados são usados. A compressão de dados é uma forma de
codificação que visa a reduzir o tamanho dos dados com ou sem perda de
informação. Caso haja perda, essa perda pode ser relevante ou não. Assim,
antes de começarmos a falar de codificação de áudio e vídeo, precisamos
entender os conceitos associados à teoria dos códigos.
10.1 Teoria dos Códigos
Codificação consiste no mapeamento de um alfabeto (alfabeto fonte) em outro
(alfabeto código). Cada símbolo ou palavra da fonte deve ser mapeada de forma
única ou não em um código. O código pode ser formado por uma seqüência de
símbolos do alfabeto fonte. Por exemplo, seja o alfabeto fonte S = {A, B, C, D}
que se deseja codificar usando bits (ou seja, o alfabeto código é apenas {0, 1}).
Uma codificação possível seria:
A = 00
B = 01
C = 10
D = 11
Os códigos podem ser classificados da seguinte maneira:
Códigos de comprimento variável ou de bloco
Os códigos de comprimento variável são aqueles que têm atribuídos códigos de
comprimento diferente a uma mesma palavra. Por exemplo, se A é codificado
como 0 ou como 01, temos um código de comprimento variável. Pode haver
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 255
diferentes comprimentos entre diferentes palavras de um código. Por exemplo,
se:
A = 0
B = 01
temos um código de bloco.
Os códigos de bloco, por sua vez, podem ser divididos em singulares ou não-
singulares. Nos códigos não-singulares todas as palavras código são distintas.
Por exemplo:
A = 10
B = 11
Se há repetição, nas palavras código, temos um código singular. Por exemplo:
A = 10
B = 10
C = 01
Os códigos não-singulares são divididos em unicamente decodificáveis ou não
unicamente decodificáveis. Os códigos unicamente decodificáveis não geram
ambigüidades na decodificação; o mapeamento de volta ao alfabeto fonte é feito
de forma única. Já os não-unicamente decodificáveis geram ambigüidades. Por
exemplo:
A = 10
B = 11
C = 01
é um código unicamente decodificável, enquanto:
A = 0
B = 1
C = 01
não é. Se o receptor recebe a seqüência “01”, ela pode ser decodificada em AB
ou C.
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 256
Por último, os códigos unicamente decodificáveis podem ser divididos em
instantâneos ou não-instantâneos. Os códigos são ditos instantâneos se sua
decodificação não precisa de informação futura. Por exemplo, o código:
A = 10
B = 100
C = 1000
é não instantâneo. Para decodificar uma seqüência de bits, precisamos ler o
próximo bit para saber se ele é zero ou um, denotando o encerramento ou não
da seqüência. Já o código:
A = 01
B = 001
C = 0001
é instantâneo; ao encontrarmos um bit 1 sabemos que o código acabou.
Essa classificação pode ser vista em resumo na figura abaixo:
Uma condição necessária e suficiente para um código ser unicamente
decodificável é que nenhuma palavra completa do código seja prefixo de outra
palavra qualquer.
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 257
Por exemplo, se:
A = 10
B = 01
C = ?
C não pode receber nenhum código que comece com 10 ou 01 para garantir que
o código seja unicamente decodificável.
A desigualdade de Kraft garante que um código é instantâneo. Se, para um
código de base r, com q palavras, cada palavra com comprimento Li, a
desigualdade
é satisfeita, então o código é dito instantâneo. Por exemplo, considere o código:
A = 0 comprimento Li=1
B = 01 comprimento Li=2
C = 11 comprimento Li=2
Número binário base r=2
Ou seja,
2-1
+ 2-2
+ 2-2
= 1
Isso garante que o código é instantâneo.
McMillan mostrou que, se um código satisfaz a mesma desigualdade, ele
também é unicamente decodificável.
Para um código, o comprimento médio é calculado como:
onde Li é o comprimento de cada uma das q palavras do código e Pi é a
probabilidade de cada palavra. Um código é dito compacto para uma fonte S,
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 258
se seu comprimento médio é menor ou igual ao comprimento médio de todos os
outros códigos unicamente decodificáveis para a mesma fonte S. Já a taxa de
compressão, C, para arquivos em geral, é medida como:
CompactadoArquivodooCompriment
OriginalArquivodooCompriment
C
___
___
=
10.2 Algoritmos de Compressão
Os algoritmos de compressão dividem-se em:
- Algoritmos com perda ou sem perda
- Algoritmos estáticos ou dinâmicos
O termo “perda” relaciona-se com perda de informação. Algum símbolo que
havia no arquivo original e foi perdido no arquivo compactado. Dependendo da
fonte e do nível de perda, essa perda pode não ser sensível ao ser humano. Por
exemplo, em termos de imagens, não percebemos a diferença entre tons muito
próximos, principalmente, se colocados em posições adjacentes em uma
imagem. Assim, se o ponto (i, j) em uma imagem tem tom de cinza 130 e o
ponto (i, j + 1) tem tom 131, nós não conseguimos ver essa diferença. Assim, os
dois pontos podem passar a ter o valor 130 sem que nosso sistema visual
perceba. No entanto, isso pode provocar um aumento na taxa de compressão de
um arquivo de imagem. Algoritmos baseados em wavelets e em quantização
vetorial são algoritmos de compressão com perda. Já algoritmos sem perda,
temos o código de Huffman, o Run-length e o Lempel-Ziv-Welch.
Algoritmos estáticos são algoritmos que geram toda a tabela de codificação
antes de, efetivamente, codificar o arquivo. Em geral, tais algoritmos são ditos
de dois passos: primeiro, eles lêem todo o arquivo a fim de gerar a tabela de
codificação e, em seguida, eles precisam ler o arquivo de novo para codificar o
arquivo. Algoritmos dinâmicos geram a codificação e codificam à medida que
eles lêem o arquivo de entrada. Assim, todo o processo é feito em um passo
apenas.
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 259
Vamos ver o exemplo de funcionamento de alguns algoritmos, começando com
algoritmos de compressão sem perdas.
10.2.1 Código de Huffman
Definido por David Huffman em 1952, é uma variação do algoritmo de Shannon-
Fano. O código de Huffman divide o conjunto de entrada em dois subconjuntos,
atribuindo 0 a um deles e 1 ao outro. Prossegue com a codificação da mesma
forma. O algoritmo completo pode ser resumido da seguinte forma:
• Organizam-se os símbolos em ordem decrescente de suas
probabilidades;
• Uma fonte reduzida é formada a partir dos 2 símbolos de menor
probabilidade;
• Continua o passo anterior até que só restem 2 símbolos;
• Atribui-se 0 a um dos símbolos e 1 ao outro, aleatoriamente;
• Continua atribuindo 0’s e 1’s até chegar aos símbolos iniciais.
Por exemplo, considere um arquivo com apenas 5 símbolos (a, b, c, d, e)
dispostos na mensagem M da seguinte forma:
M = a a a b b b c e c d
Primeiro, deve-se calcular a probabilidade de cada símbolo. 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 símbolos são listados em ordem decrescente de probabilidade. Os
símbolos de menor probabilidade vão sendo agrupados, gerando símbolos cuja
probabilidade é dada pela soma das probabilidades dos símbolos que os gerou
e criando, assim, as chamadas fontes reduzidas. O processo continua até que
só reste uma quantidade de símbolos igual à base a que se deseja gerar a
codificação (por exemplo, para uma codificação binária – base 2 – o processo
continua até que só restem dois símbolos). A figura abaixo representa o
processo:
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 260
A partir dos símbolos da última fonte reduzida, atribui-se 0 para um símbolo e 1
para o outro, aleatoriamente. Esse processo vai se repetindo pelas outras fontes
reduzidas até chegar aos símbolos da fonte. A partir da penúltima fonte, as
atribuições de 0’s e 1’s são feitas à direita dos símbolos, garantindo que
nenhuma palavra do código será prefixo de outra (tornando o código unicamente
decodificável):
No caso desse exemplo, a seguinte codificação é gerada:
a ↔ 10 (2 bits)
b ↔ 11 (2 bits)
c ↔ 00 (2 bits)
d ↔ 010 (3 bits)
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 261
e ↔ 011 (3 bits)
Assim, se no arquivo original, cada símbolo ocupava 8 bits, tínhamos uma
mensagem com 80 bits. Agora, apenas 16 bits são necessários para codificar a
mensagem (sem contar o espaço necessário para armazenar a tabela de
codificação). O comprimento médio desse código é 1,6.
Nesse exemplo, podemos observar algumas características do código de
Huffman:
1) O código gerado é unicamente decodificável e instantâneo.
2) A codificação atribuiu para os símbolos de maior probabilidade os menores
códigos (claro, observando, as condições para garantir o item 1 acima).
O código de Huffman é um algoritmo de compressão sem perda e estático. Sua
codificação é dita bottom-up já que podemos comparar a estrutura montada
como uma árvore invertida (a raiz embaixo) cuja codificação iria da raiz às
folhas. Existem algumas variações do código de Huffman como a versão para
multi-símbolos, o código de Huffman adaptativo, o truncado e a versão
modificada.
O problema do código de Huffman é que, dependendo da quantidade de
símbolos no código fonte, sua codificação pode atingir rapidamente grandes
quantidades de bits. Uma tabela de codificação deve ser anexada ao arquivo,
permitindo sua decodificação.
Uma variação no código de Huffman é a Codificação Aritmética. Ela funciona
basicamente da mesma forma que o código de Huffman, mas gera a codificação
baseando-se em intervalos ao invés de probabilidades. Cada símbolo da fonte
será representado por um intervalo, onde, à medida que o intervalo se torna
menor, o número de bits necessário para especificá-lo aumenta.
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 262
A codificação aritmética é utilizada em parte da compactação do formato JPEG
para imagens.
10.2.2 Run-length
O algoritmo de run-length é um dos mais simples. Ele é apropriado para alguns
tipos de arquivos em condições específicas. Por exemplo, imagens em preto-e-
branco 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 codificação é da forma:
<contador, símbolo>
onde o contador diz quantas vezes o símbolo se repete em seqüência. Por
exemplo, para a seqüência:
120 120 120 30 45 45 45 60
o resultado da codificação seria:
<3, 120> <1, 30> <3, 45> <1, 60>
Como dito antes, se o arquivo tem grandes repetições de um mesmo valor, essa
codificação pode se mostrar bastante eficiente. O run-length é implementado em
uma versão do formato BMP para armazenamento de imagens (o BMP_RLE).
10.2.3 Algoritmo de Lempel-Ziv-Welch
Criado por Abraham Lempel e Jacob Ziv, o LZ-77 é um algoritmo de compressão
dinâmico e sem perda. Em 1984, Terry Welch modificou o algoritmo, criando
uma versão mais eficiente que é a utilizada hoje em dia, o LZW.
No LZW, a codificação começa com um dicionário base o qual contém a
codificação dos símbolos da fonte. Esse dicionário vai ganhando novos símbolos
à medida que o arquivo original vai sendo lido e codificado.
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 263
Por exemplo, considere o dicionário base abaixo (sem nos preocuparmos com o
código que foi atribuído a cada símbolo da fonte):
X ↔ #1
Y ↔ #2
Z ↔ #3
W ↔ #4
e a seguinte mensagem M:
M = XYXZXYXW
Ao ler o primeiro símbolo da mensagem (X), o algoritmo verifica se esse símbolo
está no dicionário. Se estiver, atribui a codificação (#1). Em seguida, o próximo
símbolo (Y) é lido e codificado de acordo com o dicionário (#2). Agora, o
algoritmo verifica se XY (o símbolo anterior completo concatenado com o atual)
faz parte do dicionário. Se não faz parte, ele é acrescentado com uma nova
codificação (por exemplo, #5). O dicionário agora passa a ter essa entrada. O
processo prossegue, acrescentando novas entradas que passam a poderem ser
usadas na codificação. No entanto, apenas o dicionário base é armazenado
junto com a mensagem codificada. Ao decodificar, o dicionário base é utilizado e
é estendido da mesma forma que foi feito na codificação.
10.3 Algoritmos de codificação multimídia
Os algoritmos de compressão com perdas mais conhecidos utilizados em
multimídia são:
MPEG-1 – MPEG é a sigla de Moving Pictures Experts Group, que é um grupo
de pesquisadores que desenvolvem padrões para compressão de áudio e vídeo.
O MPEG-1 é o padrão original do MPEG e é capaz de codificar áudio e vídeo a
uma taxa de 1,5 Mbps.
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 264
O MPEG define três níveis ou camadas de compressão para áudio. Em cada
camada o nível de compressão é mais complexo e exige mais poder
computacional. A terceira camada (layer 3) se tornou bastante popular para a
compressão de áudio e atualmente é o que conhecemos como MP3, ou melhor,
MPEG Layer 3.
MPEG-2 – É um padrão de compactação de maior qualidade utilizado em
radiodifusão por satélite, por exemplo. Pode ser utilizado em transmissões a
taxas de 4 a 9 Mbps. Uma versão modificada do MPEG-2 é usada pelo padrão
HDTV e também nos DVDs.
MPEG-4 e derivados - O padrão 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 espaço.
Vamos detalhar mais sobre compressão de áudio e vídeo a seguir:
10.3.1 Codificação de Vídeo
A fim de avaliar sistemas de compressão de vídeo, os seguintes parâmetros
devem ser considerados quanto ao desempenho da compressão:
• Quantidade ou grau da compressão
• Qualidade da Imagem
• Velocidade da compressão e descompressão
É preciso analisar também a implementação em hardware ou software.
O grau da compressão é, geralmente, avaliado como uma razão entre os dados
de saída e os de entrada. Essa medida, no entanto, pode trazer problemas para
imagens (estáticas ou dinâmicas) quando temos uma matriz m versus n com
ainda uma quantidade de bits por pixel para representar a cor. Uma maneira
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 265
mais eficiente de especificar o total de compressão é determinar o número de
bits por pixel apresentado (displayed) necessário 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 compressão apenas, no entanto, não é medida suficiente para avaliar
um sistema. Outro fator igualmente importante é a qualidade da imagem gerada.
Nesse sentido, podemos dividir os algoritmos de compressão, de uma maneira
geral, em com perda ou sem perda. Nos algoritmos de compressão sem perda,
não há necessidade de avaliar a qualidade da imagem já que ela é exatamente
igual à imagem original. Nesse caso, porém, deve ser feita a transmissão de
todos os pixels da imagem. Algoritmos de compressão sem perda, normalmente,
geram uma quantidade maior de dados a serem transmitidos.
Algoritmos de compressão com perda provocam alguma mudança na imagem.
O objetivo, porém, é fazer com que essa mudança não seja perceptível pelo
usuário. Algoritmos de compressão com perda podem inserir diversos artefatos
na imagem e não é fácil quantificar o desempenho desses algoritmos.
Normalmente, essa avaliação é feita com algum critério subjetivo. Tais
algoritmos ainda trazem um outro problema a ser tratado: a velocidade de
compactação e descompactação. Para vídeo, esse é um problema fundamental,
pois são milhares de imagens (quadros ou frames) que são
compactados/descompactados. Se, para imagens, uma
compactação/descompactação de 1 segundo é considerada rápida, para vídeos
essa é uma taxa inaceitável. Uma taxa mais rápida está associada ao algoritmo
utilizado e a como esse algoritmo é implementado (hardware ou software). Na
maioria dos casos, hardware específico é necessário para conseguir
implementar os algoritmos com a máxima eficiência.
2
Saída do compactador.
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 266
Os algoritmos de compressão buscam reduzir a quantidade de elementos
redundantes no arquivo. Em imagens de vídeo digital essa redundância pode ser
encontrada de diferentes formas:
• Algumas áreas do frame possuem a mesma cor que se espalha por mais de
um pixel (redundância espacial);
• Quando a cena ou parte dela contém predominantemente objetos orientados
verticalmente existe grande probabilidade que duas linhas adjacentes sejam
as mesmas (redundância espacial);
• Imagens onde alguns pixels se repetem por diversos frames (redundância
temporal).
Algoritmos de compressão podem explorar essas características de redundância
a fim de conseguirem uma melhor taxa de compressão.
Outros elementos podem ser considerados pelo algoritmo de compressão. Por
exemplo, quanto à resolução de cor, o sistema visual humano tem certas
limitações quanto à percepção de cores. Não conseguimos diferenciar cores que
estão muito próximas no espectro. Necessitamos de uma diferença 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 distância 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 compressão (observamos que essa mudança
provoca perdas na imagem – mesmo elas não sendo perceptíveis, são
mudanças na imagem original).
As principais técnicas de compressão de vídeo são baseadas em:
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 267
• Color Look-Up Table: o pixel na matriz da imagem corresponde na
verdade a um índice para uma tabela que aloca as cores reais.
• Codificação Run-length: já explicada anteriormente.
• Técnicas de interpolação: compressão através de interpolação atua a
nível de pixel e consiste de transmitir um subconjunto de pixels, usando
técnicas de interpolação para reconstruir os pixels intermediários.
Interpolação é sugerida para ser usada em sistemas baseados no modelo
YIQ (como o NTSC) ou YUV (como o Pal).
• Técnicas preditivas: técnicas de compressão preditivas são baseadas no
fato que podemos armazenar um elemento anterior (como um frame, por
exemplo) e usar essa informação para predizer qual o próximo elemento.
o DPCM: a forma mais simples de compressão preditiva é chamada
de PCM diferencial (ou DPCM, onde PCM = pulse code
modulation). Em DPCM, pixels adjacentes são comparados e
apenas a diferença entre eles é transmitida. Há uma grande
probabilidade de alta compressão por esse método porque pixels
adjacentes, em geral, têm cores muito próximas. Assim, espera-se
uma diferença pequena que pode ser transmitida em uma
quantidade menor de bits. Um problema de DPCM ocorre quando
a diferença entre os pixels ultrapassa o limite de representação da
quantidade de bits adotada pelo sistema. Por exemplo, suponha
um sistema que use apenas 4 bits para armazenar/transmitir a
diferença entre tons. Se há uma região de mudança de preto para
branco, essa mudança não poderá acontecer entre pixels
adjacentes, pois não haveria como representá-la. Seria necessário
um certo número de pixels intermediários para conseguir a
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 268
representação. Esse efeito é chamado de slope overload. Esse
efeito pode provocar um embaçamento 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 necessária para
armazenar a diferença entre os pixels. O uso de ADPCM pode
provocar ruídos nas regiões de alta freqüência.
• Técnicas de codificação por transformadas: uma transformada é uma
técnica que converte um conjunto de dados de um domínio para outro
mais apropriado para a aplicação. As transformadas, em geral, são
reversíveis. Uma das transformadas mais utilizadas para compressão de
imagem e vídeo é a Transformada Discreta do Cosseno (DCT).
o DCT: A DCT é executada em blocos adjacentes de pixels (em
geral, 8x8). Assim, 64 pixels por vez são processados pela DCT. A
DCT é calculada como:
onde
Sendo a inversa calculada como:
A DCT está relacionada com a DFT; a DFT, de fato, é um passo no
cálculo da DCT para uma seqüência. A DCT, no entanto, tem
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 269
propriedades de compactação de energia, com apenas uns poucos
coeficientes da transformada representando a maior parte da
energia da seqüência. Essas propriedades fazem a DCT bem
apropriada para compressão de dados. Por causa dessa
compressão, é possível reconstruir um sinal a partir de apenas
alguns coeficientes da DCT.
Apesar de serem relativamente fáceis de implementar em qualquer
linguagem de computador, a compressão de imagens demanda um
grande poder de processamento e por isso precisa ser otimizada
ao máximo. O uso da DCT em imagens grandes, apesar de
apresentar ótimos resultados, exige um processamento muito
grande. Por isso na prática a estratégia 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 otimização:
• Otimização 1: a imagem a ser tratada deve ser dividida em
blocos menores facilitando a computação das
transformadas. Outra justificativa para esta abordagem é
que apesar de terem bastante correlação com os vizinhos
próximos, existe pouca ou nenhuma correlação entre pontos
distantes de uma mesma imagem. Os ganhos de
processamento com esta abordagem suplantam em muito
as perdas em termos de compressão.
O cálculo das funções de cosseno, por ser uma função
transcendental, também exige bastante poder de processamento.
Se verificarmos a fórmula da transformada discreta de cosseno
veremos que podemos pré-calcular todos os valores de cosseno a
serem utilizados, e depois disto apenas realizar operações
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 270
aritméticas de soma e multiplicação. Isso nos leva a segunda
regra:
• Otimização 2: os cossenos utilizados devem ser pré-
calculados e armazenados, realizando-se assim apenas
operações aritméticas ao se calcular a fórmula da
transformada.
Ao aplicar a transformada discreta de cosseno, os coeficientes
mais significativos se acumulam no início do vetor (ou matriz) dos
dados, ficando o restante com valores muito pequenos e
carregando pouca informação. Este tipo de distribuição já é
suficiente para que uma técnica de redução de redundância (como
os algoritmos LZ77, LZ78 ou LZW) ou uma codificação otimizada
(como codificação de Huffman ou codificação aritmética) produzam
melhores resultados do que na imagem ou nos dados originais.
Entretanto, por trabalharmos sempre com uma precisão finita nas
representações numéricas utilizadas, acabamos por ter uma perda
nos dados. Portanto, mesmo sem aplicar nenhuma forma de
quantização, a compressão usando transformada discreta de
cosseno é uma compressão com perdas.
Entretanto, a forma mais comum e que gera melhores resultados, é
a aplicação de uma operação de quantização nos dados gerados
pela transformada, e armazenar apenas os dados quantizados.
Essa quantização permite uma maior eficiência das técnicas de
codificação e eliminação de redundância utilizadas. Algumas
formas de quantização normalmente utilizadas com a transformada
discreta de cosseno são:
• Eliminação dos componentes menos significativos
(determina-se um patamar de valor ou mesmo de posição
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 271
na matriz de resultados da transformada, e elimina-se ou
substitui-se esses valores por 0).
• Divisão inteira dos valores por um coeficiente de
quantização fixo (assim pode-se usar menos dígitos, ou bits,
para se representar os valores).
• Divisão inteira por uma matriz de coeficientes de
quantização (Esta técnica é a empregada pela maioria dos
padrões de compressão de dados, pois é mais flexível e
permite que se ajuste a matriz a qualidade desejada da
imagem).
• Codificação estatística: como o código de Huffman ou a codificação
aritmética.
Dentre os formatos mais utilizados para compressão de áudio e vídeo, temos:
• MPEG (Moving Picture Expert Groups)
• DiVX
Vamos detalhar cada um desses.
MPEG
Na década 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 padrões para o vídeo digital. Foram definidos
três itens a serem desenvolvidos:
1. Vídeo 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);
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 272
3. Imagens em movimento e áudio associados a uma taxa de 60 Mbps (mais
tarde reduzido para 40 Mbps e então cancelado).
MPEG 1 era orientado como imagem digital armazenada em Mídia de
armazenagem digital (DSM - Digital Storage Media). MPEG-2 foi orientado como
broadcast. MPEG-3 para televisão de alta-definição (HDTV). Enquanto os
padrões se desenvolviam ficou claro que as técnicas empregadas nos padrões
poderiam ser usados em qualquer bit-rate (quantidade de bits necessários para
codificar um segundo de informação, seja esta vídeo, áudio ou ambos). Assim,
os títulos dos que incluíam a taxa de transmissão 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 vídeo, áudio, ou qualquer outra informação para um serviço 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 vídeo 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 sincronização.
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 não se
propaguem além das fronteiras de um único pacote. Geralmente, quanto maior o
pacote, mais suscetível ele é aos erros de bit. Por outro lado, agrupando os bits
em pacotes cria um maior tráfego para acomodar os cabeçalhos dos pacotes.
Geralmente quanto menores os pacotes, maior o tráfego. Assim, existe um
trade-off entre escolher o tamanho do pacote e sua resiliência e eficiência. Pode-
se considerar, portanto, que formar pacotes é uma terceira função para os
MPEG Systems.
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 273
Na maioria dos casos, decodificadores necessitam de Informações Específicas
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 compõem um serviço
de áudio e/ou vídeo.
3) Empacota os bits em grupos.
4) Provê informações específicas chamadas PSI.
Nos MPEG-2 Systems, um programa é definido como o conjunto de Fluxos
Elementares significativos, como áudio e vídeo, que têm a mesma base de
tempo.
Um arquivo MPEG é um arquivo digital contendo vídeo e áudio digitais
codificados seguindo determinados padrões de compressão e armazenados em
um dado formato específico. O comitê ISO especifica separadamente o
tratamento de áudio e de vídeo, permitindo streams sem áudio, por exemplo.
Um filme é uma seqüência de blocos. Cada bloco do filme contém seções
individuais para o vídeo e para o áudio. A sincronização entre o vídeo e o áudio
é feita através de marcadores de tempo que são fixados durante a codificação
nos identificadores de blocos.
O padrão MPEG especifica 3 tipos de quadros comprimidos no arquivo de saída.
Nos quadros I (Intraframe) somente se aplicam algoritmos de redução de
redundância espacial. Nos quadros P (Predicted) e B (Bidirectionally Predicted)
também se aplicam algoritmos de redução de redundância temporal. No caso
dos quadros B a predição de movimento é bidirecional, ou seja, é feita com
quadros no passado e no futuro em relação ao quadro sendo codificado.
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 274
Os quadros apresentam diferentes taxas de compressão, 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 redundância espacial.
Quanto maior a compressão, maiores as perdas de qualidade sofridas nos
quadros, por isso há a necessidade de intercalar quadros I de tempos em
tempos para permitir a “restauração” da qualidade do sinal e também acesso
aleatório aos quadros do filme (Fig. 10.1). Uma análise bilateral (observando
frames passados e futuros) é importante para permitir que frames futuros sejam
usados em uma predição mais correta.
Tabela 10.1. Taxa de compressão de cada tipo de quadro no MPEG.
Quadro Taxa de Compressão
I 10-20:1
P 20-30:1
B 30-50:1
Fig. 10.1. Disposição dos quadros no formato MPEG.
O padrão publicado pela ISO especifica o formato final do arquivo comprimido,
deixando margem para que diferentes abordagens possam ser utilizadas, com
diferentes compromissos entre compressão e complexidade computacional.
Além disso, também fazem parte do padrão:
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 275
• Uso da Transformada Discreta do Cosseno (DCT), seguida de
Quantização e Run Length Encoding (RLE) para redução da redundância
espacial de cada quadro do filme;
• Uso de Motion Estimation e Motion Compensation (MEC) preditiva e
interpolativa para redução de redundância temporal entre quadros e
• Uso de Codificação de Huffman ao final do processo, gerando a
compressão efetiva.
A DCT faz uma transformação na imagem, mudando o domínio de
representação da mesma. Este processo não introduz perdas de qualidade na
imagem, sua utilização se dá porque ela permite uma representação mais
compacta da imagem, facilitando a compressão.
O uso da DCT faz com que as maiores frequências 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 conversão
de uma imagem do formato RGB para o formato YCbCr (mais indicado para
vídeo). Após a aplicação da DCT nesse bloco da imagem, temos como resultado
a matriz apresentada na Fig. 10.2-direita.
Fig. 10.2. Aplicação da DCT: (esquerda) região 8x8 da imagem em YCbCr e
(direita) o resultado da aplicação da DCT nessa região.
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 276
Após a aplicação da DCT, uma quantização é feita tomando uma matriz de
quantização fixa (Fig. 10.3-esquerda). Cada valor da matriz gerada pela DCT é
dividido pelo valor correspondente na máscara de quantização 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 quantização e (direita) resultado da quantização
da matriz DCT da Fig. 10.2-direita.
Observamos nessa matriz quantizada uma grande presença de valores zero.
Assim, podemos agrupá-los, usando, por exemplo, uma codificação 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 aplicação da codificação Run-
Length.
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 277
Existem diferentes formas de se detectar movimento de objetos numa seqüência
de imagens. O padrão MPEG adota algoritmos de MEC baseados em
casamento de blocos. Este algoritmo consiste na procura de um bloco de
tamanho fixo (16x16 pixels no padrão MPEG) de um quadro em uma janela de
busca em um quadro seguinte (ou anterior). Esta janela pode ser de tamanho
variável, mas o tamanho usual é de 30x30 pixels. A Fig. 10.5 mostra um
exemplo de tal técnica.
Fig. 10.5. Aplicação de Motion Estimation.
O padrão MPEG usa uma variação da DCT chamada MDCT (Modified DCT):
∑ −=+++=
−
=
1
0
1
2
,...,1,0)),12](
2
12[
2
cos(
n
k
ki
n
ii
n
k
n
xS
π
E a sua inversa, conhecida como IMDCT é dada por:
1,...,1,0,))12](
2
12[
2
cos(
12/
0
−=+++= ∑
−
=
nki
n
k
n
Sx
n
i
ik
π
DivX
O DivX é um codec de vídeo criado pela DivX, Inc. Ele foi produzido para ser
usado em compactação de vídeo digital, deixando os vídeos com qualidade,
apesar da alta compactação, utilizada para ocupar menos espaço no Disco
rígido. Para alcançar tal compactação é necessário muito processamento, o que
pode fazer com que um computador tecnologicamente defasado demore para
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 278
realizar a operação ou tenha dificuldades para realizar a exibição. O DivX é
compatível com Windows, Linux, Solaris e Mac OS X.
Atualmente, os arquivos DivX estão amplamente presentes nas redes dos
programas de P2P, devido ao seu reduzido tamanho e à ótima qualidade.
O método de compactação DIVX funciona como um MP3 para vídeo. Mas, ao
contrário do MP3, que apaga sons sobrepostos que nosso cérebro não
conseguiria reconhecer, o DIVX torna repetitivas as imagens que não se
modificam no decorrer dos frames (quadros) que formam o vídeo. Simplificando:
tomando-se uma cena onde a câmera é estática e fundo não se modifica, o
codec DIVX grava um único frame dessa imagem e repete-o até a imagem
sofrer alguma alteração. Na mesma cena, caso haja uma pessoa andando,
somente os pixels em que sua imagem se sobrepõe são modificados. O resto da
cena pode ser considerado, grosseiramente, como uma foto estática ao fundo do
vídeo. Desta forma, são guardados muito menos dados pelo vídeo 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 vídeo em formato não compactado para um em DivX
é preciso comprar o DivX Codec que é o software responsável por esta tarefa,
porém, se seu objetivo é apenas o de assistir os vídeos já compactados em
DivX, é possível se fazer o download gratuito do tocador (player) no site oficial
da DivX, Inc ou em quaisquer sites de downloads.
10.3.2 Codificação de Áudio
Um dos primeiros sistemas desenvolvidos para compressão de áudio usa
métodos parecidos com o algoritmo de run-length. A idéia da compressão usada
em arquivos VOC é a redução dos chamados “blocos de silêncio”. A vantagem é
a redução do tamanho a até um quarto do tamanho original. No entanto, como
desvantagens têm a degradação no som, não é possível uma conversão para
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 279
outro formato e só é aplicado a arquivos amostrados com baixas taxas. Blocos
de silêncio são marcadores que contêm um valor de duração do tempo que
representa a extensão do silêncio ou quase silêncio.
Silêncio é definido como a amplitude da forma de onda que não ultrapassa a
janela de silêncio. Uma extensão de silêncio menor que a janela é considerada
muito curta para merecer a conversão para bloco de silêncio. Os Blocos de
silêncio não existem na maioria dos formatos de arquivos de áudio. Outro
problema é que pode haver uma confusão do silêncio com o início de um som
(como um fricativo inaudível - /f/, /s/, /sh/) (Fig. 10.6).
Fig. 10.6. Som fricativo inaudível que pode ser confundido com um silêncio por
ter baixas amplitudes em parte dele.
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 280
MP3
MP3 é uma abreviação de MPEG 1 Layer-3 (camada 3). Trata-se de um padrão
de arquivos digitais de áudio estabelecido pelo Moving Picture Experts Group
(MPEG), grupo de trabalho de especialistas de Tecnologias da Informação
vinculado ao ISO e à CEI. As camadas referem-se ao esquema de compressão
de áudio do MPEG-1. Foram projetadas em número de 3, cada uma com
finalidades e capacidades diferentes. Enquanto a camada 1, que dá menor
compressão, se destina a utilização em ambientes de áudio profissional
(estúdios, emissoras de TV, etc) onde o nível de perda de qualidade deve ser
mínimo devido à necessidade de pré-processamento, a 3 se destina ao áudio
que será usado pelo cliente final. Como se espera que esse áudio não sofrerá
novos ciclos de processamento, a compressão pode ser menos conservadora e
aproveitar melhor as características psicoacústicas do som limitando-se apenas
pela qualidade desejada para o ouvido humano.
A compressão típica da camada 1 é de 2:1 enquanto a da 3 é de 10:1. É
importante lembrar que essa diferença da compressão não tem nada a ver com
uma camada ser mais avançado que o outro tecnologicamente, mas sim com o
objetivo da aplicação 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 compressão tanto de áudio como de vídeo o
MP3 responde apenas pela compressão de áudio do MPEG-1.
As taxas de compressão alcançadas pelo MP3 chegam a até 12 vezes,
dependendo da qualidade desejada. Para fazer isso o MP3 utiliza-se, além das
técnicas habituais de compressão, de estudos de psico-acústica, sendo que
estes permitem aproveitar-se das limitações e imperfeições da audição humana.
A utilização dos limites da audição humana baseia-se em três princípios básicos:
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 281
• Faixa de freqüência audível dos seres humanos;
Faixa de freqüência audível humana: O ouvido humano, devido às suas
limitações físicas, é capaz de detectar sons em uma faixa de freqüência
que varia de 20 Hz a 20 KHz, sendo que estes valores podem variar de
indivíduo para indivíduo e também com a idade (com o envelhecimento
perdemos a capacidade de ouvir freqüências mais altas). Assim, não faz
sentido armazenar dados referentes a sons fora desta faixa de
freqüência, pois ao serem reproduzidos, os mesmos não serão
percebidos por um ser humano. Esta é a primeira limitação da audição
humana do qual o sistema MP3 faz uso para alcançar altas taxas de
compressão. De acordo com o Teorema de Nyquist, para garantir a
reprodução de um sinal, temos de amostrá-lo pelo menos a duas vezes
sua freqüência máxima. Ou seja, neste caso, como a freqüência máxima
de interesse é 20 KHz, basta amostrar a 40 KHz. Utiliza-se 44.100 Hz
como taxa de amostragem, pois leva-se em consideração 10% de
tolerância e busca-se um valor produto dos quatro primeiros números
primos (Obs: (2x3x5x7)^2 = 44100). Dessa forma, esta taxa de
amostragem funciona como um filtro passa-baixa, que remove todos os
componentes de freqüência fora da faixa de interesse, neste caso, acima
de 20 Khz.
• Limiar de audição na faixa de freqüência audível;
Limiar de audição na faixa de freqüência audível: Outro fator utilizado pela
codificação MP3 é a curva de percepção da audição humana dentro da
faixa de freqüências audíveis, ou Limiar de Audição. Apesar da faixa de
audição humana variar entre 20Hz e 20KHz, a sensibilidade para sons
dentro desta faixa não é uniforme. Ou seja, a percepção da intensidade
de um som varia com a freqüência em que este se encontra. Assim, o
MP3 utiliza-se desta propriedade para obter compressão em arquivos de
áudios. Esta abordagem é bastante intuitiva, sendo que o que se faz é
descartar amostras que se encontrem abaixo deste limiar.
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 282
• Mascaramento em freqüência e mascaramento temporal.
Mascaramento em freqüência e mascaramento temporal: Por fim, uma
última propriedade da audição humana ainda é utilizada pelo método é o
chamado mascaramento auditivo, ou “audiabilidade diminuída de um som
devido à presença de outro”, podendo este ser em freqüência ou no
tempo. O mascaramento em freqüência ocorre quando um som que
normalmente poderia ser ouvido é mascarado por outro, de maior
intensidade, que se encontra em uma freqüência próxima. Ou seja, o
limiar de audição é modificado (aumentado) na região próxima à
freqüência do som que causa a ocorrência do mascaramento, sendo que
isto se deve à limitação da percepção de freqüências do ouvido humano.
O mascaramento em freqüência depende da freqüência em que o sinal se
encontra, podendo variar de 100 Hz a 4 KHz. Em função deste
comportamento, o que o método de compressão do MP3 faz é identificar
casos de mascaramento em freqüência e descartar sinais que não serão
audíveis devido a este fenômeno. Além do mascaramento em freqüência,
temos ainda o mascaramento no tempo, sendo que este ocorre quando
um som forte é precedido por um mais fraco que se encontra em uma
freqüência próxima à do primeiro. Se o intervalo de tempo entre os dois
for suficientemente pequeno, este som mais fraco não será percebido
pela audição humana. Se um som é mascarado após um som mais forte,
temos o chamado pós-mascaramento. No caso de um som ser
mascarado antes do som mais forte, temos o que chamamos de pré-
mascaramento. O pré-mascaramento existe só por um curto momento,
cerca de 20ms, enquanto que o pós-mascaramento tem efeito por até 200
ms. O método de compressão do MP3 utiliza-se, portanto, deste
fenômeno, identificando casos onde o mesmo ocorre e descartando sons
que seriam mascarados, o que permite reduzir a informação de áudio
consideravelmente sem mudança audível.
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 283
A Thomson Consumer Electronics controla o licenciamento da patente do
MPEG-1/2 Layer 3 nos poucos países que reconhecem patentes de software,
tais como Estados Unidos da América e Japão.
Em setembro de 1998, o Instituto Fraunhofer enviou um comunicado a diversos
desenvolvedores de programas MP3, exigindo cobrança de royalties por essa
patente. O comunicado informava que o licenciamento era necessário para
"distribuir e/ou vender decodificadores e/ou codificadores", e que os produtos
não licenciados infringiam os "direitos sobre a patente do Instituto Fraunhofer e
da Thomson. Para produzir, vender e/ou distribuir produtos que se utilizem do
padrão MPEG-1/2 Audio Layer 3 e, portanto, de suas respectivas patentes, é
necessário obter uma licença".
O sistema empregado pelo MP3 também possibilita transmissões por streaming,
onde o arquivo pode ser interpretado na medida em que é feito o download ou
em que é baixado (não é necessário que o arquivo chegue inteiro para iniciar a
reprodução).
10.4 Implementações no MatLab
10.4.1 Processamento de Vídeo no MatLab
O MatLab tem algumas funções para processamento de vídeo, trabalhando mais
facilmnte com arquivos do tipo AVI (Audio Vídeo Interleave), aceitando alguns
CODECs (codificadores/decodificadores) mais conhecidos como o XViD. É
possível abrir arquivos MPEG também.
Funções de Video file import/export:
• aviread – Lê arquivo de vídeo (AVI)
• aviinfo - Retorna informação sobre o arquivo AVI
• avifile - Cria um novo arquivo AVI
• mmreader – Lê frames de vídeo de um arquivo multimídia (como MPEG)
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 284
• mmfileinfo - Retorna informação sobre o arquivo multimídia
• movie2avi – Cria filme AVI a partir de um filme MATLAB (.mov – não do
Quicktime)
Exemplo:
>> info = aviinfo('video1.avi')
info =
Filename: 'D:MATLABR2008bworkvideo1.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 informações:
>> info.NumFrames
ans =
13
>> h = info.Height;
>> w = info.Width;
A leitura do arquivo de vídeo é feita pelo comando aviread (arquivo AVI):
>> mov = aviread('video1.avi');
É possível acessar um frame específico do arquivo de vídeo:
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 285
>> mov = aviread('video1.avi', 3);
No caso, o 3º frame está sendo lido. Mas o arquivo de saída continua sendo um
arquivo de vídeo:
>> whos
Name Size Bytes Class Attributes
mov 1x1 230648 struct
Observe que a saída 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 exibição do vídeo podemos usar o comando movie:
>> movie(mov, repetições, info.FramesPerSecond);
O parâmetro repetições indica quantas vezes o vídeo será repetido.
A conversão de imagens para frame é feita com o comando im2frame:
>> mov1(i) = im2frame(imagem, map);
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 286
Isso faz com que imagem seja inserida como frame i do arquivo de vídeo mov1
com mapa de cores especificado em map. Variando i criamos o arquivo de vídeo
a partir de diversas imagens.
O MatLab permite também o processamento de vídeo usando o módulo
Simulink. As funções (para imagem e vídeo) podem ser acessadas através do
munu Vídeo and Image Processing Blockset conforme a Fig. 10.7.
Fig. 10.7. Acesso aos blocos de processamento de imagem e vídeo pelo
Simulink.
As possíveis entradas para o sistema são acessadas pelo item sources
enquanto as saídas podem ser geradas pelos blocos sinks (Fig. 10.8).
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 287
Fig. 10.8. Entrada e saída de dados multimídia via Simulink.
A Fig. 10.9 apresenta um esquema simples com um vídeo exemplo do MatLab
inserido e apresentado. Para executar a simulação, basta clicar em Simulation-
>Start (tecla de atalho: CTRL+T).
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 288
Fig. 10.10. Sequência de blocos do Simulink para apresentar um vídeo.
Outros blocos podem ser colocados entre a entrada e saída para gerar
processamento do vídeo como na Fig. 10.11 (uma rotação) e na Fig. 10.12 (uma
transformação geométrica).
Fig. 10.11. Execução de uma rotação em um vídeo
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 289
Fig. 10.12. Execução de uma transformação geométrica em um vídeo
10.4.2 Processamento de Áudio no MatLab
Um som pode ser gravado com a função wavrecord que gera um arquivo do tipo
wav:
>> som = wavrecord (16000, 8000, 1, ‘double’);
Esse comando grava 16000 amostras com uma taxa de amostragem de 8 kHz e
o armazena no vetor som do tipo double. O parâmetro ‘1’ indica que a gravação
é feita em apenas um canal (mono) e não em estéreo. Para tocar o som, basta
usar o comando soundsc:
>> soundsc (som);
Às vezes, é importante informar a frequência de amostragem:
>> soundsc (som, 8000);
O arquivo de som pode ser plotado em um gráfico como um vetor comum:
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 290
>> plot (som);
É comum precisarmos trabalhar com o arquivo de som normalizado. Para tanto,
usamos:
>> som = som/max(abs(som));
Isso não 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 frequência de amostragem do sinal é salva na variável
fs. O comando wavread não permite que o parâmetro de entrada seja uma
variável 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 através de filtros como o
processamento de sinais, usando a função filter:
>> y = filter (b, a, som);
onde a e b são os coeficientes do filtro a ser aplicado (para filtros FIR, a = 1).
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 291
Exemplo 1:
>> som = wavread(‘a_casa.wav’);
>> plot (som);
Calculando a transformada de Fourier:
>> som_spec = fft (som, 256);
>> plot (abs(som_spec));
Um gráfico em formato mais padrão pode ser obtido com as baixas freqüências
centralizadas:
>> plot (abs(fftshift(som_spec)));
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 292
Suponha um filtro IIR com função de transferência: 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 serão 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:
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 293
Fig. 10.13. (coluna da esquerda) Sinal original e sua transformada e (coluna da
direita) sinal filtrado e sua transformada.

Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 294
Exemplo 2: Como um exemplo da dificuldade de analisar um sinal que muda
constantemente, vamos construir um sinal “ágil na frequência” (um que muda
rapidamente suas características de frequência):
>> 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 gráfico representa mesmo o sinal que criamos? Vamos observar
melhor o sinal quebrando ele em janelas e plotando-as como uma “queda
d’água” (waterfall) para ver como as freqüências mudam pelo tempo.
>> s = spectrogram(z, 1024);
>> waterfall(abs(s)');
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 295
A plotagem em “queda d’água” mostra cerca de 30 pedaços no tempo, cada um
correspondendo a uma FFT-512 e indicando claramente que diferentes
componentes de frequência estão presentes durante cada período de tempo.
Veja o resultado para diferentes FFTs de N-Pontos:
>> s = spectrogram(z, 256);
>> waterfall(abs(s)');
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 296
>> s = spectrogram(z, 8192);
>> figure, waterfall(abs(s)');
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 297
Exemplo 3: Criando música no MatLab:
Primeiro, vamos crier uma onda senoidal de amplitude A = 1, com uma
frequência de 523,25 Hz (correspondente a um pitch C em um piano; uma oitava
acima do C médio):
cnote = sin(2*pi*523.25*(0:0.000125:0.5));
Esse vetor cnote contém amostras da onda senoidal de t = 0s a t = 0.5s, as
amostras são separadas de 0.000125s (que é o intervalo de amostragem Ts).
Note que esse intervalo de amostragem corresponde à frequência 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 frequência de diferentes notas (apresentadas na
tabela a seguir): http://www.dolmetsch.com/musictheory27.htm.
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 298
Usando essa informação, podemos criar diferentes notas no MatLab. Observe
que existem diferentes oitavas da mesma forma que existem diferentes teclas
em um piano. Aqui estão 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 música faça:
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 música use:
song = [line1, line2];
e toque com sound() ou soundsc().
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 299
10.5 Exercícios
1. Implemente no MatLab o Código de Huffman e aplique-o para compressão
do arquivo de voz sentence.wav.
2. Como podemos avaliar a qualidade de um algoritmo de compressão para
imagens estáticas ou dinâmicas (vídeos)?
3. No mesmo arquivo de voz, implemente a técnica DPCM e apresente qual a
maior diferença entre tons adjacentes que ela possui. Nesse caso, você acha
que o algoritmo seria eficiente para compressão ou não?
4. No MatLab, capture dois frames próximos do arquivo vipmen.avi e calcule
com PSNR a diferença entre os frames.
5. Usando o MatLab (funções dct2.m e idct2.m), calcule através do uso do
PSNR a perda provocada pelo uso da DCT na imagem lena.bmp.
6. Cite os princípios básicos de funcionamento da compressão MP3, definidos
pela psicoacústica.

Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 300
10.6 Bibliografia Complementar
1. A.C.Bovik, The Essential Guide to Video Processing, Academic Press, 2009.
2. C.Wootton,A Practical Guide to Video and Audio Compression, Focal Press,
2005.
3. D.Hankersson ,Introduction to Information Theory and Data Compression,
CRC Press, 2003.
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 301
11. Processamento de Voz
O som é uma vibração que propaga pelas moléculas do ar até nossos ouvidos.
De uma forma geral, os sons são variações na pressão do ar ao longo do tempo
em freqüências que podemos ouvir. A voz é um tipo específico de som. Logo,
um som pode ser uma voz ou não. A voz consiste de um conjunto de sons que
podem ser gerados pelo ser humano. O sinal de voz pode ser plotado (Fig.11.1)
como uma forma de onda na qual podemos observar valores positivos e
negativos. Isso acontece porque a radiação de voz da boca faz com que a
pressão do ar seja temporariamente maior ou menor que a pressão do ar do
ambiente.
Fig. 11.1. Exemplo de plotagem de um sinal de voz.
O propósito primário da voz é comunicação. De acordo com a Teoria da
Informação conforme definida por Claude Shannon [Shannon, 1945], a voz pode
ser representada em termos de conteúdo ou informação. Outra maneira de
caracterizar o sinal de voz é como sendo uma onda acústica que carrega a
informação. Para o processamento de voz, o mais comum é entendermos o sinal
de voz como sendo uma onda ou algum modelo paramétrico como discutiremos
posteriormente.
A Informação gerada no cérebro é convertida em um conjunto de sinais neurais
os quais controlam o mecanismo articulatório (movimentos da língua, lábios,
cordas vocais, etc). As articulações movem-se em resposta a estes sinais
neurais para desempenhar uma seqüência de gestos os quais resultam em uma
forma de onda acústica que contém a informação da mensagem original.
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 302
A informação que é comunicada através do sinal de voz é intrinsicamente
discreta, ou seja, pode ser representada como uma concatenação de um
conjunto finito de símbolos – fonemas. Um fonema é uma unidade de voz, o
conjunto que define todos os sons dos quais palavras podem ser construídas em
uma linguagem particular: as línguas possuem cerca de 30 a 50 fonemas
distintos (por exemplo, o inglês possui 42 fonemas). Assim, um código de 6 bits
pode representar todos os fonemas. Na fala usamos cerca de 10 fonemas por
segundo o que leva a uma taxa média de informação de 60 bits/seg. Ou seja, o
equivalente escrito da voz contém informação 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 conteúdo. O interesse em qualquer sistema é:
- Preservação do conteúdo da mensagem no sinal de voz;
- Representação do sinal de voz em uma forma que seja conveniente para
transmissão ou armazenamento ou numa forma flexível tal que modificações
possam ser feitas sem degradar o conteúdo 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 informação, ou seja, de onde a voz é gerada. Essa informação
é convertida para algum meio observável (a forma de onda) o qual é pode sofrer
diferentes representações (como a mudança para o domínio da freqüência) e
transformações. Por fim, o sinal transformado é utilizado novamente pelo
homem ou por algum dispositivo.
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 303
Fig. 11.2. Visão geral da manipulação e processamento da informação.
O processamento do Sinal de Voz é o veículo para obtenção de uma
representação geral do sinal tanto como forma de onda ou na forma paramétrica
Ele serve como função auxiliar no processo de transformar a representação do
sinal em formas alternativas que sejam mais gerais em natureza, mas mais
apropriadas para aplicações específicas.
O processamento digital de sinais (PDS) tem interesse na obtenção de
representações discretas dos sinais e no design e implementação de
procedimentos numéricos para processar essa representação. As técnicas
digitais surgiram, primeiramente, para simular sistemas analógicos. Em meados
da década de 60, PDS tornou-se viável devido à criação de processadores mais
rápidos e a avanços teóricos quanto ao tema.
Há diversas vantagens dos sistemas digitais para os analógicos:
- Sistemas digitais são mais confiáveis;
- Grande capacidade de integração, podendo ser implementados em um único
chip;
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 304
- Baixo custo;
- Permitem comunicação em canais ruidosos;
- Maior segurança de informação (permite inclusão de elementos de
criptografia).
O propósito do processamento digital pode ser:
• Saber se determinado sinal corresponde a um sinal de voz ou não
• Classificar uma seção de um sinal de voz como:
o voz audível (voiced speech)
o voz inaudível (unvoiced speech)
o silêncio ou ruído de fundo
• Redução de ruído
Para redução de ruído, 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 expressão “a casa” com um
ruído de fundo. Esse sinal pode ser filtrado com a redução do ruído através do
uso de uma janela de Hanning conforme o código:
[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)));
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 305
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 aplicação do filtro no domínio da
frequência, sendo esse o sinal original:
e esse o sinal filtrado:
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 306
Considerando a aplicação de técnicas de processamento digital de sinais a
problemas de comunicação por voz, é interessante observar três aspectos
principais: a representação do sinal de voz na forma digital, a implementação
das técnicas de processamento e a classe de aplicações.
A representação do sinal de voz na forma discreta é, claro, de fundamental
importância para todo o processo. Essa conversão é 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 aplicações do processamento
digital da voz.
Existem muitas formas de representar um sinal de voz. Essas representações
podem ser classificadas em dois grandes grupos (Fig. 11.3): representações em
forma de onda e representações paramétricas. A representação em forma de
onda está preocupada com a preservação da forma de onda do sinal analógico
através de um processo de amostragem e quantização. Já a representação
paramétrica está preocupada com a representação do sinal de voz como a saída
de um modelo para produção de voz. A obtenção de uma representação
paramétrica, em geral, começa com a forma de onda (ou seja, o sinal amostrado
e quantizado). A seguir, o sinal é tratado para obtenção dos parâmetros
necessários para sua representação. Esses parâmetros são classificados em
parâmetros de excitação (relativos à fonte da voz) e parâmetros do trato vocal
(relativos a sons de voz individuais).
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 307
Fig. 11.3. Representações do sinal de voz.
Existem diversas aplicações relacionadas com processamento do sinal de voz. A
Fig. 11.4 exemplifica algumas delas. A transmissão e o armazenamento digital
relacionam-se com técnicas de compressão do sinal de voz. A produção de voz
humana para, por exemplo, leitura de textos é a preocupação em métodos de
síntese de voz, onde os maiores problemas estão relacionados com a criação
automática de elementos como entonação da voz e a produção de um texto que
soe natural ao nosso sistema auditivo. O reconhecimento de interlocutor pode
estar associado a questões de segurança; onde um dado sistema só se torna
acessível se padrões 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 eliminação de ruído ou eco como um pré-
processamento para quaisquer das aplicações anteriores. Muitas dessas
aplicações são naturalmente indicadas para ajudar pessoas com necessidades
especiais como deficientes visuais.
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 308
Fig. 11.4. Aplicações relacionadas com processamento de voz.
11.1 Amostragem e Quantização
Dada a relação direta entre processamento de voz e processamento de sinais,
vamos fazer uma breve revisão de alguns conceitos básicos de processamento
de sinais.
Um sinal é geralmente representado por um padrão que varia no tempo. A voz
produzida pelo ser humano é desta natureza: x(t). É possível representar um
sinal como uma seqüência de números: x(n). Esta seqüência pode ser vista
como uma seqüência de amostras de um sinal analógico feitas com período de
amostragem T: xa(nT). A Fig. 11.5 ilustra essa representação.
Fig. 11.5. Representação de um sinal de voz na forma de onda e amostrado.
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 309
As funções básicas para o processamento digital de sinais são o impulso e o
degrau unitário. Elas podem ser definidas como:
Impulso: δ(n) = 1, para n = 0, e δ(n) = 0, caso contrário
Degrau Unitário: u(n) = 1, para n ≥ 0, u(n) = 0, caso contrário
No caso, podemos afirmar que: δ(n) = u(n) - u(n – 1)
É através da função impulso que podemos representar as amostras de um sinal
digitalizado (Fig. 11.6).
Fig. 11.6. Seqüência de impulsos representando uma função exponencial
discreta.
A discretização do sinal é um passo fundamental para que o processamento
posterior aconteça de forma adequada. A Fig. 11.7 ilustra os possíveis
resultados da discretização de uma função com diferentes taxas de
amostragem, resultando em um sinal de boa ou de má qualidade.
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 310
a) b)
Fig. 11.7. a) Sinal amostrado com uma taxa apropriada para sua recuperação e
b) o mesmo sinal amostrado de forma incorreta (baixa taxa de amostragem)
tornando impossível uma recuperação fiel ao original.
Além da amostragem, o sinal de voz passa por outro processo para ser
digitalizado: a quantização. Na Fig. 11.8, podemos ver o sinal de entrada
contínuo, sendo inserido em um amostrador que cuida da discretização do sinal
no tempo. O quantizador é responsável então pela discretização do sinal em
amplitude.
Fig. 11.8. Amostragem e quantização, gerando o sinal discreto final.
Se um sinal analógico for banda limitado e amostrado na taxa de Nyquist pode-
se reconstruir o sinal original. O sinal de voz não é banda limitado, embora o
espectro tenda a cair rapidamente para freqüências mais altas. Uma
representação fiel da voz exige uma taxa de amostragem de, pelo menos, 20
kHz. As freqüências que mais contribuem para o sinal de voz estão abaixo de
3,5 kHz. É por isso que há uma certa dificuldade em reconhecer uma voz ao
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 311
telefone. Se passarmos o sinal de voz por um filtro passa-baixa, podemos, para
a maioria das aplicações, utilizar uma taxa de Nyquist de 8 kHz.
É conveniente separar os processos de amostragem e quantização. Na prática é
geralmente impossível distinguir entre eles. Números binários são usados para
representarmos os níveis de quantização. Podemos representar a quantização
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 não
houve erros na transmissão, o sinal recebido c’(n) deverá ser igual a c(n).
Fig. 11.9. Processo de quantização, codificação e envio do sinal. Na
transmissão, o sinal é decodificado. Se a transmissão foi sem erro, c(n) = c’(n).
A quantização pode ser:
a) Quantização Instanânea;
b) Quantização Uniforme;
c) Companding Instanâneo;
d) Quantização Adaptativa.
Na quantização instantânea as amplitudes das amostras são quantizadas
dividindo-se a amplitude em um conjunto finito de pequenas variações de
amplitude. Dá-se o mesmo valor a todas as amostras dentro de um mesmo
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 312
patamar de amplitude. Para uma representação em 3 bits há 8 possíveis rótulos
(Fig. 11.10) e conseqüentemente o número de diferentes seqüências de
rotulação é o fatorial de 8.
Fig. 11.10. Quantização instantânea com 3 bits.
Q quantização uniforme exige uma mesma distância entre xi e xi-1. Existem duas
classes de quantizadores uniformes: mid-riser e mid-tread. No mid-riser, a
origem aparece no ponto médio da parte crescente de uma função escada. O
quantizador mid-riser é conveniente quando temos o número de níveis uma
potência de 2. O mid-riser possui o mesmo número de níveis positivos e
negativos que estão simetricamente posicionados em relação à origem. O
quantizador mid-tread possui um nível negativo a mais que positivo. O
quantizador mid-tread possui o zero (000) no meio da escala o que é útil em
diversas aplicações. O quantizador mid-riser não possui o nível zero. Pode-se
ter desde a codificação direta a escolhas que tentem manter equilibrada a
potência utilizada entre os bits da amostra em relação a origem, etc. A Fig. 11.11
apresenta esses dois quantizadores para uma quantização de 3 bits como na
Fig. 11.11.
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 313
a)
b)
Fig. 11.11. Quantizadores de 3 bits: a) mid-riser e b) mid-tread.
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 314
Companding é uma expressão que significa compress + expand. Para tornar a
porcentagem de erro constante os níveis de quantização devem ser espaçados
logaritmicamente. Para tanto, o logaritmo da entrada é quantizado ao invés da
própria entrada:
y(n) = ln|x(n)|
Cujo inverso é:
x(n) = exp[y(n)]sgn[x(n)]
Dessa maneira, pode-se mostrar que o nível sinal-ruído é independente da
variância do sinal. Problemas acontecem com pequenas amplitudes (x[n] ≈ 0). A
Fig. 11.12 apresenta em diagrama de blocos como se desenvolve a codificação
e a decodificação do sinal.
Fig. 11.12. Representação da técnica de companding.
O problema da quantização é quanto a quantidade de degraus. Desejamos fazer
essa quantidade suficientemente grande para termos uma varredura pico-a-pico
do sinal. Mas isso implica mais níveis de quantização. Porém, mais níveis de
quantização implica em uma cpdificação com mais bits o que implica em maior
tempo de processamento/espaço de armazenamento; o que não é interessante.
Esse é o grande dilema.
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 315
Uma solução está em utilizar um quantizador não-uniforme. Alternativamente,
pode-se adaptar as propriedades do quantizador aos níveis do sinal de entrada.
O tamanho do degrau ∆ varia casadamente com a variância do sinal de entrada.
A Fig. 11.13 apresenta o comportamento de um tal quantizador.
Fig. 11.13. Quantização adaptativa.
11.2 Técnicas Temporais para Processamento de Voz
Técnicas temporais para processamento de voz envolvem a forma de onda do
sinal diretamente (em contraste com métodos do domínio da freqüência). São
simples de implementar e ricas em informação. As técnicas mais difundidas são:
a) Taxa de passagem pelo Zero (zero-crossing rate);
b) Energia do Sinal;
c) Magnitude do Sinal;
d) Auto-Correlação.
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 316
As propriedades do sinal de voz variam com o tempo: a excitação muda entre a
voz audível e não audível; a amplitude do sinal varia; há uma variação
significativa da freqüência fundamental para a voz audível. Essas propriedades
são nitidamente observáveis na forma de onda. Por isso, os métodos podem ser
aplicados no domínio do tempo, diferente de outros tipos de sinais que são
preferivelmente tratados no domínio da freqüência.
A maioria dos sistemas de processamento de voz assume que as propriedades
da fala mudam relativamente devagar com o tempo. Afinal, não há variações
bruscas num fonema ou entre fonemas. Assim, podem-se utilizar métodos de
processamento em tempo curto (short-time), nos quais analisam-se amostras de
curta duração do sinal. Cada segmento curto de voz é visto como um som
estável com propriedades fixas. Às vezes, esses segmentos se sobrepõem.
Essas amostras de curta duração são geralmente chamadas de moldura de
análise (analysis frames). O resultado da análise de uma moldura pode ser um
número ou um conjunto de números. A seqüência gerada pode ser tomada
como uma nova representação no tempo do sinal original.
É geralmente assumido que o sinal de voz foi limitado em faixa e que foi
amostrado em taxa não inferior a taxa de Nyquist (pelo menos 8.000
amostras/segundo). É também considerado que o sinal foi quantizado e que o
erro de quantização é desprezível.
A maioria das técnicas de processamento em tempo curto pode ser
representada pela equação:
∑
∞
−∞=
−=
m
n mnwmxTQ )()]([ (Eq. 11.1)
o sinal de voz, x(.), é submetido a transformação T[ ], linear ou não, a qual pode
depender de um conjunto ajustável de parâmetros.
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 317
Observando a Eq. 11.1, podemos vê-la como uma operação de convolução da
transformação do sinal de entrada x() por uma função w. Aqui, podemos
entender w como uma seqüência 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 duração finita, mas
pode ser infinita.
Fig. 11.14. Processamento de um sinal de voz em uma janela w.
11.2.1 Energia de Curta Duração
Das técnicas temporais para processamento de voz a mais simples é a Energia
de Curta-Duração. A amplitude do sinal de voz varia apreciavelmente com o
tempo. A voz audível apresenta amplitude maior que a voz inaudível ou o
silêncio (ruído de fundo), assim, a energia de curta duração de um sinal provê
uma representação conveniente que reflete as variações de amplitude. A
energia de um sinal discreto no tempo pode ser definida como:
∑
∞
−∞=
=
m
mxE )(2
Em relação à equação de Qn (Eq. 11.1), temos:
T[ ] = quadrado
w(n) = 1, 0 ≤ n ≤ N – 1 e 0, caso contrário.
A energia de tempo curto de um sinal de voz pode ser definida como:
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 318
∑
∞
−∞=
−=
m
n mnwmxE 2
)]().([
que pode ser re-escrita como:
∑
∞
−∞=
−=
m
n mnhmxE )(.)( 2
com h(n) = w2
(n). Observamos que En é um número e não uma função.
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 relação ao tempo. Essa janela
seria equivalente a um filtro de passa-baixa de banda (muito) estreita. Uma
janela estreita demais não consegue produzir uma função suave de energia. Se
a janela for muito estreita, não proverá medições suficientes para produzir uma
função de energia suave. Se a janela for da ordem de vários picos do sinal, En
não vai refletir as variações do sinal. Esse conflito é de grande importância na
representação 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 criança;
b) 250 amostras para uma voz grave de homem.
Na prática, para uma freqüência 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 significância de En está em conseguir distinguir entre segmentos com
voz audível e voz inaudível. Os valores de En são significativamente maiores
para sinais audíveis. En pode ser usada para determinar o tempo onde um sinal
audível torna-se inaudível e vice-versa; se o sinal for de boa qualidade pode-se
distinguir a voz do silêncio.
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 319
11.2.2 Magnitude de Curta Duração
Outra técnica de processamento em tempo curto é a Magnitude de Curta
Duração. O cálculo da energia é muito sensível a níveis altos de sinal (devido à
potenciação na computação de En). Uma maneira de aliviar este problema é
utilizar-se uma função de magnitude média:
∑
∞
−∞=
−=
m
n mnwmxM )(|)(|
Essa função é de aritmética mais simples que a energia, porém tem menor
capacidade de diferenciação entre voz audível e inaudível.
Tanto para a Energia quanto para a Magnitude de Curta Duração para uma
janela de 20ms uma taxa de amostragem de 100 amostras/seg. é adequada. A
janela não precisa ser restrita a qualquer função comumente utilizada como
filtro. Ela também não precisa ser retangular; é necessário apenas que o filtro
seja suave e passa-baixa. Pode ser um filtro FIR ou IIR; sugere-se FIR, pois a
saída é mais fácil de ser computada a uma baixa taxa de amostragem. A janela
não precisa ter dimensão finita; basta que a Transformada-Z seja uma função
racional.
Por exemplo, se:
h(n) = an
, n ≥ 0
= 0 , n < 0
ou seja, h(n) = an
u(n)
Um valor de 0 < a < 1 dá uma janela cuja duração 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:
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 320
1
1
1
)( −
−
=
az
zH , 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.
11.2.3. Taxa de Passagem pelo Zero
Diz-se que houve uma passagem pelo zero quando duas amostras sucessivas
possuem sinais diferentes. A taxa com que há a passagem pelo zero é apenas
uma medida do conteúdo de freqüência do sinal. Este fato é particularmente
verdadeiro para sinais faixa-estreita. Esse conceito define a técnica de
processamento de Passagem pelo Zero em Tempo Curto.
Um sinal senoidal de freqüência F0, amostrado numa taxa Fs, possui Fs/F0
amostras por ciclo de senóide. Cada ciclo possui duas passagens pelo zero (Fig.
11.16), ou seja, a taxa média de passagens pelo zero é:
Z = 2.F0/Fs passagens/amostra
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 321
Fig. 11.16. Uma senóide tem duas passagens pelo zero em um ciclo.
Os sinais de voz são sinais faixa-larga e, portanto, a interpretação da taxa média
de passagem pelo zero é menos precisa. Estimativas grosseiras das
propriedades espectrais podem ser obtidas baseadas na taxa de passagem pelo
zero média em tempo curto.
Pode-se definir:
∑
∞
−∞=
−−−=
m
n mnwmxmxz )(|)]1(sgn[)](sgn[|
onde
sgn[x(m)] = 1, se x(n) ≥ 0
= -1, se x(n) < 0
e
w(n) = 1/(2N), para 0 ≤ n ≤ N-1
= 0, caso contrário
O modelo para a produção 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 não
audíveis é de alta-freqüência: altas freqüências implicam uma taxa alta de
passagem pelo zero e baixas freqüências implicam numa taxa baixa de
passagem pelo zero. Assim, há uma correlação forte entre taxa de passagem
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 322
pelo zero e a distribuição de energia com a freqüência: se a taxa de passagem
pelo zero é alta, o sinal é inaudível; do contrário, o sinal é audível.
A taxa média de passagem pelo zero em tempo curto é de:
i) 49 vezes por 10 ms para sinais não-audíveis.
ii) 14 vezes por 10 ms para sinais audíveis.
Há uma sobreposição das distribuições de sinais audíveis e não-audíveis de
forma que esta divisão não pode ser tomada somente com a informação da taxa
de passagem pelo zero. Isso dificulta a decisão entre voz audível e inaudível.
A taxa de passagem pelo zero é fortemente afetada por:
a) sinal de rede elétrica;
b) qualquer ruído no processo de digitalização.
Cuidado extremo deve ser tomado no processo analógico antes da digitalização;
é preferível utilizar-se um filtro passa-faixa ao invés de passa-baixa. Para
eliminar a freqüência de 60 Hz da rede elétrica que pode corromper o sinal
original.
O problema de ruído de fundo é de grande importância no reconhecimento de
voz. É essencial saber onde cada palavra inicia e termina. A separação
Voz/Silêncio não é simples exceto no caso de gravações de alta-fidelidade em
câmaras de gravação. Em gravações com alta relação sinal/ruído os sons da
voz de menor intensidade são mais fortes que o ruído de fundo.
11.2.4. Função de Autocorrelação
A última técnica de processamento de sinal de voz é a Função de
Autocorrelação de Tempo Curto. A autocorrelação de um sinal determinístico
discreto no tempo é dada por:
∑
∞
−∞=
+=Φ
m
kmxmxk )()()(
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 323
A representação em função de autocorrelação de um sinal é um modo
conveniente de apresentar algumas propriedades do sinal. Por exemplo, se o
sinal é periódico com período de P amostras, então:
φ(k) = φ(k+P)
Ou seja, a autocorrelação de uma função periódica também é periódica com o
mesmo período. Outras propriedades importantes da função de autocorrelação
são:
1) Ela é uma função par: φ(k) = φ(-k);
2) Ela alcança seu valor máximo quando k = 0; i.e.; |φ(k)|≤0, para todo k;
3) O valor de φ(0) é igual à Energia para sinais determinísticos ou à potência
média para sinais periódicos.
A função de autocorrelação para tempo curto é definida como:
∑
∞
−∞=
−−+−=
m
n mknwkmxmnwmxkR )()()()()(
Ou seja, primeiro, um segmento de voz é selecionado pelo produto com a janela;
em seguida, a autocorrelação é aplicada ao segmento de voz sob a janela. A
técnica de autocorrelação pode ser usada para estimativa do pitch (frequência
fundamental) de um sinal de voz. O seguinte código do MatLab pode ser usado
para estimar a frequência fundamental de um sinal usando a função de
autocorrelação:
[x,fs]=wavread('casa1.wav');
ms20=fs/50; % minimum speech Fx at 50Hz
%
% plot waveform
t=(0:length(x)-1)/fs; % times of sampling instants
subplot(2,1,1);
plot(t,x);
legend('Waveform');
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 324
xlabel('Time (s)');
ylabel('Amplitude');
%
% calculate autocorrelation
r=xcorr(x,ms20,'coeff');
%
% plot autocorrelation
d=(-ms20:ms20)/fs; % times of delays
subplot(2,1,2);
plot(d,r);
legend('Autocorrelation');
xlabel('Delay (s)');
ylabel('Correlation coeff.');
% Estimativa da frequencia fundamental
ms2=fs/1000; % maximum speech Fx at 1000Hz
ms20=fs/50; % minimum speech Fx at 50Hz
% 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=%gHzn',rmax,fs/(ms2+tx-1));
Podemos ver a aplicação desse código no sinal de voz correspondente ao som
“a casa”. Nesse caso, a frequência fundametal estimada é:
Fx=512.195Hz
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 325
11.3 Análise Cepstral
O nome “cepstrum” vem do inverso da primeira metade da palavra “spectrum”
(espectro) e plota a amplitude de um sinal versus sua “quefrência” (que seria o
inverso da frequência). Essa técnica é útil para separar componentes de um
sinal complexo formado por diversos simultâneos, mas diferentes elementos
combinados.
O cepstrum é gerado pela transformada de Fourier de logaritmo da transformada
de Fourier. São duas transformadas de Fourier calculadas, mas, de fato, na
prática, a segunda transformada pode ser a transformada inversa.
A utilidade da análise do cepstrum deriva do fato que ele corresponde à
transformada inversa de Fourier do logaritmo da transformada de Fourier. Isso
significa que os componentes de frequência foram ordenados logaritmicamente.
Na matemática, um dos princípios do logaritmo é que, se alguma expressão é a
combinação multiplicativa de dois elementos, então, no domínio logarítmico,
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 326
esses elementos são combinados aditivamente. Colocando de outra forma, se o
sinal sob análise y(t) é igual a h(t) vezes x(t):
y(t) = h(t).x(t)
então:
log[y(t)) = log[h(t)] + log[x(t)]
No domínio do processamento digital de voz, x(t) pode ser o pitch enquanto h(t)
é o componente do trato vocal.
A quefrência é uma medida de tempo, embora não no sentido de um sinal no
domínio do tempo. Por exemplo, se a taxa de amostragem de um sinal de áudio
é 44100 Hz e existe um pico no gráfico do cepstrum cuja quefrência é 100
amostras, o pico indica a presença de um pitch que é 44100/100 = 441 Hz. Esse
pico ocorre no cepstrum porque os harmônicos no espectro são periódicos e o
período corresponde ao pitch. O código de MatLab abaixo estima a frequência
fundamental do arquivo ‘casa1.wav’:
[x,fs]=wavread('casa1.wav');
ms1=fs/1000; % máxima frequência de voz Fx em 1000Hz
ms20=fs/50; % mínima frequência de voz Fx em 50Hz
%
% plotagem da forma de onda
t=(0:length(x)-1)/fs;
subplot(3,1,1);
plot(t,x);
legend('Waveform');
xlabel('Time (s)');
ylabel('Amplitude');
Y = fft(x);
% plotagem do espectro abaixo de 5000Hz
hz5000=5000*length(Y)/fs;
f=(0:hz5000)*fs/length(Y);
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 327
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=%gHzn',fs/(ms1+fx-1));
Frequência estimada: 667.171Hz
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 328
Outra aplicação do cepstrum é a extração da informação de envelope para
análise da voz. Em geral, o envelope espectral é uma forma mais suave do
gráfico da frequência, onde o processo de suavização ignora os componentes
de mais alta frequência. No domínio cepstral, isso corresponde ao descarte de
todos os coeficientes cepstrais relacionados às frequências maiores que o
envelope da frequência. Isso pode ser conseguido no MatLab com o código
abaixo:
[som, fs] = wavread('casa1.wav');
ps = log(abs(fft(som)));
len = length(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).
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 329
Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 330
11.4 Exercícios
1. Explique a técnica temporal de processamento de voz de Energia de Curta
Duração, seguindo os seguintes passos:
a) Defina a equação ∑
∞
−∞=
−=
m
n mnwmxTQ )()]([
b) Cite quais os cuidados que devem ser tomados na definição da
janela w(n).
2. Diferencie Quantização e Amostragem, relacionando as duas técnicas com o
processo de Digitalização de um sinal. É correto afirmar que a quantização
de um sinal pode compactá-lo? Essa compactação seria com ou sem perda
de informação?
3. Construa o gráfico da função característica do quantizador de 2 bits definido
pela seguinte relação entre as amostras quantizadas e a palavra código:
2/*)1)((*))((
^
∆+= ncncsignx
onde a função 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
representação em sinal-magnitude. Tal quantizador possui características de
um quantizador mid-riser? E mid-tread?

Processamento Digital de Sinais - Prof. Carlos Alexandre Mello Página 331
11.5 Bibliografia Complementar
1. Lawrence Rabiner, Ronald W. Schafer, Digital Processing of Speech Signals,
Prentice Hall, 1978.
2. Vilay K. Madisetti, The Digital Signal Processing Handbook, CRC Press,
2010.
3. VOICEBOX (a MATLAB toolbox for speech processing):
http://www.ee.ic.ac.uk/hp/staff/dmb/voicebox/voicebox.html

Processamento de Sinais

  • 1.
    Processamento Digital de Sinais Carlos AlexandreMello Centro de Informática – UFPE 2013
  • 2.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 2 Agradecimentos à primeira turma de Processamento Digital de Sinais dos cursos de Engenharia da Computação e Ciência da Computação de 2010.1: Adriano Damascena, Bernardo Fonseca, Daker Fernandes, Daniel Brito, Fernando Rodrigues, Gabriel Carvalho, João Carlos Procópio, Lucas André Paes, Luis Felipe Pereira, Onildo Ferraz Filho, Rafael Menezes, Renan Pires, Rodolpho de Siqueira, Rodrigo Perazzo, Thiago Lima e Thiago Henrique Fernandes.
  • 3.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 3 Índice 1. Processamento Digital de Sinais ......................................................................6 1.1 Principais Tipos de Sinais ...........................................................................7 1.2 Sistemas Discretos no Tempo.....................................................................9 1.3 Sistemas Lineares e Invariantes no Tempo ..............................................10 1.4 Sistemas LTI como Filtros Seletores de Frequência.................................14 1.5 Representação de Sequências pela Transformada de Fourier .................18 1.5.1 Propriedades da Transformada de Fourier.........................................21 1.6 Códigos do MatLab ...................................................................................22 1.7 Exercícios..................................................................................................30 1.8 Bibliografia Complementar ........................................................................33 2. A Transformada Z...........................................................................................34 2.1 Propriedades da Transformada Z..............................................................36 2.2 Pares de Transformadas Z........................................................................39 2.3 Exemplos de Cálculo da Transformada Z .................................................39 2.4 Propriedades da Região de Convergência................................................47 2.5 A Transformada Z Inversa.........................................................................48 2.6 Exercícios..................................................................................................57 2.7 Bibliografia Complementar ........................................................................59 3. Teoria da Amostragem ...................................................................................60 3.1 Teorema de Shannon................................................................................65 3.2 Re-Obtenção do Sinal a partir de suas amostras......................................70 4. Filtros Digitais .................................................................................................73 4.1 Filtros Digitais............................................................................................75 4.2 Filtros FIR..................................................................................................79 4.4 Exercícios................................................................................................108 4.5 Bibliografia Complementar ......................................................................109 5. Técnicas de projeto de filtros ........................................................................110 5.1 Projeto de Filtros FIR ..............................................................................113 5.1.1 Projeto usando janelas .....................................................................114 5.1.2 Técnicas de Projeto por Amostragem em Frequência......................140 5.1.3 Projeto Equirriple Ótimo....................................................................142 5.2 Projeto de Filtros IIR................................................................................145 5.2.1 Escala Relativa.................................................................................146 5.2.2 Características de Protótipos Analógicos .........................................149 5.3 Transformações em Frequência..............................................................158 5.4 Comparação entre Filtros FIR e IIR.........................................................160 5.5 Exercícios................................................................................................162 5.6 Bibliografia Complementar ......................................................................163 6. Transformada Discreta de Fourier ................................................................164 6.1 A Série Discreta de Fourier .....................................................................165 6.2 A Transformada Discreta de Fourier .......................................................170 6.3 Propriedades da Transformada Discreta de Fourier ...............................172 6.4 A Transformada Discreta Bi-Dimensional de Fourier ..............................175 6.5 O Espectrograma ....................................................................................177
  • 4.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 4 6.6 Exercícios................................................................................................181 6.7 Bibliografia Complementar ......................................................................183 7. Transformada Rápida de Fourier (FFT- Fast Fourier Transform) .................184 7.1 Algoritmos Rápidos .................................................................................184 7.2 Algoritmo de Cooley-Tukey ou Decimação no Tempo ............................186 7.3 Outras FFTs ............................................................................................197 7.4 Exercícios................................................................................................199 7.5 Bibliografia Complementar ......................................................................200 8. Análise Wavelet ............................................................................................201 8.1 A Transformada Wavelet.........................................................................204 8.2 Análise em Multiresolução.......................................................................208 8.3 Sobre os coeficientes das wavelets ........................................................211 8.4 Wavelets no MatLab................................................................................216 8.5 Exercícios................................................................................................223 8.6 Bibliografia Complementar ......................................................................225 9. Processamento Digital de Imagens ..............................................................226 9.1 Digitalização............................................................................................229 9.2 Sistema Computacional de Cores...........................................................232 9.3 Histograma..............................................................................................236 9.4 Filtragem de Imagens Digitais.................................................................238 9.5 Compressão de Imagens ........................................................................246 9.6 Processamento de Imagens no MatLab..................................................248 9.7 Exercícios................................................................................................252 9.8 Bibliografia Complementar ......................................................................253 10. Técnicas de Codificação de Áudio e Vídeo ................................................254 10.1 Teoria dos Códigos ...............................................................................254 10.2 Algoritmos de Compressão ...................................................................258 10.2.1 Código de Huffman.........................................................................259 10.2.2 Run-length ......................................................................................262 10.2.3 Algoritmo de Lempel-Ziv-Welch......................................................262 10.3 Algoritmos de codificação multimídia ....................................................263 10.3.1 Codificação de Vídeo......................................................................264 10.3.2 Codificação de Áudio......................................................................278 10.4 Implementações no MatLab ..................................................................283 10.4.1 Processamento de Vídeo no MatLab .................................................283 10.4.2 Processamento de Áudio no MatLab .................................................289 10.5 Exercícios..............................................................................................299 10.6 Bibliografia Complementar ....................................................................300 11. Processamento de Voz...............................................................................301 11.1 Amostragem e Quantização..................................................................308 11.2 Técnicas Temporais para Processamento de Voz................................315 11.2.1 Energia de Curta Duração ..............................................................317 11.2.2 Magnitude de Curta Duração..........................................................319 11.2.3. Taxa de Passagem pelo Zero........................................................320 11.2.4. Função de Autocorrelação.............................................................322 11.3 Análise Cepstral ....................................................................................325
  • 5.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 5 11.4 Exercícios..............................................................................................330 11.5 Bibliografia Complementar ....................................................................331
  • 6.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 6 1. Processamento Digital de Sinais Sinais estão presentes em diversas situações do dia-a-dia do ser humano. Um sinal pode ser definido como uma função que carrega uma informação. A forma mais comum para nós é a comunicação por sinal de voz. Nesse exemplo, temos o sinal gerado pelo trato vocal e o sinal recebido pelo sistema auditivo. Apesar de ser o mesmo sinal transmitido a forma como ele é processado é inerente ao receptor. O processamento de sinais lida com a representação, transformação e manipulação dos sinais e da informação que eles contêm. Até a década de 60, a tecnologia para processamento de sinais era basicamente analógica. A evolução de computadores e microprocessadores juntamente com diversos desenvolvimentos teóricos causou um grande crescimento na tecnologia digital, surgindo o processamento digital de sinais (PDS). Um aspecto fundamental do processamento digital de sinais é que ele é baseado no processamento de seqüências de amostras. Para tanto, o sinal contínuo no tempo é convertido nessa seqüência de amostras, i.e., convertido em um sinal discreto no tempo. Após o processamento digital, a seqüência de saída pode ser convertida de volta a um sinal contínuo no tempo. A maior parte do processamento de sinais envolve processar um sinal para obter outro sinal. Normalmente, isso é conseguido por um processo conhecido como filtragem. Sinais podem ser classificados em quatro diferentes categorias dependendo de carcaterísticas de tempo e dos tipos de valores que eles podem assumir. Sinais contínuos no tempo (ou analógicos) são definidos para qualquer valor de tempo e eles assumem valores no intervalo contínuo (a, b), onde a pode ser -∞ e b pode ser +∞. Podem ser representados por uma função de variáveis contínuas. Sinais discretos no tempo são definidos apenas para certos valores específicos de tempo. Podem ser representados matematicamente por uma sequência de números reais ou complexos, x. O n-ésimo número dessa seqüência é denotado por x[n]. Assim, x é formalmente escrito como:
  • 7.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 7 x = {x[n]}, -∞ <n < ∞ onde n é um inteiro. Tais seqüências são geradas a partir de um processo de amostragem periódica de um sinal analógico. Assim, o valor numérico do n- ésimo número da seqüência é igual ao valor do sinal analógico xa(t) no tempo nT, i.e.: x[n] = xa(nT), -∞ <n < ∞ Os valores de amplitude de sinais contínuos ou discretos no tempo podem ser contínuos ou discretos. Se um sinal pode assumir qualquer valor dentro de um espaço finito ou infinito, ele é dito um sinal contínuo em valores. Sinais digitais são aqueles para os quais tanto o tempo quanto a amplitude são discretos. Ou seja, ele é discreto no tempo e só pode assumir valores dentro de um conjunto finito de possíveis valores (é discreto em valores). Sinais também podem ser classificados em determinísticos ou aleatórios. Qualquer sinal que podem ser unicamente descrito por uma expressão matemática, uma tabela de dados ou uma regra bem definida é chamado determinístico. Esse termo é usado para destacar que quaisquer valores passados, presentes e futuros do sinal são conhecidos precisamente, sem incerteza. No entanto, em aplicações práticas, os sinais não podem ser representados precisamente por equações matemáticas ou suas descrições são muito complexas para uso. Isso indica que tais sinais têm comportamentos imprevisíveis sendo chamados de sinais aleatórios. 1.1 Principais Tipos de Sinais Em um estudo sobre processamento digital de sinais, alguns sinais são de mais importância. Dentre eles, temos o impulso unitário, δ[n], definido como:    = ≠ = 0,1 0,0 ][ n n nδ
  • 8.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 8 Um dos mais importantes aspectos do impulso é que uma seqüência arbitrária pode ser representada como uma soma de impulsos escalonados e deslocados. Por exemplo, a seqüência 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 seqüência x[n] pode ser representada como: ∑ ∞ −∞= −= k knkxnx ][][][ δ Outra seqüência importante é o degrau unitário, u[n]:    < ≥ = 0,0 0,1 ][ n n nu O degrau relaciona-se com o impulso como: ∑−∞= = n k knu ][][ δ 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: ∑ ∞ = −= 0 ][][ k knnu δ Por outro lado, o impulso relaciona-se com o degrau unitário como: δ[n] = u[n] – u[n – 1]
  • 9.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 9 Uma seqüência exponencial é importante na análise de sistemas discretos e invariantes no tempo. A forma geral de uma seqüência exponencial é dada por: x[n] = A.αn 1.2 Sistemas Discretos no Tempo Um sistema discreto no tempo é definido matematicamente como uma transformação que mapeia uma seqüência de entrada x[n] em uma seqüência de saída y[n]. Isso pode ser denotado por: y[n]=T{x[n]} como representado na Fig. 1.1. Fig. 1.1. Representação de um sistema discreto no tempo Alguns exemplos ilustram sistemas simples: 1) Sistema de atraso ideal: y[n] = x[n – nd], -∞ <n < ∞ 2) Média móvel: ∑−= − ++ 2 1 ][ 1 1 21 M Mk knx MM A seguir, destacamos algumas importantes propriedades dos sistemas. 1) Um sistema é dito sem memória (memoryless systems) se a saída 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 princípio da superposição. Ou seja:
  • 10.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 10 T{a.x1[n] + b.x2[n]} = a.T{x1[n]} + b.T{x2[n]} Ex: Acumulador: ∑−∞= = n k kxny ][][ 3) Um sistema é invariante no tempo é um sistema no qual um deslocamento no tempo (ou atraso) da seqüência de entrada gera um deslocamento correspondente na seqüência de saída. Ou seja, suponha um sistema que transforma uma seqüência de entrada x[n] na seqüência de saída y[n]. Se a seqüência de entrada sofre um deslocamento de n0, x[n] = x[n – n0], então a seqüência de saída 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 não é invariante no tempo: y[n] = x[M.n], -∞ <n < ∞ 4) Um sistema é dito causal se ele não depende de valores futuros da seqüência. Ou seja, o valor de y[n1] pode ser calculado apenas com valores de x[n] para n ≤ n1. Ex: Um sistema não causal: y[n] = x[n + 1] – x[n] 5) Um sistema é dito estável se toda entrada limitada provoca uma saída limitada. Assim, se, para todo n, |x[n]| ≤ B < ∞, para algum valor finito B, então |y[n]| ≤ C < ∞, para algum valor finito C. 1.3 Sistemas Lineares e Invariantes no Tempo Uma classe importante de sistemas consiste naqueles que são lineares e invariantes no tempo. Como dito acima, os sistemas lineares são aqueles que obedecem ao princípio da superposição. Se a propriedade da linearidade é
  • 11.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 11 combinada com a representação de uma seqüência geral como uma combinação de impulsos, então um sistema linear pode ser completamente caracterizado pela sua resposta ao impulso. Seja hk[n] a resposta do sistema a δ[n – k]. Assim, como: ∑ ∞ −∞= −= k knkxnx ][][][ δ então }][][{][ ∑ ∞ −∞= −= k knkxTny δ Pelo princípio da superposição, podemos escrever: ∑∑ ∞ −∞= ∞ −∞= =−= k k k nhkxknTkxny ][][}][{][][ δ De acordo com essa equação, a resposta do sistema a qualquer entrada pode ser expressa em termos da resposta a δ[n – k]. A propriedade da invariância no tempo implica que, se h[n] é a resposta a δ[n], então a resposta a δ[n - k] é h[n – k]. Com isso, podemos dizer que: ∑ ∞ −∞= −= k knhkxny ][][][ (Eq. 1.1) Como conseqüência, um sistema linear invariante no tempo é completamente descrito por sua resposta ao impulso. Essa equação é conhecida como soma de convolução (convolution sum) que pode ser representada pela notação: y[n] = x[n]*h[n] (Eq. 1.2) Apesar da semelhança na notação, deve-se salientar que a soma de convolução para sinais discretos não é uma aproximação da integral de convolução.
  • 12.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 12 Propriedades da soma de convolução: 1) Comutatividade: x[n]*h[n] = h[n]*x[n] Isso pode ser facilmente justificável com uma mudança de variável 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) Conexão em Cascata 4) Conexão em Paralelo
  • 13.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 13 5) Causalidade Como definido anteriormente, um sistema é dito causal se sua resposta não depende de eventos futuros. Ou seja, para calcular a saída de y[n0], precisamos apenas de x[n], n ≤ n0. Isso implica na condição: 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: ∞<= ∑ ∞ −∞=n nhS |][| 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], então seu sistema inverso, se existir, tem resposta ao impulso hi[n] definida pela relação: 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 através de uma equação de diferenças de coeficientes constantes lineares de n-ésima ordem da forma: ∑ ∑= = −=− N k M k kk knxbknya 0 0 ][][ (Eq. 1.3) Um exemplo de um tal sistema é um acumulador definido pela seqüência cujo diagrama de blocos pode ser visto na figura abaixo:
  • 14.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 14 Tal sistema é representado pela equação de diferenças: 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 saída é dada pela entrada x[n] somada com o valor anterior do acumulador, y[n – 1]. 1.4 Sistemas LTI como Filtros Seletores de Frequência O termo filtro é normalmente usado para descrever um dispositivo que discrimina, de acordo com algum atributo do objeto aplicado como entrada, o que passa através dele. Por exemplo, como um filtro de ar que deixa o ar passar, mas retém partículas de impureza. Um sistema LTI também funciona como um tipo de discriminante ou filtrando entre os vários componentes de frequência na sua entrada. A forma da filtragem é definida pela resposta de frequência H(ω) que depende da escolha de parâmetros do sistema (como os coeficientes do filtro). Assim, com uma escolha apropriada de parâmetros, podemos projetar filtros seletores de frequência que deixam passar sinais contendo componentes de frequência em algumas bandas e atenuando sinais contendo componentes de frequência em outras bandas. Em geral, um sistema LTI modifica o espectro do sinal de entrada X(ω) de acordo com a resposta em frequência H(ω) que leva a um sinal de saída com espectro Y(ω) = H(ω)X(ω). De certa forma, H(ω) atua como uma função de peso nos diferentes componentes de frequência do sinal de entrada. Assim, um
  • 15.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 15 sistema LTI pode ser visto como um filtro embora não bloqueie completamente qualquer componente de frequência do sinal de entrada. Consequentemente, os termos “sistema LTI” e “filtro” são sinônimos e são normalmente usados sem distinção. Um filtro é um sistema LTI usado para desempenhar a função de filtragem seletora de frequência. Filtragem é usada em processamento digital de sinais em uma grande variedade de formas, como remoção de ruído, equalização, análise espectral de sinais, etc. Filtros são normalmente classificados de acordo com suas características no domínio da frequência como passa-baixa, passa-alta, passa-faixa e rejeita-faixa. As características de resposta em magnitude ideais desses tipos de filtros estão ilustradas na Fig. 1.2. Esses filtros ideais têm características de ganho constante na banda de passagem (normalmente, tomados como unitários) e ganho zero na banda de corte. Mais detalhes sobre filtros digitais e formas de projeto serão vistos nos Capítulos 4 e 5.
  • 16.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 16 Fig. 1.2. Resposta em magnitude para alguns filtros seletores de frequência discretos no tempo.
  • 17.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 17 Outra característica de um filtro ideal é uma resposta de fase linear. Considere que um sinal {x[n]} com componentes de frequência dentro da faixa de ω1< ω <ω2 passa por um filtro com resposta em frequência:    << = − senão Ce H nj 0 )( 21 0 ωωω ω ω onde C e n0 são constantes. O sinal na saída do filtro terá um espectro: 0 )()()()( nj eCXHXY ω ωωωω − == Aplicando as propriedades da transformada de Fourier, obtemos a saída no domínio do tempo: Y[n] = C.x[n – n0] Consequentemente, a saída do filtro é simplesmente uma versão escalonada e atrasada do sinal de entrada. Tanto um atraso simples quanto uma diferença em escala são considerados toleráveis e não distorções do sinal. Portanto, filtros ideais têm uma característica de fase linear na banda de passagem que é: Θ(ω) = -ωn0 A derivada da fase em relação à frequência é medida em unidades de atraso. Assim, podemos definir o atraso do sinal como uma função da frequência como: ω ω ωτ d d g )( )( Θ −= τg(ω) é chamado de atraso de grupo (group delay) do filtro. Entendemos τg(ω) como o atraso de tempo que os componentes de frequência ω de um sinal são
  • 18.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 18 submetidos à medida que ele passa da entrada à saída do sistema. Note que, quando Θ(ω) é linear, τg(ω) = n0 = constante. Nesse caso, todas as componentes de frequência do sinal de entrada sofrem o mesmo atraso de tempo. Como conclusão, todos os filtros ideais têm características de magnitude constante e fase linear dentro da banda de passagem. Em todos os casos, tais filtros não são fisicamente realizáveis, mas servem como idealizações matemáticas para filtros práticos. 1.5 Representação de Sequências pela Transformada de Fourier Assim como sinais do contínuo, os sinais discretos no tempo também podem ser representados de formas diferentes. Uma das formas mais utilizadas é através da transformação do sinal para o domínio da freqüência através da Transformada de Fourier. Muitas seqüências podem ser representadas por uma integral de Fourier da forma: ∫− = π π ωω ω π deeXnx njj )( 2 1 ][ (Eq. 1.4) onde X(ejw ) é dada por: ∑ ∞ −∞= − = n njj enxeX ωω ][)( (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 função complexa em ω. Como na resposta à freqüência, algumas vezes, pode-se expressar X(ejω ) na forma: X(ejω ) = XR(ejω ) + j.XI(ejω )
  • 19.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 19 ou na forma polar: X(ejω ) = |X(ejω )| ej∠X(e^jω) As quantidades |X(ejω )| e ∠X(ejω ) são chamadas de magnitude e fase da Transformada de Fourier (também chamada de espectro de Fourier ou, simplesmente, espectro). Há casos onde a Transformada de Fourier para uma dada seqüência não converge. Esses casos podem ser definidos através da Transformada Z como veremos posteriormente. Podemos verificar facilmente que as Eqs. 1.4 e 1.5 são inversas realmente. Especificamente, considere: ^ ][][ 2 1 nxdeemx nj m mj =      ∫ ∑ − ∞ −∞= − π π ωω ω π Se trocarmos a ordem da integração com o somatório, temos:         = ∫∑ − − ∞ −∞= π π ω ω π demxnx mnj m )( ^ 2 1 ][][ Calculando a integral dentro dos parênteses, temos:    ≠ = = − − =∫− − nm nm mn mn de mnj ,0 ,1 )( ))(sin( 2 1 )( π π ω π π π ω ][ mn −= δ
  • 20.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 20 Assim: ][][][][ ^ nxmnmxnx m =−= ∑ ∞ −∞= δ Exemplo 1: Seja x[n] = an u[n]. A TF é dada por: ∑ ∑∑ ∞ = − ∞ = −− ∞ −∞= − − ==== 0 0 1 1 )(][)( n jw n njwjwnn n jwnjw ae aeeaenxeX Que converge se |a.e-jw | < 1 ou |a| < 1. OBS: α α − →∑ ∞ = 1 1 0n n , para |α| < 1  Exemplo 2: Vamos calcular a resposta ao impulso de um filtro passa-baixa ideal cuja resposta em freqüência é:    << < = π||,0 ||,1 )( ww ww eH c cjw LPF A resposta o impulso hLPF[n] pode ser encontrada através da Transformada Inversa de Fourier:
  • 21.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 21 ∫∫ −− == c c w w jwnjwnjw LPFLPF dwedweeHnh ππ π π 2 1 )( 2 1 ][ ∞<<−∞= n n nw nh c LPF , )sin( ][ π  1.5.1 Propriedades da Transformada de Fourier Algumas propriedades da TF: Seja: x[n] ↔ X(ejw ) e y[n] ↔ Y(ejw ) Propriedade Seqüência Transformada de Fourier Linearidade a.x[n] + b.y[n] a.X(ejw ) + b.Y(ejw ) Deslocamento no Tempo x[n – nd] e-jwnd X(ejw ) Deslocamento na Freq ejwon x[n] X(ej(w – w0) ) Reverso no Tempo x[-n] X(e-jw ) X*(e-jw ), se x[n] é real Diferenciação em Freq n.x[n] j dX(ejw )/dw Convolução x[n]*y[n] X(e-jw ).Y(e-jw ) Modulação x[n].y[n] ∫− − π π θθ θ π deYeX wjj )()( 2 1 )(
  • 22.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 22 1.6 Códigos do MatLab Função Impulso function [x, n] = impseq(n0, n1, n2) % Impulso n = [n1:n2]; x = [(n-n0) == 0]; stem (x); Exemplos: 1. >> impseq (5, 0, 10); 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]');
  • 23.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 23 Função 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]');
  • 24.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 24 Senóide function x = sinseq(n1,n2) % Senóide 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); Operações em sequências Adição 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; Multiplicação 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;
  • 25.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 25 Deslocamento y[n] = x[n – k] function [y,n] = sigshift(x, m, n0) n = m + n0; y = x; Inversão 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 sequência. Sobre as sequências, 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)’);
  • 26.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 26 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)'); Convolução Considere as sequências: x = [3, 11, 7, 0, -1, 4, 2], -3 ≤ n ≤ 3 h = [2, 3, 0, -5, 2, 1]; -1 ≤ n ≤ 4 onde, novamente, os termos em negrito indicam a origem do eixo das abscissas. As sequências podem ser vistas abaixo: x[n] h[n]
  • 27.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 27 Podemos usar a função 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 função conv é que não sabemos, na resposta, onde está a origem da sequência. Para tanto, vamos criar uma nova função: 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 = 6 31 47 6 -51 -5 41 18 -22 -3 8 2 ny = -4 -3 -2 -1 0 1 2 3 4 5 6 7 A amplitude -51 está no ponto de origem (ny = 0).
  • 28.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 28 Equações de Diferenças e Resposta ao Impulso Exemplo: Dada a seguinte equação de diferenças: 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 equação de diferenças é da forma: ∑ ∑= = −=− N k M k kk knxbknya 0 0 ][][ De acordo com a equação dada, temos: a = [1, -1, 0.9] e b = [1] No MatLab, fazemos: >> x = impseq(0, -20, 120); >> n = [-20:120]; >> h = filter(b, a, x); >> stem(n, h); title('Resposta ao impulso'); xlabel('n'); ylabel('h[n]');
  • 29.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 29 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]'); c) O sistema é estável? Como vimos, um sistema é estável se: ∞<= ∑ ∞ −∞=n nhS |][| Assim, no MatLab, basta fazermos: >> sum(abs(h)) Ans = 14.8785 Logo, o sistema é estável. 
  • 30.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 30 1.7 Exercícios 1. Considere um sistema linear arbitrário com entrada x[n] e saída y[n]. Mostre que se x[n] = 0 para todo n, então y[n] deve ser zero para todo n também. 2. Usando a definição de linearidade, mostre que o sistema de atraso ideal e a média móvel são ambos lineares. 3. Para cada sistema abaixo, determine se ele é (1) estável, (2) causal, (3) linear, (4) invariante no tempo e (5) sem memória: a. T(x[n]) = g[n]x[n], com g[n] dado b. T(x[n]) = Σn k=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, a e b números reais f. T(x[n]) = x[-n]) g. T(x[n]) = x[n] + 3.u[n + 1] 4. O sistema T abaixo é invariante no tempo. Quando as entradas dele são x1[n], x2[n] e x3[n], as saídas são y1[n], y2[n] e y3[n], respectivamente.
  • 31.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 31 a) Determine se o sistema pode ser linear. b) Se a entrada x[n] do sistema é um impulso (δ[n]), qual a saída y[n]? c) Determine a relação entre a entrada e a saída do sistema. 5. Para cada par de sequências abaixo, use convolução 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 saída y[n] que satisfaz a equação de diferenças: y[n] = n.y[n – 1] + x[n] O sistema é causal tal que, se x[n] = 0, para n < 0, então y[n] = 0, para n < 0. a) Se x[n] = δ[n], determine y[n] para todo n. b) O sistema é linear? c) O sistema é invariante no tempo?
  • 32.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 32 7. Plote a seguintes sequências no MatLab: a) x[n] = n2 .(u[n + 5] – u[n – 6]) + 10.δ[n], -5 ≤ n ≤ 5 b) x[n] = 20.(0,5)n .(u[n – 4] – u[n - 10]), -5 ≤ n ≤ 5 8. Seja x[n] = {1, -2, 4, 6, -5, 8, 10}, gere e plote no MatLab as seguintes sequências: 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 sequências: 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 convolução linear tem as seguintes propriedades como válidas: 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 função conv_m.m apresentada anteriormente. 10. A operação de dilatação de sinal (ou decimação ou downsampling) é definida por: y[n] = x[nM] na qual a sequência de entrada é down-sampled por um fator inteiro M. Por exemplo, se : x[n] = {...., -2, 4, 3, -6, 5, -1, 8,...} então a sequência down-sampled por um fator de 2 é dada por: y[n] = {..., -2, 3, 5, 8, ..} Escreva uma função no MatLab que execute essa dilatação. A função deve ser da forma: function [y, n] = dnsample(x, n, M) Cuidado com a origem do eixo!! 
  • 33.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 33 1.8 Bibliografia Complementar 1. Vinay K. Ingle, John G. Proakis, Digital Signal Processing, Thomson Learning, 2000. 2. Michael Weeks, Digital Signal Processing Using MatLab and Wavelets, Infinity Science Press, 2007. 3. Alan V. Oppenheim, Ronald Schafer, Discrete Time Signal Processing, Prentice Hall, 1989
  • 34.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 34 2. A Transformada Z A Transformada Z (TZ) é uma ferramenta matemática poderosa para análise de sinais e sistemas. A transformada Z constitui a forma discreta da transformada de Laplace. Seja a Transformada de Fourier (TF) de uma seqüência dada por: ∑ ∞ −∞= − = n jwnjw enxeX ][)( Seja z = ejw . Temos então, a TZ definida como: ∑ ∞ −∞= − = n n znxzX ][)( Essa é chamada também de TZ bilateral. A transformada unilateral é dada por: ∑ ∞ = − = 0 ][)( n n znxzX Notadamente, há uma relação entre a TZ e a TF. Se z é uma variável 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 representação gráfica corresponde ao círculo no Plano imaginário (chamado de Plano-Z). Se esse círculo tem raio igual a 1, então temos a condição da TZ = TF (Fig. 2.1). Assim, a TZ calculada no círculo unitário é igual à TF. A Transformada Z não converge para todos os valores de Z. Onde a TZ converge é chamada de região de convergência (ROC – Region of Convergence). Para garantir a convergência é preciso que: ∞<∑ ∞ = − 0 |][| n n znx Assim, é possível que TZ convirja mesmo se a TF não convergir. Para a TF convergir, a ROC da TZ deve conter o círculo unitário. Uma transformada Z só está completamente definida se sua ROC estiver determinada.
  • 35.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 35 Fig. 2.1. Plano Z: representação gráfica da transformada Z no plano complexo. No círculo unitário, a transformada Z reduz-se à transformada de Fourier. A série definida pela TZ é chamada de série de Laurent. Uma tal série representa uma função contínua em qualquer ponto dentro da região de convergência. Assim, a TZ e todas as suas derivadas devem ser funções contínuas de z na ROC. Isso implica que, se a região de convergência uniforme inclui o círculo unitário, então a TF e suas derivadas com respeito a w são funções contínuas de w. Além disso, a seqüência deve ser absolutamente somável, i.e., uma seqüência estável. Entre as mais úteis e importantes TZs estão aquelas para as quais X(z) é uma função racional dentro da região de convergência, i.e.: )( )( )( zQ zP zX = onde P(z) e Q(z) são polinômios em z. Os valores de z que fazem X(z) = 0 são chamados de zeros de X(z). Os valores de z para os quais X(z) tende a infinito são chamados de pólos de X(z). Os pólos de X(z) são as raízes do polinômio do denominador.
  • 36.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 36 2.1 Propriedades da Transformada Z a) Linearidade: ax1[n] + bx2[n] ↔ aX1(z) + bX2(z), ROC = ROCx1∩ ROCx2 Comentários: A prova de tal propriedade vem diretamente da definição de transformada Z: ∑ ∞ −∞= − = n n znxzX ][)( Considere que x[n] = ax1[n] + bx2[n]. Logo: =+=+= ∑∑ ∞ −∞= −− ∞ −∞= − n nn n n znbxznaxznbxnaxzX ][][])[][()( 2121 ∑∑∑∑ ∞ −∞= − ∞ −∞= − ∞ −∞= − ∞ −∞= − +=+= n n n n n n n n znxbznxaznbxznax ][][][][ 2121 = aX1(z) + bX2(z) b) Deslocamento no tempo: x[n + n0] ↔ zn 0.X(z), ROC = ROCx (cuidado deve ser tomado observando o que acontece para z = 0 ou z = ∞). Comentários: Suponha que y[n] = x[n – n0]. Logo: ∑ ∞ −∞= − −= n n znnxzY ][)( 0 Fazendo m = n – n0: ∑∑∑ ∞ −∞= −− ∞ −∞= −− ∞ −∞= +− === m mn m nm m nm zmxzzzmxzmxzY ][..][][)( 000 )( )(.)( 0 zXzzY n− =
  • 37.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 37 c) Multiplicação por uma exponencial discreta: an x[n] ↔ X(z/a), ROC = |a|ROCX Comentários: Essa propriedade é observável substituindo an x[n] na definição de TZ: ∑∑ ∞ −∞= − ∞ −∞= − == n nn n n znxaznxzX ][][)( Como conseqüência disso, todas as posições de pólos e zeros são escalonadas por um fator de a, já que, se X(z) tiver um pólo em z = z1, X(a-1 z) terá um pólo em z = a.z1. Se a for um número real, essa propriedade pode ser entendida como uma compressão ou expansão do plano Z. d) Convolução no tempo: x1[n]*x2[n] ↔ X1(z).X2(z) , ROC contém ROCx1∩ ROCx2 Comentários: Seja: ∑ ∞ −∞= −= k knxkxny ][][][ 21 Tal que: ∑ ∞ −∞= − = n n znyzY ][)( ∑ ∑ ∞ −∞= − ∞ −∞=       −= n n k zknxkx ][][ 21 Se mudarmos a ordem dos somatórios: ∑ ∑ ∞ −∞= ∞ −∞= − −= k n n zknxkxzY ][][)( 21 Fazendo no segundo somatório m = n – k, temos:
  • 38.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 38 ∑ ∑ ∞ −∞= − ∞ −∞= −       = k k m m zzmxkxzY ][][)( 21 Assim, para valores de z dentro das regiões de convergência para X1(z) e X2(z), podemos escrever: )()()( 21 zXzXzY = e) Diferenciação no Domínio Z: n.x[n] ↔ -z.dX(z)/dz, ROC = ROCx (cuidado deve ser tomado observando o que acontece para z = 0 ou z = ∞). Comentários: Essa propriedade pode ser facilmente provada diferenciando a definição da TZ: ∑ ∞ −∞= − = n n znxzX ][)( ∑ ∞ −∞= −− −= n n znxn zd zdX 1 ][)( )( )( . (-z) ∑ ∞ −∞= −− −−=− n n znxnz zd zdX z 1 ][)( )( )( ∑ ∞ −∞= − ==− n n nnxZznnx zd zdX z ]}[{][ )( )( f) Reverso no tempo: x[-n] ↔ X(z-1 ), ROC = 1/ROCX Comentários: Novamente, a definição de TZ prova esta propriedade: ∑ ∞ −∞= − −= n n znxzX ][)( Fazendo m = -n, temos:
  • 39.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 39 )()]([][)( 11 − ∞ −∞= −− ∞ −∞= === ∑∑ zXzmxzmxzX m m m m 2.2 Pares de Transformadas Z Segue um conjunto de pares de Transformadas Z mais úteis: 2.3 Exemplos de Cálculo da Transformada Z A seguir, vamos apresentar alguns cálculos de transformada Z e como definir a ROC.
  • 40.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 40 Exemplo 1: x[n] = an u[n] ∑ ∑ ∑ ∑ ∞ −∞= ∞ −∞= ∞ = ∞ = −−−− ==== n n n n nnnnnn azzaznuaznxzX 0 0 1 )(][][)( ROC: |az-1 | < 1 ⇒ |z| > |a| ||||, 1 1 )()( 1 0 1 az az z az azzX n n > − = − == − ∞ = − ∑ Para a = 1: 1||, 1 1 )(][][ 1 > − =→←= − z z zXnunx Z Observamos que, para a = 1, a ROC não contém o círculo unitário. Logo, a TF para essa seqüência não converge. 
  • 41.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 41 Exemplo 2: x[n] = -an u[-n – 1] ∑∑∑ ∞ −∞= − ∞ −∞= − ∞ −∞= − −−−=−−−== n nn n nn n n znuaznuaznxzX ]1[]1[][)( ∑∑∑ ∞ = − ∞ = − − −∞= − −=−=−= 0 1 1 1 )(1)( n n n nn n nn zazazazX ROC: |a-1 z|<1 ⇒ |z|<|a| ||||, 1 1 1)(1)( 1 0 1 az az z za zazX n n < − = − −=−= − ∞ = − ∑ 
  • 42.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 42 Exemplo 3: x[n] = (1/2)n u[n] + (-1/3)n u[n] ∑∑ ∞ −∞= − ∞ −∞= −               −+      == n n nn n n znunuznxzX ][ 3 1 ][ 2 1 ][)( ∑∑ ∞ −∞= − ∞ −∞= −       −+      = n n n n n n znuznuzX ][ 3 1 ][ 2 1 )( ∑∑ ∞ = − ∞ = −       −+      = 00 3 1 2 1 )( n n n n n n zzzX ∑∑ ∞ = − ∞ = −       −+      = 0 1 0 1 3 1 2 1 )( n n n n zzzX (i) (ii) 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 11 3 1 1 1 2 1 1 1 )( −− + + − = zz zX Para X(z), os pólos são dados por z=1/2 e z=-1/3 e os zeros são z=0 e z=1/12. Uma das propriedades da ROC que podemos observar aqui é que os pólos não fazem parte dela. 
  • 43.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 43 Exemplo 4: x[n] = (-1/3)n u[n] – (1/2)n u[-n – 1] ∑∑ ∞ −∞= − ∞ −∞= −         −−      −      −== n n nn n n znunuznxzX ]1[ 2 1 ][ 3 1 ][)( ∑∑ ∞ −∞= − ∞ −∞= − −−      −      −= n n n n n n znuznuzX ]1[ 2 1 ][ 3 1 )( ∑∑ − −∞= − ∞ = −       −      −= 1 0 2 1 3 1 )( n n n n n n zzzX ∑∑ ∞ = −∞ = −       −      −= 10 2 1 3 1 )( n n n n n n zzzX ∑∑ ∞ = −∞ = −               −+      −= 0 1 0 1 2 1 1 3 1 )( n n n n zzzX (i) (ii) 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
  • 44.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 44 ROC(i) ROC(ii) ROC: z z zzz zX 21 2 3 1 1 1 21 1 1 3 1 1 1 )( 11 − − + = − −+ + = −− 
  • 45.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 45 Exemplo 5: Função delta δ[n]: δ[n] = 0, n ≠ 0, e δ[n] = 1, n = 0 Transformada Z: ∑ ∞ −∞= − === n n zznxzX 1.1][)( 0 ROC = Todo o Plano Z  Exemplo 6: x[n] = δ[n – n0] ∑∑ ∞ −∞= −− ∞ −∞= − =−== n nn n n zznnznxzX 0 ][][)( 0δ ROC = Todo o Plano Z.  Nos exemplos 5 e 6, x(n) é finita. X(z) é um polinômio de base z-1 e todo o plano Z menos quando z = 0. Nesse ponto, a transformada não é definida. Exemplo 7: Determine a transformada Z da sequência: 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] ↔ zn 0.X(z)), temos: X(z) = Z{x[n]} = z-2 .Z{n(0,5)n .cos(πn/3)u[n]} Considerando agora a diferenciação no domínio 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 Seção 2.2:
  • 46.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 46 21 1 25,0) 3 cos.5,0(21 ) 3 cos.5,0(1 ]][) 3 cos()5,0[( −− − +− − = zz z nu n z n π π π 21 1 25,05,01 25,01 ]][) 3 cos()5,0[( −− − +− − = zz z nu n z n π , ROC = |z| > 0,5 Assim:       +− − −= −− − − 21 1 1 25,05,01 25,01 )( zz z dz d zzX 4321 543 0625,025,075,01 0625,05,025,0 )( −−−− −−− +−+− +− = zzzz zzz zX ROC = |z| > 0,5 O seguinte procedimento no MatLab pode ajudar a verificar se a transformada está correta. Para tanto, vamos calcular as primeiras 8 amostras da sequência 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 sequência 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) % sequência original x = 0 0 0 0.2500 -0.2500 -0.3750 -0.1250 0.0781 Conferindo com a sequência gerada pelo processo de filtragem. 
  • 47.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 47 2.4 Propriedades da Região de Convergência A região de convergência (ROC) traz algumas propriedades: 1) A ROC é um anel ou disco no Plano Z com centro na origem. 2) A TF da seqüência x[n] converge absolutamente se e somente se a ROC da TZ contém o círculo unitário. 3) A ROC não pode conter pólos. 4) Se x[n] é uma seqüência de duração finita, a ROC é todo plano Z. 5) Se x[n] é causal (right-sided), a ROC extende-se para além dos pólos mais externos, possivelmente tendendo a infinito. 6) Se x[n] é não causal (left-sided), a ROC extende-se para uma região menor que o menor pólo até zero.
  • 48.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 48 7) Se x[n] é uma seqüência com componentes parte causal e parte não-causal, então a ROC é um anel. 8) A ROC é uma região conectada. 2.5 A Transformada Z Inversa O cálculo da TZ inversa não é tão direto quanto o da TF. Aqui, existem diversas maneiras formais e informais de calcular a TZ inversa dada uma expressão algébrica e a ROC associada. Seja a Transformada Z definida por: ∑ ∞ −∞= − = n n znxzX ][)( 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: ∫ ∫ ∑ ∞ −∞= −−− = C C n nkk dzznxdzzzX 11 ][)( (1) onde C denota o contorno fechado na ROC de X(z), tomado no sentido anti- horário. Como a série converge nesse contorno, podemos mudar a ordem da integração e do somatório no lado direito, ficando com:
  • 49.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 49 ∫ ∑ ∫ ∞ −∞= −−− = C n C nkk dzznxdzzzX 11 ][)( (2) Pelo teorema de integração de Cauchy:    ≠ = =∫ −− kn kn dzz j C nk ,0 ,1 2 1 1 π (3) onde C é qualquer contorno que inclui a origem. Aplicando (3), o lado direito de (2) reduz-se a 2πj.x[k] e assim a fórmula inversa é alcançada: ∫ − = C k dzzzX j kx 1 )( 2 1 ][ π (4) Fig. 2.2. Contorno C para a integral da transformada Z inversa. Essa é a inversa da transformada Z para uma dada seqüência. No entanto, nós não precisaremos usar essa inversão já que dentro de sinais e sistemas, as transformadas Z são funções racionais (i.e., razão entre dois polinômios). Para
  • 50.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 50 tais transformadas, há métodos mais simples de inversão que envolvem tabelas conhecidas e métodos mais simples. Os principais métodos são: - Método da inspeção - Expansão em Frações Parciais - Expansão em Séries de Potências O método da inspeção é o mais simples e consiste em apenas observar a transformada e ver se ela é da forma de alguma TZ conhecida. Por exemplo, dado: 1 2 1 1 1 )( − − = z zX , |z|> ½ Por observação, sabemos que: x[n] = -(½)n u[-n – 1] Notadamente, o método da inspeção não é o mais apropriado para calcular TZs inversas mais complexas. Para ver como obter uma expansão em frações parciais, vamos assumir que X(z) pode ser expressa como uma razão de polinômios em z-1 , i.e., ∑ ∑ = − = − = N k k k M k k k za zb zX 0 0 )( Para calcular a transformada inversa, tentamos expressar X(z) da forma: ∑∑ = − − = − − += N k k k NM r r r zd A zBzX 1 1 0 1 )(
  • 51.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 51 Exemplo 8: Suponha: )1)( 2 1 1( 21 2 1 2 3 1 21 )( 11 21 21 21 −− −− −− −− −− ++ = +− ++ = zz zz zz zz zX Vamos considerar que: = − + − += − − 1 2 1 1 0 1 2 1 1 )( z A z A BzX )1)( 2 1 1( ) 2 1 1()1()1)( 2 1 1( 11 1 2 1 1 11 0 −− −−−− −− −+−+−− = zz zAzAzzB )1)( 2 1 1( ) 2 1 1()1() 2 1 2 1 1( 11 1 2 1 1 211 0 −− −−−−− −− −+−++−− = zz zAzAzzzB Logo: = −− +−−−+++ = −− −− )1)( 2 1 1( ) 2 1 () 2 1 2 3 ()( )( 11 0 2 210 1 210 zz BzAABzAAB zX )1)( 2 1 1( 21 11 21 −− −− −− ++ = zz zz Assim, temos: 1210 =++ AAB
  • 52.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 52 2 2 1 2 3 210 =−−− AAB 21 2 1 00 =⇒= BB Com isso, ficamos com:         −=+ −=+ ⇒ =−−− =++ 5 2 1 1 2 2 1 3 12 21 21 21 21 AA AA AA AA Resolvendo, temos: A1 = -9 e A2 = 8 Logo: 1 1 1 8 2 1 1 9 2)( − − − + − − += zz zX que corresponde à Transformada Z da sequência: ][.8][) 2 1 .(9][2][ nununnx n +−= δ  A expansão em série de potências é aplicada quando a transformada Z é um polinômio da forma: ∑ ∞ −∞= − = n n znxzX ][)( Isso ocorre, principalmente, se a TZ é uma seqüência finita. Por exemplo, considere que a TZ de uma seqüência x[n] é da forma: )1)(1)( 2 1 1()( 1112 −−− −+−= zzzzzX
  • 53.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 53 Uma expansão em frações parciais para esse caso não é apropriada. No entanto, efetuando os produtos, podemos reduzir a expressão a: 12 2 1 1 2 1 )( − +−−= zzzzX que equivale à seqüência: x[n] = δ[n + 2] – ½.δ[n + 1] - δ[n] + ½.δ[n – 1]  Exemplo 9: Considere a função: 143 )( 2 +− = zz z zX Primeiro, vamos re-arranjar X(z) tal que ela se torne uma função em potências de z-1 : 21 1 21 1 43 0 43 )( −− − −− − +− + = +− = zz z zz z zX 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 informação sobre a função residuez, digite help residuez no MatLab.
  • 54.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 54 que corresponde a: 1 1 3 1 1 5,0 1 5,0 )( − − − − − = z z zX De maneira similar, podemos voltar à forma anterior: >> [b, a] = residuez(R, p, C) b = -0.0000 0.3333 a = 1.0000 -1.3333 0.3333 que corresponde a: 21 1 21 1 21 1 43 0 43 3 1 3 4 1 3 1 0 )( −− − −− − −− − +− + = +− = +− + = zz z zz z zz z zX como antes.  Exemplo 10: Calcule a transformada Z inversa de: )9,01()9,01( 1 )( 121 −− +− = zz zX , |z|>0,9 Podemos calcular o polinômio no denominador assim como os resíduos usando MatLab: >> b = 1; >> a = poly([-0.9 -0.9 0.9]) % calcula os coeficientes do polinômio que tem essas raízes a = 1.0000 0.9000 -0.8100 -0.7290
  • 55.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 55 >> [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 frações parciais como: 1211 9,01 25,0 )9,01( 5,0 9,01 25,0 )( −−− + + − + − = zzz zX , |z| > 0,9 121 1 1 9,01 25,0 )9,01( 9,0 9,0 5,0 9,01 25,0 )( −− − − + + − + − = zz z z z zX , |z| > 0,9 que, de acordo com as propriedades da transformada Z e a tabela da Seção 2.2, nos dá: ][)9,0(25,0]1[)9,0)(1( 9 5 ][)9,0.(25,0][ 1 nununnunx nnn −++++= + Vamos tentar deixar todas as parcelas em função de u[n]. Para tanto, vamos trabalhar na segunda parcela: ]1[)9,0)(1( 9 5 1 ++ + nun n Observe que: a.u[n + 1] = a.u[n = -1] + a.u[n]. Logo: ][)9,0)(1( 9 5 )9,0)(1( 9 5 ]1[)9,0)(1( 9 5 1 1 11 nunnnun n n nn + −= ++ +++=++ ][)9,0)(1( 9 5 ]1[)9,0)(1( 9 5 11 nunnun nn ++ +=++
  • 56.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 56 ][)9,0)(1(5,0][)9,0.(9,0).1( 9 5 nunnun nn +=+= ][)9,0(5,0][)9,0(5,0 nunun nn += Logo: ][)9,0(25,0][)9,0.(5,0][)9,0.(75,0][ nununnunx nnn −++= Como antes, podemos verificar as 8 primeiras amostras da sequência x[n], no MatLab: >> [delta, n] = impseq(0,0,7); >> x = filter (b, a, delta) x = 1.0000 0.9000 1.6200 1.4580 1.9683 1.7715 2.1258 1.9132 >> x = 0.75*(0.9).^n+0.5*n.*(0.9).^n + 0.25*(-0.9).^n x = 1.0000 0.9000 1.6200 1.4580 1.9683 1.7715 2.1258 1.9132 
  • 57.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 57 2.6 Exercícios 1. Calcule a transformada Z das sequências: a. x[n] = -(1/2)n u[-n – 1] b. y[n] = (-1/2)n u[n] + (1/3)n u[-n – 1] c. y[n] =2δ[n – 3] + (-1/4)n u[-n - 1] + (1/2)n u[n] 2. Calcule a transformada Z das seguintes sequências usando as suas propriedades e a tabela da Seção 2.2 e verifique seus resultados usando MatLab. a. x[n] = 2.δ[n-2] + 3u[n – 3] b. x[n] = (1/3)n u[n – 2] + (0,9)n-3 u[n] 3. Seja x[n] uma sequência com transformada Z dada por X(z). O que se pode dizer sobre as sequências 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. 1 2 1 1 1 )( − + = z zX , ROC = |z| > ½ b. 1 2 1 1 1 )( − + = z zX , ROC = |z| < 1/2 c. 21 1 8 1 4 3 1 2 1 1 )( −− − ++ − = zz z zX , ROC = |z| > 1/2
  • 58.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 58 5. Determine a transformada inversa usando o método de expansão em frações parciais de: 321 321 1 4 1 8 13 4 11 1 441 )( −−− −−− −+− +−− = zzz zzz zX sabendo que a sequência é causal. 6. Suponha que X(z) é: 21 1 1 81,01 32 )( −− − +− + = zz z zX , |z| > 0,9 Encontre as primeiras 20 amostras de x[n], usando o MatLab. 
  • 59.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 59 2.7 Bibliografia Complementar 1. Vinay K. Ingle, John G. Proakis, Digital Signal Processing, Thomson Learning, 2000. 2. Michael Weeks, Digital Signal Processing Using MatLab and Wavelets, Infinity Science Press, 2007. 3. Alan V. Oppenheim, Ronald Schafer, Discrete Time Signal Processing, Prentice Hall, 1989
  • 60.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 60 3. Teoria da Amostragem Sinais discretos no tempo podem ser gerados de diferentes formas, mas a mais comum é sendo uma representação de sinais contínuos no tempo. Em parte, isso é devido ao fato que o processamento de sinais contínuos no tempo é feito através do processamento discreto no tempo de seqüências obtidas através de amostragem. Um sinal contínuo 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 representação discreta no tempo de um sinal contínuo no tempo é através de uma amostragem periódica, quando a seqüência de amostras x[n] é obtida de um sinal contínuo no tempo xc(t) de acordo com a relação: x[n] = xc(nT), -∞ < n < ∞ (Eq. 3.1) Na Eq. 3.1, T é chamado de período de amostragem e sua inversa, fs = 1/T, é a freqüência de amostragem, medida em amostras por segundo. Referimo-nos a um sistema que implementa a operação da Eq. 3.1 como um conversor ideal contínuo-para-discreto (C/D) no tempo. Na prática, a operação
  • 61.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 61 de amostragem é implementada por um conversor analógico-para-digital (A/D). Tais sistemas podem ser vistos como aproximações de conversores C/D ideais. Na implementação ou escolha de um conversor A/D deve-se considerar a quantização da saída, linearidade, a necessidade de circuitos sample-and-hold e limitações na taxa de amostragem. Em geral, a amostragem é um processo não-inversível. Ou seja, dada uma seqüência x[n], não é possível reconstruir o sinal original xc(t). Muitos sinais diferentes podem gerar a mesma seqüência de amostras de saída. É 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 conversão desse trem em uma seqüência. Na Fig. 3.2, a diferença fundamental entre xs(t) e x[n] é que xs(t) é um sinal contínuo com valores zero exceto nos inteiros múltiplos de T. x[n], por outro lado, não possui informação explícita sobre a taxa de amostragem e é um sinal onde as regiões que não representam valores inteiros não têm valor definido. São muitas as razões para o aumento no uso de sistemas digitais: 1. Muitas informações (ou dados) estão nessa forma, e.g. entrada/saída de computadores, sinais de controle digital, etc. 2. A disponibilidade de componentes pequenos, confiáveis e de baixo custo, principalmente, com o aumento da escala de integração dos circuitos integrados. 3. Relativa simplicidade no projeto de circuitos e facilidade de implementação usando circuitos integrados.
  • 62.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 62 Fig. 3.2. Amostragem com um trem de impulsos periódicos seguida de uma conversão para uma seqüência discreta no tempo. a) Visão geral do sistema; b) xc(t) (sinal original no tempo contínuo) e xs(t); c) a seqüência x[n] de saída. 4. Ampla utilização de computadores digitais no processamento de todo tipo de dados e sinais. 5. Armazenamento de sinais realizado de modo simples e econômico (simplicidade das memórias digitais) 6. Crescente uso e disponibilidade de técnicas de processamento digital de sinais (DSP).
  • 63.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 63 7. Fidelidade em transmissões longas devido ao uso de estações repetidoras regenerativas. 8. Flexibilidade do formato digital que permite: a. Combinação em um mesmo canal de uma variedade de diferentes tráfegos (telégrafo, dados, voz, imagem, vídeo, etc); b. Multiplexação feita de forma simples e econômica; c. Transmissão com velocidade ajustável; rápida ou lenta em função do tráfego e/ou qualidade exigidas. 9. Uso de parte do sinal digital para controlar o progresso do sinal através do sistema (ex: cabeçalho). 10. Possibilidade da codificação (teoria da informação): a. Codificação da fonte, reduzindo redundância, isto é, compactando os dados; b. Codificação do canal, combatendo os efeitos do ruído, interferências, etc. 11.Aplicações de técnicas de criptografia, garantindo a privacidade e autenticidade da comunicação. A digitalização de sinais analógicos vem tornando-se cada vez mais importante, principalmente, com o desenvolvimento das redes digitais de serviços integrados.
  • 64.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 64 Na conversão analógico-digital é necessário colher-se um número discreto de amostras de um sinal contínuo. O problema crucial na amostragem está com o número de amostras/seg devem ser colhidas. Um número muito pequeno de amostras pode resultar em uma representação demasiadamente pobre do sinal. A análise quantitativa acerca desse problema é estudada pelo Teorema de Shannon-Nyquist. A princípio, pode-se imaginar que, no processo de amostragem de um sinal analógico, há sempre perda de informação 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 condições, as amostras de um sinal podem conter precisamente toda a informação a ele associada. Isto significa que o sinal pode ser perfeitamente recuperado a partir de amostras colhidas sem nenhuma aproximação. O estudo sobre o teorema da amostragem é aplicado a sinais banda limitado, isto é, aqueles que não possuem componentes espectrais para freqüência acima de uma dada freqüência (Fig. 3.3). Fig. 3.3. Exemplo de um sinal banda limitado.
  • 65.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 65 Embora essa condição não seja rigorosamente verificada, ela é bastante útil em termos práticos. 3.1 Teorema de Shannon Teorema de Shannon: Um sinal de banda limitada por fm Hz está unicamente determinado por amostras, se são tomadas, pelo menos, 2.fm amostras eqüidistantes por segundo. Prova: Se as amostras são obtidas a cada Ts segundos, considera-se então um trem de impulsos δTs(t) ∑ ∞ −∞= −= n Ts nTstt )()( δδ A amostragem de um sinal f(t) em intervalos de T segundos será definida por: ∑ ∞ −∞= −== n Tss nTsttfttftf )().()().()( δδ Então a função amostrada contém apenas informações acerca das amostras f(nTs), n = 0, 1, 2, 3, ...., pois ∑ ∞ −∞= −= n s nTstnTsftf )().()( δ Toda a informação 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.
  • 66.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 66 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 auxílio do teorema da convolução na freqüência: f1(t).f2(t) ↔ (1/2π)F1(w)*F2(w) onde * é a operação de convolução. Segue, então, que: ∑ ∞ −∞= −↔ n SsT nwwwwFttf )(*)( 2 1 )()( δ π δ Se: fs(t) ↔ Fs(w) Então, o espectro de fs(t) é dado por:
  • 67.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 67 ∑∑ ∞ −∞= ∞ −∞= −=−= n S s n Sss nwwwF w nwwwwFwF )()( 2 )(*)( 2 1 )( δ π δ π ∑ ∞ −∞= −= n S s s nwwwF T wF )()( 1 )( δ , com ws = 2π/Ts e, finalmente, ∑ ∞ −∞= −= n S s s nwwF T wF )( 1 )( Este espectro é esboçado para vários valores de ws, isto é, vários valores para o espaçamento Ts entre amostras. A escolha do valor de Ts e, consequentemente, de ws é importante para evitar a sobreposição entre sinais no domínio da freqüência. A fig. 3.5 apresenta três casos onde o valor de ws é maior, igual ou menor a wm (freqüência limite da banda do sinal de entrada). Nesses três casos, pode-se ver que não há sobreposição quando ws ≥ 2wm. Então, o uso de um filtro passa-baixa ideal permite recuperar o sinal perfeitamente sem distorções (Fig. 3.6). A sobreposição dos sinais é chamada de aliasing e deve ser evitada.
  • 68.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 68 a) b) c) d) Fig. 3.5. a) Sinal original banda limitado em wm; resultado no domínio da freqüências de amostragens com: b) ws > 2wm, c) ws = 2wm, d) ws < 2wm (sobreposição de sinais – aliasing).
  • 69.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 69 Fig. 3.6. Recuperação do sinal original com um filtro passa-baixa. Para recuperação do sinal com um FPB sem distorções, é preciso que: ws ≥ 2wm ou seja 2π/Ts ≥ 2.2πfm ⇒ Ts ≤ 1/(2fm) seg O limite 1/Ts = 2fm é chamado de taxa de Nyquist. Valores de Ts que não atendam a essa condição podem provocar diversas distorções no sinal, como: • Ganho nas altas freqüências • Perda nas altas freqüências • Modulação das freqüências do sinal original • Casos híbridos Esses problemas podem ser vistos na Fig. 3.7. A Figura 3.8 mostra uma distorção desse tipo em uma imagem. Esse problema (conhecido como efeito Moirée) surgiu por causa de uma baixa resolução utilizada na digitalização da imagem. Ele se apresenta de forma mais forte em partes da imagem que tenham um padrão repetitivo (como essas linhas circulares).
  • 70.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 70 Fig. 3.7. Distorções que podem ser provocadas por escolha errada na banda de passagem do fitro passa-baixa para recuperação do sinal de entrada após a amostragem. Fig. 3.8. Efeito Moirée. 3.2 Re-Obtenção do Sinal a partir de suas amostras De acordo com o teorema de Shannon-Nyquist, se Ts ≤ 1/(2fm), então a passagem do sinal amostrado por um filtro passa-baixa ideal recupera exatamente o sinal analógico. Suponha que o filtro passa-baixa tem função de transferência: H(w) = Ts. ∏(w/(2wm)) então Fs(w).Ts. ∏(w/(2wm)) = F(w)
  • 71.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 71 A seguir, vamos analisar o processo de re-obtenção do sinal no domínio do tempo: f(t) ↔ F(w) = Fs(w).Ts. ∏(w/(2wm)) O uso do teorema da convolução 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 função sample e tem a forma sen(x)/x, tem-se f(t) = fs(t)*Ts(wm/π)Sa(wmt) logo )(*)()()( twSanTtnTf wT tf m n ss ms       −= ∑ ∞ −∞= δ π ∑ ∞ −∞= −= n mss ms twSanTtnTf wT tf )](*)()[()( δ π Lembrando da propriedade da amostragem da função impulso, segue-se ∑ ∞ −∞= −= n smssm nTtwSanTfTftf ))(()(.2)( No caso particular em que Ts = 1/(2fm), tem-se ∑ ∞ −∞= −= n m m ntwSa f n ftf )() 2 ()( π Como o sinal é recomposto através das amostras, observa-se que f(t) corresponde à superposição de várias funções sample deslocadas, centradas em 0, ±T, ±2T, .... (Fig. 3.9).
  • 72.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 72 Fig. 3.9. Interpolação das amostras por filtro passa-baixa. Observações a) Nos pontos de amostragem nT, o valor correto de f(t) é f(nT). Em T = 0, todas as funções sample se anulam, exceto aquele centrado em t=0, cujo valor é f(0). Em t=T apenas a sample aí centrada não é 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 interpolação.
  • 73.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 73 4. Filtros Digitais Um sistema discreto no tempo é definido matematicamente como uma transformação que mapeia uma seqüência de entrada x[n] em uma seqüência de saída y[n]. Isso pode ser denotado por: y[n]=T{x[n]} como representado na Fig. 4.1. Fig. 4.1. Representação de um sistema discreto no tempo Uma classe importante de sistemas consiste naqueles que são lineares e invariantes no tempo. Os sistemas lineares são aqueles que obedecem ao princípio da superposição. Se a propriedade da linearidade é combinada com a representação de uma seqüência geral como uma combinação de impulsos, então um sistema linear pode ser completamente caracterizado pela sua resposta ao impulso. Seja hk[n] a resposta do sistema a δ[n – k]. Assim, como: ∑ ∞ −∞= −= k knkxnx ][][][ δ então }][][{][ ∑ ∞ −∞= −= k knkxTny δ Pelo princípio da superposição, podemos escrever: ∑∑ ∞ −∞= ∞ −∞= =−= k k k nhkxknTkxny ][][}][{][][ δ De acordo com essa equação, a resposta do sistema a qualquer entrada pode ser expressa em termos da resposta a δ[n – k] (o impulso).
  • 74.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 74 A propriedade da invariância no tempo implica que, se h[n] é a resposta a δ[n], então a resposta a δ[n - k] é h[n – k]. Com isso, podemos dizer que: ∑ ∞ −∞= −= k knhkxny ][][][ (Eq. 4.1) Como conseqüência, um sistema linear invariante no tempo é completamente descrito por sua resposta ao impulso. Essa equação é conhecida como soma de convolução (convolution sum) que pode ser representada pela notação: y[n] = x[n]*h[n] (Eq. 4.2) Apesar da semelhança na notação, deve-se salientar que a soma de convolução para sinais discretos não é uma aproximação da integral de convolução. 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], então seus sistema inverso, se existir, tem resposta ao impulso hi[n] definida pela relação: 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 através de uma equação de diferenças de coeficientes constantes lineares de n-ésima ordem da forma: ∑ ∑= = −=− N k M k kk knxbknya 0 0 ][][ (Eq. 4.3) Um exemplo de um tal sistema é um acumulador definido pela seqüência cujo diagrama de blocos pode ser visto na figura abaixo:
  • 75.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 75 Esse sistema é representado pela equação de diferenças: 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. 4.1 Filtros Digitais Em geral, estamos interessados em manipular o sinal. Por exemplo, podemos querer retirar algum ruído de um sinal, como no caso de um sinal de voz, onde o ruído deve ser diferenciado da voz propriamente dita. Para isso, filtros são utilizados. Filtros estão envolvidos em diversas partes de um sistema de processamento digital de sinal. Eles podem ser implementados tanto em hardware quanto em software e atuam em sinais digitais de diversas naturezas, como sons, voz, imagem ou vídeo. Em cada caso, os filtros assumem particularidades diferentes. Vamos entender um pouco como se dá o processo em sinais e, em seguida, particularizar para o caso de imagens digitais. Filtros digitais são formados por poucos componentes. Basicamente são apenas multiplicadores, somadores e elementos de retardo (delay). Desses, multiplicadores e somadores implementam essas operações aritméticas em seqüências discretas. Retardos são unidades que processam elementos anteriores de uma seqüência (Fig. 4.2).
  • 76.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 76 Fig. 4.2. Retardo (delay) aplicado a uma seqüência x[n]. A representação mostrada na Fig. 4.2 em diagrama de blocos é comum para filtros. Os elementos básicos de um filtro também são representados dessa maneira. Nesse caso, o elemento de delay é representado como z-1 , devido à Transformada Z. As representações em diagrama de blocos podem ser vistas na Fig. 4.3. Fig. 4.3. Diagrama de blocos de: a) Somador de duas seqüências, b) multiplicador de duas seqüências, c) multiplicador de uma seqüência por uma constante e d) retardo. Exemplos: 1) Podemos ver na Fig. 4.4 a representação em diagrama de blocos da equação de diferença definida por: y[n] = a1.y[n – 1] + a2.y[n – 2] + b.x[n]
  • 77.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 77 cuja transformada Z (ou função de sistema) é dada por: 2 2 1 11 )( −− −− = zaza b zH Fig. 4.4. Diagrama de blocos para uma equação de diferenças. 2) Uma equação de diferenças pode ser generalizada da forma: ∑ ∑= = −=−− N k M k kk knxbknyany 1 0 ][][][ com função de sistema correspondente: )( )( 1 )( 1 0 zX zY za zb zH N k k k M k k k = − = ∑ ∑ = − = − A função de sistema ou função de transferência corresponde à relação entre a saída e a entrada do sistema. Podemos re-escrever a equação de diferenças na forma de uma relação de recorrência:
  • 78.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 78 ∑ ∑= = −+−= N k M k kk knxbknyany 1 0 ][][][ que pode ser representada em diagrama de blocos como na Fig. 4.5. Fig. 4.5. Representação em diagrama de blocos de uma equação de diferenças geral. Nessa figura, temos: ∑= −= M k k knxbnv 0 ][][ ∑= −+= N k k knyanvny 1 ][][][ Como apresentado na Fig. 4.5, referimos a essa forma de diagrama de blocos como a Forma Direta I. Uma implementação com uma menor quantidade de retardos também pode ser utilizada e é chamada de Forma Direta II (Fig. 4.6, considerando, sem perda de generalizada, M = N).
  • 79.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 79 Fig. 4.6. Representação com menos retardos (Forma direta II). Os filtros são classificados em relação à sua resposta ao impulso. Nesse sentido, os filtros dividem-se em filtros FIR (Finite Impulse Response) e IIR (Infinite Impulse Response). 4.2 Filtros FIR A estrutura de um filtro FIR é bastante regular e, uma vez definidos os coeficientes, o filtro pode ser completamente especificado. Esses são os coeficientes do filtro. Na Fig. 4.7, podemos ver uma estrutura simples de um filtro FIR. Podemos observar que a passagem pelos componentes do filtro se dá sempre da esquerda para a direita. Por isso, esse filtro é chamado também de feed-forward.
  • 80.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 80 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 saída seria y[n]=[0.5, 0.5]. A equação para cada termo é: y[0] = 0.5.x[0] + 0.5.x[-1] y[1] = 0.5.x[1] + 0.5.x[0]
  • 81.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 81 Ou, de forma geral: y[n] = 0.5.x[n] + 0.5.x[n - 1] Os filtros FIR são expressos como: ∑= −= M k k knxbny 0 ][][ com função de transferência: ∑= − = M k k k zbzH 0 )( A resposta ao impulso h[n] é dada por:    −≤≤ = senão Mnb nh n 0 10 ][ e a representação em equação de diferenças é: 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:
  • 82.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 82 Dados os coeficientes, pode-se calcular de forma simples a saída 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 saída é dada por: Há três importantes propriedades de um sistema: • Causalidade • Linearidade • Invariância no tempo Um sistema é dito causal quando ele não precisa de informações futuras para calcular a saída atual. Um sistema é linear se obedece ao princípio da superposição. 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 saída do sistema reflete qualquer deslocamento que a entrada. Ou seja, se y[n] = T{x[n]}, então x[n – m] gera uma saída y[n – m]. Filtros FIR podem implementar diversas diferentes funções apenas com mudanças nos seus coeficientes. A função de um filtro depende de seu comportamento no domínio da freqüência. Um filtro pode ser passa-baixa, passa-alta, passa-faixa, rejeita-faixa ou notch. Um filtro notch é um filtro que tem fendas profundas ou, idealmente, zeros perfeitos na sua resposta em frequência.
  • 83.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 83 Filtros notch são bastante úteis quando frequências específicas devem ser eliminadas. Isso acontece, por exemplo, quando precisamos eliminar a frequência de 60Hz (e seus harmônicos) da rede elétrica. Filtros passa-baixa ou passa-alta permitem passar baixas ou altas freqüências de um sinal. As Figs. 4.8 e 4.9 apresentam exemplos simples de filtros assim. Fig. 4.8. Exemplos de filtros passa-baixa e passa-alta ideais. Fig. 4.9. Exemplos de filtros passa-baixa e passa-alta. Os filtros da Fig. 4.8 são filtros ideais não realizáveis. A Fig. 4.9 apresenta filtros com uma mudança mais suave da banda de passagem para a banda de corte (no FPB) e vice-versa (no FPA).
  • 84.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 84 Na prática, tais filtros têm características um pouco diferentes. Podemos observar ondulações e uma banda de transição mais suave. Essas características podem ser vistas na Fig. 4.10 a qual apresenta o espectro de diferentes filtros (ou seja, suas transformadas de Fourier). É através do espectro que podemos analisar o comportamento do filtro. Fig. 4.10. Padrões de ondulação na banda de passagem ou na banda de parada e um banda de transição suave. Por exemplo, um filtro apenas com coeficientes [0,5 0,5] comporta-se como um FPB. Seu comportamento foi avaliado anteriormente, tendo sua saída definida por: y[n] = 0.5.x[n] + 0.5.x[n - 1]
  • 85.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 85 que é o mesmo que y[n] = (x[n] + x[n – 1])/2. Por isso, filtros passa-baixa são chamados, às vezes, de filtro da média. Um filtro com coeficientes [0,5 -0,5] corresponde a um filtro passa-alta, chamado de filtro de diferenciação. O seguinte código no MatLab apresenta a transformada de Fourier para uma seqüência 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) Seqüência [0,5 0,5] e sua transformada de Fourier (um FPB) e (direita) a seqüência [0,5 -0,5] e sua transformada (um notch FPA). Vamos analisar o FPA: y[n] = (x[n] - x[n – 1])/2 Pequenas diferenças entre as amostras resultam em valores pequenos; grandes diferenças resultam em valores grandes. Assim, a resposta em frequência desse filtro deve atenuar mudanças suaves no sinal (como as relacionadas com as
  • 86.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 86 baixas frequências) e enfatizar mudanças rápidas (como as relacionadas com as altas frequências). Dois outros tipos de filtros são notch e passa-faixa. Filtros notch eliminam frequências específicas. Filtros passa-faixa têm 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 frequência através 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 frequência através 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 é simétrico >> half = 1:ceil(length(Y2)/2);
  • 87.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 87 >> plot(half/max(half), abs(Y2(half)), 'b'); >> 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 é simétrico >> half = 1:ceil(length(Y2)/2); >> plot(half/max(half), abs(Y2(half)), 'b');  4.2.1 Sistemas com Fase Linear Em diversas aplicações como processamento de voz ou som, filtros digitais são usados para implementar operações seletivas de frequência. Assim, especificações são necessárias no domínio da frequência em termos de
  • 88.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 88 magnitude desejada e resposta em fase do filtro. Em geral, uma resposta em fase linear na banda de passagem é desejada (Fig. 4.13). Fig. 4.13. Exemplos de fases lineares e não-lineares. Considere um sistema LTI cuja reposta em frequência sobre um período é: Hid(ejω )=e-jωα , |ω| < π onde α é um número real, não necessariamente um inteiro. Esse sistema tem magnitude constante: |Hid(ejω )| = 1, fase linear ∠Hid(ejω ) = -ωα e atraso de grupo constante grd[Hid(ejω )] = α A transformada inversa de Fourier de Hid(ejω ) é dada por:
  • 89.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 89 ∫∫ − −− − − == π π αω π π ωωα ω π ω π dedeenh njnjj id )( 2 1 2 1 ][ = − = − = − −− − −− π π αωπ π αω απαπ )()( )( 1 2 1 )( 1 2 1 njjnj e nj e nj ][ )( 1 2 1 )()( njnj ee nj −−− − − = απαπ απ Sabendo que 2/)( αα α jj eesen − −= , temos: )]([ )( 1 ][ )( 1 2 1 )()( απ απαπ απαπ − − =− − −−− nsen n ee nj njnj )( )]([ ][ απ απ − − = n nsen nhid , -∞< n < ∞ (Eq. 1) Assim )( )]([ *][][*][][ απ απ − − == n nsen nxnhnxny id ∑ ∞ −∞= −− −− = k kn knsen kxny )( )]([ ][][ απ απ Se α = nd, nd inteiro, pela propriedade do deslocamento do tempo da transformada de Fourier e lembrando que ℑ{δ[n]} = 1 : Hid(ejω ) = e-jωnd ↔ hid[n] = δ[n – nd] Logo: ][*][][ dnnnxny −= δ Ou seja, a mesma seqüência de entrada apenas deslocada de nd amostras.
  • 90.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 90 De forma geral, o sistema é de fase linear se ∠Hid(ejω ) = β - ωα, -π < ω < π Por exemplo, considere uma resposta em freqüência com fase linear da forma H(ejω ) = |H(ejω )|e-jωα , |ω| < π Suponha que H(ejω ) é o filtro passa-baixa:    ≤< < = − πωω ωωωα ω ||,0 ||, )( c c j j LP e eH cuja resposta ao impulso é, como vimos: )( )]([ ][ απ αω − − = n nsen nh c LP Se ωc = π, temos a Eq. 1. Quando α é um inteiro, digamos α = nd: = −− −− =− )2( )]2([ ]2[ dd ddc dLP nnn nnnsen nnh π ω ][ )( )]([ ]2[ nh nn nnsen nnh LP d dc dLP = − − =−⇒ π ω Nesse caso, temos um sistema de fase zero (zero phase system). Se α = -nd: ][][|)(|)()( ^^^ nhnheHeeHeH LPLP j LP njj LP j LP d −=⇒== ωωωω Assim, se 2α é um inteiro (o que implica que α é um inteiro ou um inteiro mais 0.5), a resposta ao impulso correspondente tem simetria sobre α, i.e.: h[2α - n] = h[n] Isso é condição suficiente (mas não necessária) para termos um sistema de fase linear.
  • 91.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 91 Fase Linear Generalizada Um sistema é dito de fase linear generalizada se sua resposta em freqüência pode ser expressa na forma: H(ejω ) = A(ejω )e-jαω+jβ (Eq. 2) onde α e β são constantes e A(ejω ) é uma função real ω. O sistema que consideramos antes tinha β = 0. Um sistema como o da Eq. 2 é dito de fase linear generalizada dado que a fase é uma função linear de -ωα. Tal sistema também se caracteriza por um atraso de grupo constante: grd[H(ejω )] = α De forma geral, a fase linear tem forma: ∠[H(ejω)] = β - ωα, 0 < ω < π onde α e β são constantes reais. Lembramos que, como vimos antes, a resposta ao impulso de sistemas de fase linear tem simetria sobre α, se 2α é um inteiro. Temos que, se: )]())[cos(()( ωαβωαβωω −+−= jseneAeH jj ou )()()cos()()( ωαβωαβ ωωω −+−= senejAeAeH jjj Equivalentemente, por definição: ∑∑∑ ∞ −∞= ∞ −∞= ∞ −∞= − −== nnn njj nsennhjnnhenheH ωωωω ][cos][][)( com h[n] real. Assim: )()()cos()()( ωαβωαβ ωωω −+−= senejAeAeH jjj e
  • 92.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 92 ∑∑∑ ∞ −∞= ∞ −∞= ∞ −∞= − −== nnn njj nsennhjnnhenheH ωωωω ][cos][][)( Logo, podemos considerar: ∑ ∞ −∞= =− n j nnheA ωωαβω cos][)cos()( e ∑ ∞ −∞= −=− n j nsennhseneA ωωαβω ][)()( Com isso: ∑ ∑ ∞ −∞= ∞ −∞= − = − − =− n n nnh nsennh sen tg ω ω ωαβ ωαβ ωαβ cos][ ][ )cos( )( )( Fazendo uma multiplicação cruzada dos dois lados da igualdade acima, temos: ∑∑ ∞ −∞= ∞ −∞= −−=− nn nsennhnnhsen ωωαβωωαβ ][)cos(cos][).( 0][)cos(cos][).( =−+−⇒ ∑∑ ∞ −∞= ∞ −∞= nn nsennhnnhsen ωωαβωωαβ 0)cos(][.cos)(][ =−+−⇒ ∑∑ ∞ −∞= ∞ −∞= nn nsennhnsennh ωωαβωωαβ 0])cos(.cos)(][[ =−+−⇒ ∑ ∞ −∞=n nsennsennh ωωαβωωαβ 0)(][ =+−⇒ ∑ ∞ −∞=n nsennh ωωαβ
  • 93.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 93 0])([][ =+−⇒ ∑ ∞ −∞=n nsennh βαω (Eq. 3) ou 0})](cos[.cos)]([]{[ =−+−∑ ∞ −∞=n sennnsennh βαωβαω (Eq. 4) para todo valor de ω. Assim, se β = 0 ou π, a Eq. 4 torna-se: 0)]([][ =−∑ ∞ −∞=n nsennh αω (Eq. 5) Se β = π/2 ou 3π/2, a Eq. 4 torna-se: 0)](cos[][ =−∑ ∞ −∞=n nnh αω (Eq. 6) Na Eq. 5, se h[n] = h[2α - n], com 2α inteiro: 0)]2([]2[0)]([][ =−−−⇒=− ∑∑ ∞ −∞= ∞ −∞= nn nsennhnsennh ααωααω 0)]([]2[ =−−⇒ ∑ ∞ −∞=n nsennh αωα (Eq. 7) A Eq. 7 tem as mesmas soluções da Eq. 5, se 2α é um inteiro (ou seja, α é um inteiro ou um inteiro mais 0.5). Assim, se β = 0 ou π, 2α = M inteiro, podemos ter h[2α - n] = h[n]. De forma similar, na Eq. 6, se β = π/2 ou 3π/2, 2α = M inteiro, podermos ter h[2α - n] = -h[n]. Com isso, temos dois conjuntos de condições para garantir um sistema de fase linear generalizada:
  • 94.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 94 i) β = 0 ou π 2α = M inteiro h[2α - n] = h[n] ii) β = π/2 ou 3π/2 2α = M inteiro h[2α - n] = -h[n] Sistemas Causais de Fase Linear Generalizada Se o sistema for causal, a Eq.3 torna-se: 0])([][ 0 =+−∑ ∞ =n nsennh βαω para todo valor de ω. Causalidade implica h[n] = 0, para n < 0 e n > M (para um sistema FIR, já que a resposta ao impulso é finita), i.e., sistemas FIR causais têm fase linear generalizada se eles têm 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 π: ][ )( )( )( )( )2( )2( ]2[ nh n nsen n nsen n nsen nh = − − −= − − = −− −− =− απ απ απ απ ααπ ααπ α O segundo caso acontece para β = π/2 ou 3π/2. Especificamente, se
  • 95.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 95 h[n] = h[M – n], 0 ≤ n ≤ M, e 0, caso contrário então pode ser mostrado que H(ejω ) = AP(ejω )e-jωM/2 onde AP(ejω ) é uma função real, par e periódica em w. De forma similar, se h[n] = -h[M – n], 0 ≤ n ≤ M, e 0, caso contrário segue que: H(ejω ) = jAI(ejω )e-jωM/2 = AI(ejω )e-jωM/2 + jπ/2 onde AI(ejω ) é uma função real, ímpar e periódica em ω. 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 simétrica h[n] = h[M – n], 0 ≤ n ≤ M com M um inteiro par (observe que isso gera um número ímpar de amostras). O atraso M/2 é um inteiro. A resposta em frequência é: ∑= − = M n njj enheH 0 ][)( ωω Considerando a condição de similaridade, essa resposta em frequência pode ser expressa como: ∑= − = 2/ 0 2/ )cos(][)( M k Mjj kkaeeH ωωω onde a[0] = h[M/2], a[k] = 2h[(M/2) – k], k = 1, 2, 3, ..., M/2
  • 96.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 96 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 simétrica como h[n] = h[M – n], 0 ≤ n ≤ M mas com M um inteiro ímpar. Nesse caso, H(ejw ) pode ser expresso como: }] 2 1 (cos[][{)( 2/)1( 1 2/ ∑ + = − −= M k Mjj kkbeeH ωωω onde b[k] = 2.h[(M + 1)/2 - k], k = 1, 2, ..., (M + 1)/2 Novamente H(ejw ) tem a forma de AP(ejw )e-jwM/2 . 3. Sistemas FIR com fase linear do Tipo III Se o sistema tem uma resposta ao impulso assimétrica: h[n] = -h[M - n], 0 ≤ n ≤ M com M um inteiro par, então H(ejw ) tem a forma: ∑= − = 2/ 0 2/ )sin(][)( M k Mjj kkcjeeH ωωω onde c[k] = 2h[(M/2) - k], k = 1, 2, ..., M/2 Nesse caso, H(ejw ) tem a forma: H(ejw ) = AI(ejw )e-jwM/2 + jπ/2 4. Sistemas FIR com fase linear do Tipo IV Se o sistema tem uma resposta ao impulso assimétrica: h[n] = -h[M - n], 0 ≤ n ≤ M com M um inteiro ímpar, então H(ejw ) tem a forma: }] 2 1 (sin[][{)( 2/)1( 1 2/ ∑ + = − −= M k Mjj kkdjeeH ωωω
  • 97.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 97 onde d[k] = 2h[(M+1)/2 - k], k = 1, 2, ..., (M + 1)/2 e H(ejw ) tem a forma: H(ejw ) = AI(ejw )e-jwM/2 + jπ/2 Exemplos: a) Tipo I, resposta simétrica, M par h[n] = 1, 0 ≤ n ≤ 4, e 0, caso contrário h[n] = h[M – n] A resposta em frequência é: )2/sin( )2/5sin( 1 1 )( 2 54 0 w w e e e eeH jw jw jw n jwnjw − − − = − = − − == ∑ Magnitude e fase: b) Tipo II, resposta simétrica, M ímpar h[n] = 1, 0 ≤ n ≤ 5, e 0, caso contrário
  • 98.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 98 h[n] = h[M – n] A resposta em frequência é: )2/sin( )3sin( )( )2/5( w w eeH jwjw − = Magnitude e fase: c) Tipo III, resposta assimétrica, M par Se h[n] = δ[n] - δ[n – 2] Então H(ejw ) = 1 – e-2jw = j[2.sin(w/2)]e-jw Magnitude e fase:
  • 99.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 99 d) Tipo IV, resposta assimétrica, M ímpar Se h[n] = δ[n] - δ[n – 1] Então H(ejw ) = 1 – e-jw = j[2.sin(w/2)]e-jw/2 Magnitude e fase: 
  • 100.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 100 Exemplo: O seguinte código implementa no MatLab um filtro FIR tipo I: h = [3 4 5 6 5 4 3]/30; % Veja que vai de zero a seis M = length(h); N = (M-1)/2; L = 512; H = fft([h zeros(1,L-M)]); k = 0:L-1; W = exp(j*2*pi/L); A = H.* W.^(N*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') 
  • 101.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 101 Exemplo: O seguinte código implementa no MatLab um filtro FIR tipo II: h = [3 5 6 7 7 6 5 3]/42; M = length(h); N = (M-1)/2; L = 512; H = fft([h zeros(1,L-M)]); k = 0:L-1; W = exp(j*2*pi/L); A = H.* W.^(N*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') 
  • 102.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 102 4.3 Filtros IIR Os filtros FIR usam apenas cálculos feed forward. Se feedback é permitido, a resposta de um filtro ao impulso não será necessariamente finita. Assim, filtros com feedback são chamados de filtros com resposta ao Impulso Infinita (IIR – Infinite Impulse Response). Por exemplo, o filtro abaixo: cuja equação que descreve sua saída é 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 saídas, considerando o filtro causal: Entrada Saída 0 0 1 0,6 0 0,44 0 0,176 .... .... Ou seja, mesmo quando a entrada se anula, o filtro continua apresentando uma saída. Essa saída diminui, mas não torna-se zero. Claro que, na prática, a resposta chega a zero em algum momento. Considere então o filtro a seguir:
  • 103.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 103 Esse filtro tem saídas: Entrada Saída 0 0 1 0,6 0 0,8 0 0,8 .... .... Esse é um filtro IIR. A saída será sempre 0,8 mesmo a entrada permanecendo 0. Nesse próximo exemplo, a saída cresce mesmo com entrada zero. Entrada Saída 0 0 1 0,6 0 0,86 0 0,946 .... ....
  • 104.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 104 De uma maneira geral, os filtros IIR são expressos como: ∑ ∑= = −=−− N k M k kk knxbknyany 1 0 ][][][ com a seguinte função de sistema: ∑ ∑ = − = − − = N k k k M k k k za zb zH 1 0 1 )( Suas formas Direta I e Direta II são mostradas nas Figs. 4.14 e 4.15. Fig. 4.14. Forma Direta I de um filtro IIR
  • 105.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 105 Fig. 4.15. Forma Direta II de um filtro IIR. Exemplo 1: Considere a função de sistema: 21 21 125.075.01 21 )( −− −− +− ++ = zz zz zH A forma direta I e II podem ser desenhadas como: Forma direta I: e Forma direta II:
  • 106.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 106  Exemplo 2: Conexão em cascata Considere a função de sistema: 1 1 1 1 21 21 25.01 1 . 5.01 1 125.075.01 21 )( − − − − −− −− − + − + = +− ++ = z z z z zz zz zH Como os pólos e zeros são reais, uma estrutura em cascata tem seções com coeficientes reais. Duas estruturas em cascata equivalentes podem ser criadas para essa função: i) ii)  Exemplo 3: Conexão em paralelo: Considere a função de sistema (observe que é a mesma função anterior): 21 1 21 21 125.075.01 87 8 125.075.01 21 )( −− − −− −− +− +− += +− ++ = zz z zz zz zH
  • 107.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 107 A forma paralela para esse sistema com uma seção de segunda ordem é: Como os pólos são reais, podemos obter ainda uma forma paralela alternativa expandindo H(z) como: 1121 1 25.01 25 5.01 18 8 125.075.01 87 8)( −−−− − − − − += +− +− += zzzz z zH que gera o diagrama abaixo apenas com seções de primeira ordem: 
  • 108.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 108 4.4 Exercícios 1. Um filtro IIR é definido por: 2 32 25.01 5.05.210 )( − −− − −+ = z zz zH Desenhe sua estrutura na Forma Direta I ou na Forma Direta II. 2. Um filtro causal e invariante no tempo é definido por: 321 25.025.01)( −−− +++= zzzzH Desenhe sua estrutura na Forma Direta I ou na Forma Direta II. Esse filtro é FIR ou IIR? 3. Um filtro IIR é definido por: 21 21 8 1 4 3 1 21 )( −− −− +− ++ = zz zz zH Desenhe sua estrutura na Forma Direta I ou na Forma Direta II. 4. Modifique os códigos das páginas 86 e 87 para implementar exemplos de filtros FIR dos tipos III e IV. 
  • 109.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 109 4.5 Bibliografia Complementar 1. Vinay K. Ingle, John G. Proakis, Digital Signal Processing, Thomson Learning, 2000. 2. Michael Weeks, Digital Signal Processing Using MatLab and Wavelets, Infinity Science Press, 2007. 3. Alan V. Oppenheim, Ronald Schafer, Discrete Time Signal Processing, Prentice Hall, 1989
  • 110.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 110 5. Técnicas de projeto de filtros Neste Capítulo, tratamos ao problema de projetar um filtro a partir de especificações. Em processamento digital de sinais há dois importantes tipos de sistemas: o primeiro tipo filtra os sinais no domínio do tempo e são chamados filtros digitais. O segundo tipo provê a representação do sinal no domínio da frequência e são chamados de analisadores de espectro. Os filtros são projetados como seletores de frequência. Há considerações diferentes se o projeto é voltado para criação de filtros FIR ou IIR. O projeto de um filtro digital tem três passos: • Especificações: determinada pela aplicação a qual o filtro está sendo construído; • Aproximações: o projeto do filtro especificamente. Aqui, define-se H(z). • Implementações: a transcrição da função de transferência para hardware ou software. Em diversas aplicações como processamento de voz ou som, filtros digitais são usados para implementar operações seletivas de frequência. Assim, especificações são necessárias no domínio da frequência em termos de magnitude desejada e resposta em fase do filtro. Em geral, como vimos no Capítulo anterior, uma resposta em fase linear na banda de passagem é necessária (Fig. 4.13). No caso de filtros FIR, é possível encontrar um filtro de fase exatamente linear. Para filtros IIR, uma fase linear na banda de passagem não é possível. Assim, consideraremos especificações em magnitude apenas. As especificações em magnitude podem ser dadas de duas maneiras: Especificações absolutas que provêem um conjunto de requisitos na magnitude da função de transferência, |H(ejw )|. Essas especificações são comuns para
  • 111.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 111 filtros FIR. A segunda forma é chamada de especificações relativas que provê os requisitos em decibéis (dB) e é dada por: escala dB = 0 |)(| |)(| log20 max 10 ≥− ω ω j j eH eH Essa é a forma mais comum na prática e é usada tanto para filtros FIR quanto IIR. Vamos considerar o projeto de um filtro passa-baixa como exemplo. Uma especificação absoluta de um filtro passa-baixa é mostrada na Fig. 5.1 na qual: • A banda [0, wp] é chamada de banda de passagem, e δ1 é a tolerância a qual são permitidas ondulações (ripples) na resposta ideal da banda de passagem; • A banda [ws, π] é chamada de banda de corte, e δ2 é a tolerância a qual são permitidas ondulações; • A banda [ws, wp] é chamada de banda de transição, e não há qualquer restrição na resposta em magnitude nessa banda. Fig. 5.1. Especificação absoluta de um filtro passa-baixa real: banda de passagem, banda de transição e banda de corte.
  • 112.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 112 A especificação relativa de um filtro passa-baixa pode ser vista na Fig. 5.2 na qual: • Rp é a ondulação na banda de passagem em dB, e • As é a atenuação na banda de corte em dB. Fig. 5.2. Especificação relativa de um filtro passa-baixa real. Os parâmetros das duas especificações são relacionados. Como |H(ejw )|max na especificação absoluta é igual a (1 + δ1), temos: 0 1 1 log20 1 1 10 > + − −= δ δ PR e 0 1 log20 1 2 10 > + −= δ δ SA Exemplo: As especificações de um FPB definem as ondulações da banda de passagem em 0,25 dB e a atenuação 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  Especificações semelhantes podem ser dadas para outros tipos de filtros seletores de frequência (como passa-alta ou passa-faixa).
  • 113.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 113 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 função de transferência H(z) ou sua equação de diferenças) que tem uma banda de passagem [0, wp] com tolerância δ1 (ou RP in dB) e uma banda de corte [wS, π] com tolerância δ2 (ou AS in dB). A seguir, vamos projetar filtros digitais FIR. Esses filtros têm diversas vantagens de projeto e implementação: • A resposta em fase pode ser exatamente linear; • São relativamente simples de projetar já que eles não têm problemas de estabilidade; • São eficientes para implementar; • A Transformada Discreta de Fourier pode ser usada em sua implementação. 5.1 Projeto de Filtros FIR Tanto a aproximação quanto a implementação podem ser realizadas de diversas maneiras diferentes, com o resultado de que não existe uma solução única para o problema de projeto de filtros com um conjunto prescrito de especificações. Todavia, podemos mencionar três diferentes abordagens para o projeto de filtros analógicos e digitais: • Abordagem analógica, a qual se aplica à classe de filtros analógicos. • Abordagem de analógico para digital, em que a motivação é projetar um filtro digital lançando mão de um projeto de filtro analógico. • Abordagem digital direta a qual se aplica à classe de filtros digitais. Para o projeto de filtros FIR, as técnicas são divididas nas seguintes categorias: • Projeto usando janelas
  • 114.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 114 • Método da amostragem em freqüência • Projeto equirriple ótimo • Projeto de mínimos quadrados 5.1.1 Projeto usando janelas A ideia básica de um projeto por janelas é selecionar um filtro seletor de frequências ideal apropriado (que sempre é não-causal e de resposta ao impulso infinita) e então truncar sua resposta ao impulso em uma janela para obter um filtro FIR causal e de fase linear. Assim, o foco está na escolha de uma função de janelamento e um filtro ideal apropriados. Seja Hd(ejw ) um filtro seletivo de frequência ideal que tem magnitude unitária e características de fase linear sobre sua banda de passagem, e resposta zero na banda de corte. Um filtro passa-baixa (FPB) ideal de largura de banda wc < π é dado por:    ≤< ≤ = − πωω ωωαω ω ||,0 ||,.1 )( c c j j d e eH onde wc é chamado de frequência de corte (cut-off) e α é chamado de atraso de amostra (sample delay). A resposta ao impulso desse filtro é de duração infinita e é dada por: ∫− − =ℑ= π π ωωω ω π deeHeHnh njj d j dd )( 2 1 )]([][ 1 )( )]([ .1 2 1 ][ απ αω ω π ω ω ωαω − − == ∫− − n nsen deenh cnjj d C C 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:
  • 115.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 115    −≤≤ = senão Mnnh nh d ,0 10],[ ][ e α = (M – 1)/2. Essa operação é 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 função simétrica 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:    −≤≤ = senão Mn nw ,0 10,1 ][ é uma janela retangular. No domínio da frequência, a resposta H(ejw ) do filtro FIR causal é dada pela convolução de Hd(ejw ) e a resposta da janela W(ejw ): ∫− − == π π λλ λ π deHeWeWeHeH wj d jjwjw d jw )()( 2 1 )(*)()( )( Podemos ver essa convolução na Fig. 5.3 para uma janela comum.
  • 116.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 116 Fig. 5.3. Operação de janelamento no domínio da frequência. Observações: 1. Como a janela w[n] tem comprimento finito igual a M, sua resposta em frequência tem uma região de pico central (lóbulo principal) cuja largura é proporcional a 1/M e tem lóbulos laterais com pesos menores. 2. A convolução gera uma versão da resposta ideal Hd(ejw ), mas com algumas distorções (ondulações). 3. A largura da banda de transição é proporcional a 1/M. 4. Os lóbulos laterais produzem ondulações que têm forma similar tanto na banda de passagem quanto na de corte. Projeto usando janelas: Para uma dada especificação de filtro, escolha um filtro de comprimento M e uma função janela w[n] para a mais estreita largura do lóbulo principal e a menor atenuação nos lóbulos laterais possível. Da observação 4 acima, podemos notar que a tolerância δ1 da banda de passagem e a tolerância δ2 da banda de corte não podem ser especificadas de forma independente. Geralmente, toma-se δ1 = δ2. Vamos descrever alguns tipos comuns de funções de janelamento.
  • 117.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 117 1) Janela Retangular Essa é a janela mais simples, mas que provê o pior desempenho em termos de atenuação da banda de corte. Ela é definida como:    ≤≤ = senão Mn nw ,0 0,1 ][ sendo sua resposta em frequência: )2/( ]2/)1([ 1 1 )( 2/ 0 )1( wsen Mwsen e e e eeW jwM M n jw Mjw jwnjw + = − − == − = − +− − ∑ A magnitude da função 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 lóbulo principal diminui. Fig. 5.4. Magnitude da transformada de Fourier de uma janela retangular (M = 7).
  • 118.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 118 Pode ser provado que a largura do lóbulo 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 lóbulo central é o dobro desse valor (já que envolve os valores negativos e positivos): 2w = 4π/(M + 1) Observa-se também que a magnitude do primeiro lóbulo lateral é aproximadamente em w = 3π/(M + 1) e é dada por: ππ π 3 )1(2 )1(2 3 )2/3( )2/( )]2/)1([( + ≅       + = + M M sen sen wsen Mwsen À medida que M cresce, a largura de cada lóbulo lateral diminui, mas a área sobre cada um permanece constante. Assim, as amplitudes relativas dos picos laterais vão permanecer constantes e a atenuação da banda de passagem permanece em cerca de 21 dB. Isso significa que as ondulações vão sofrer um pico perto das bordas das bandas. Isso é conhecido como fenômeno de Gibbs (Fig. 5.5). Esse fenômeno ocorre por causa da transição brusca de 0 para 1 (e de 1 para 0) da janela retangular.
  • 119.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 119 Fig. 5.5. Fenômeno de Gibbs: Pico das ondulações nas fronteiras entre as bandas. 2) Janela Triangular ou de Bartlett Bartlett sugeriu uma transição mais suave para evitar o fenômeno de Gibbs. Isso seria conseguido através de uma janela triangular da forma:         ≤<− ≤≤ = senão MnM M n Mn M n nw ,0 2/, 2 2 2/0, 2 ][ Essa janela e sua resposta em frequência podem ser vistas na Fig. 5.6
  • 120.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 120 Fig. 5.6. Janela triangular. 3) Janela de Hanning (homenagem a Julius von Hann, meteorologista austríaco)    ≤≤− = senão MnMn nw ,0 0),/2cos(5,05,0 ][ π Fig. 5.7. Janela de Hanning 4) Janela de Hamming (Richard Hamming, matemático americano)    ≤≤− = senão MnMn nw ,0 0),/2cos(46,054,0 ][ π Tem uma quantidade menor de descontinuidades em relação à janela de Hanning.
  • 121.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 121 Fig. 5.8. Janela de Hamming. 5) Janela de Blackman    ≤≤+− = senão MnMnMn nw ,0 0),/4cos(08,0)/2cos(5,042,0 ][ ππ Também é similar às duas anteriores, mas tem um segundo harmônico o que faz com que ela se aproxime de zero com mais suavidade. Fig. 5.8. Janela de Blackman. Tanto a janela de Bartlett, quanto Hamming, Hanning e Blackman têm lóbulos laterais menores do que os da janela retangular. No entanto, para o mesmo valor de M, a largura do lóbulo principal também é mais larga para essas janelas se comparadas à janela retangular. Consequentemente, essas janelas conseguem uma convolução no domínio da frequência mais suave e, como
  • 122.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 122 resultado, a região de transição na resposta do filtro FIR é mais larga. Para reduzir a largura da região de transição podemos aumentar o comprimento da janela, o que resulta em filtros mais largos. A tabela a seguir resume algumas características no domínio da frequência dessas janelas. Tabela 5.1. Algumas características do domínio da frequência de algumas funções de janelamento Tipo de janela Largura de transição aproximada do lóbulo principal Largura de transição exata Pico do lóbulo lateral (dB) Retangular 4π/M 1,8π/M -21 Bartlett 8π/M 6,1π/M -25 Hanning 8π/M 6,2π/M -44 Hamming 8π/M 6,6π/M -53 Blackman 12π/M 11π/M -74 6) Janela de Kaiser (James F. Kaiser) Esta é a melhor janela. Ela e considerada ótima porque provê um lóbulo principal largo para a dada atenuação da banda de corte, o que implica a mais brusca banda de transição. A função foi definida por Kaiser e é dada por:        ≤≤               −− = senão Mn I M n I nw ,0 0, ][ 2 11 ][ 0 2 0 β β I0(.) é a função de Bessel modificada de ordem zero: ∑ ∞ =       += 1 2 0 ! )2/( 1)( n n n x xI
  • 123.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 123 Fig. 5.8. Variadas formas da Janela de Kaiser. Na expressão de w[n], existem dois parâmetros: 1. O comprimento M 2. O parâmetro β Variando β e M, é possível ajustar a amplitude dos lóbulos laterais. Kaiser encontrou duas fórmulas que permitem achar M e β de modo a atender às especificações do filtro. Assim, dado que δ1 é fixo (especificado), a frequência de corte wP da banda de passagem do filtro passa-baixa é a maior frequência tal que: |H(ejw )| ≥ 1 - δ1 A frequência da banda de corte tem tolerância δ2, satisfazendo: |H(ejw )| ≤ δ2 A largura da banda de transição é: ∆w = wS - wP Dado: A = -20log10 δ, considerando δ1 = δ2. Kaiser mostrou que:
  • 124.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 124      < ≤≤−+− >− = 21,0 5021,)21(07886,0)21(5842,0 50,)7,8(112,0 4,0 A AAA AA β (Eq. 5.1) Além disso, dados ∆w e A, M é aproximadamente: w A M ∆ − = 285,2 8 O procedimento para projetar um filtro passa-baixa digital FIR usando a janela de Kaiser consiste nos seguintes passos: i) Estabelecer as especificações wP, wS e δ. ii) Estabelecer a frequência 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 fórmulas de Kaiser para encontrar os valores de M e β. iv) Encontra a resposta ao impulso do filtro através de h[n]=hd[n]w[n], onde w[n] é a janela de Kaiser e hd[n] = ℑ-1 [Hd(ejw )]. Devido à complexidade de cálculos com funções de Bessel, o projeto dessas janelas não é fácil. A equação de w[n] definida por Kaiser tem valores encontrados empiricamente e são definidos sem prova. Exemplo: Projetar, usando janelas de Kaiser, um filtro passa-baixa com as seguintes especificações: wP = 0,4π, wS = 0,6π e δ = 0,001. wc = (wS + wP)/2 = 0,5π ∆w = wS - wP = 0,2π A = -20log10 δ = 60 dB Como A > 50, pela Eq. 5.1: β = 0,1102(A – 8,7) ≅ 5,633
  • 125.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 125 M = (A - 8)/(2,285∆w) ≅ 36,219 ⇒ M = 37 (M inteiro) A resposta ao impulso é: ][ )2/( )]2/([ ][][][ nw Mn Mnwsen nwnhnh c d − − == π com w[n] dado pela definição da janela de Kaiser.  Implementações no MatLab O MatLab tem diversas funções 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 funções base importantes para os exemplos a seguir. Uma implementa uma resposta ao impulso ideal de um filtro passa-baixa hd[n]. A outra função implementa a plotagem no domínio da frequência, apresentando também a resposta em magnitude absoluta e em escala dB (é uma variação da função freqz do MatLab). Função 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);
  • 126.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 126 Função 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 especificações wP = 0,2π, RP = 0,25 dB, wS = 0,3π e AS = 50 dB. Tanto a janela de Hamming quanto a de Blackman provêem atenuação de mais de 50 dB. Vamos escolher a janela de Hamming que provê a menor banda de transição e assim tem a menor ordem. wp = 0.2*pi; ws = 0.3*pi; tr_width = ws - wp; M = ceil(6.6*pi/tr_width) + 1 n = [0:M-1]; wc = (ws + wp)/2; hd = ideal_lp (wc, M); w_ham = (hamming(M))'; h = hd.*w_ham; [db, mag, pha, w] = freqz_m(h, [1]); delta_w = 2*pi/1000; Rp = -(min(db(1:wp/delta_w+1))) As = -round(max(db(ws/delta_w+1:501))) subplot(1, 1, 1) subplot (2, 2, 1); stem(n, hd); title('Resposta ao Impulso Ideal'); axis([0 M-1 -0.1 0.3]);xlabel('n');ylabel('hd[n]'); subplot (2, 2, 2); stem(n, w_ham); title('Janela de Hamming'); axis([0 M-1 0 1.1]);xlabel('n');ylabel('w[n]');
  • 127.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 127 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 
  • 128.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 128 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
  • 129.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 129 
  • 130.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 130 Exemplo 3: Vamos projetar o filtro com as seguintes especificações (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 transição: ∆w1 = w1P – w1S, ∆w2 = w2S – w2P. Essas duas larguras de banda devem ser a mesma no projeto da janela; i.e., não há 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 também 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 a seguir:
  • 131.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 131 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))) 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]');
  • 132.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 132 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 = 75 alpha = 37 Rp = 0,0030 As = 75 
  • 133.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 133 Exemplo 4: A resposta em frequência de um filtro passa-faixa ideal é dada por:      ≤< ≤≤ <≤ = ππ ππ π ||3/2,1 3/2||3/,0 3/||0,1 )( w w w eH jw e Usando uma janela de Kaiser, projete um filtro passa-faixa de comprimento 45 com atenuação na banda de corte de 60 dB. Observe que a largura da banda de transição não foi dada. Ela será encontrada a partir do comprimento M = 45 e do parâmetro β da janela de Kaiser. Das equações de projeto da janela de Kaiser, podemos determinar β a partir de As: )7,8(1102,0 −= SAβ Vamos agora implementar a janela de Kaiser e observar a atenuação 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
  • 134.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 134 axis([0 1 -80 10]);xlabel('frequencia em pi unidades');ylabel('Decibeis'); beta = 5,6533 Observe que, com esse valor, a mínima atenuação da banda de corte é menor que 60 dB (observe que há lóbulos na banda de corte com pico acima de 60 na escala negativa - ou seja, é menor que 60 em módulo – resposta em magnitude na figura acima, destacada em vermelho). Assim, precisamos aumentar BETA para aumentar a atenuação para 60 dB. Vamos colocar um acréscimo no valor calculado de BETA para conseguir uma atenuação maior. Observamos que, assim, a atenuação 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))';
  • 135.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 135 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 
  • 136.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 136 Exemplo 5: A resposta em frequência de um filtro diferenciador digital ideal é dada por:    <<−− ≤< = 0, 0, )( wjw wjw eH jw d π π Usando uma janela de Hamming de comprimento 21, projete um diferenciador FIR. Plote as respostas no domínio do tempo e da frequência. A resposta ao impulso de um diferenciador ideal com fase linear é dada por: ∫− −− =ℑ= π π αα π dweeeHeeHnh jwnwjjw d wjjw dd )( 2 1 ])([][ ∫∫ − − − +−= π α π α ππ 0 0 )( 2 1 )( 2 1 dweejwdweejw jwnwjjwnwj     = ≠ − − = α α α απ n n n n ,0 , )( )(cos A resposta ao impulso acima pode ser implementada no MatLab através da janela de Hamming para projetar o diferenciador requisitado. Note que se M é um número par, então α = (M - 1)/2 não é um inteiro e hd[n] será zero para todo n. Assim, M deve ser um número í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 código 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)];
  • 137.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 137 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 questão 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');
  • 138.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 138 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');  Exemplo 6: Projete um filtro transformador digital de Hilbert de comprimento 25 usando uma janela de Hanning. A resposta em frequência ideal de um transformador de Hilbert de fase linear é dada por:    <<− <<− = − − 0, 0, )( wje wje eH wj wj jw d π π α α A resposta ao impulso ideal é dada por:
  • 139.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 139     = ≠ − − = α α α απ π n n n nsen nhd ,0 , )( ]2/)([2 ][ 2 que pode ser implementado no MatLab. Como M = 25, o projeto do filtro é do tipo III: M = 25; alpha = (M - 1)/2; n = 0:M-1; hd = (2/pi)*((sin((pi/2)*(n - alpha)).^2)./(n - alpha)); hd (alpha + 1) = 0; w_han = (hanning(M))'; h = hd.*w_han; [Hr, w, P, L] = Hr_Type(h, 3); 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');
  • 140.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 140  5.1.2 Técnicas de Projeto por Amostragem em Frequência Nessa técnica, usamos o fato de que a função de sistema H(z) pode ser obtida a partir de amostras H(k) da resposta em frequência H(ejw ). Seja h[n] a resposta ao impulso de um filtro FIR com M amostras, H[k] é sua transformada discreta de Fourier com M-pontos (Capítulo 6) e H(z) sua função de sistema. Então temos: ∑∑ − = − −− = − − − == 1 0 /21 1 0 1 ][1 ][)( M k Mkj MM n n ez kH M z znhzH π e ∑ − = − − − − = 1 0 /2 1 ][1 )( M k Mkjjw jwM jw ee kH M e eH π (Eq. 5.2) com
  • 141.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 141    −=− = == 1,...,1,][* 0,]0[ )(][ /2 MkkMH kH eHkH Mkj π 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. Então H[k] é dado por: ][2 ][ kHj r e M k HkH ∠       = π onde     −=    − = =      1,...,1, )(2 0,]0[ 2 Mk M kM H kH M k H r r r π π e       −+    − =−            − +     − =            − − =∠ 1,...,1 2 1 ,)( 2 2 1 2 1 ,...,0, 2 2 1 ][ M M kkM M M M k M kM kH π π (para tipos 1 e 2) ou       −+    − =−            − +      ±−     − =            − −      ± =∠ 1,...,1 2 1 ,)( 2 2 1 2 2 1 ,...,0, 2 2 1 2 ][ M M kkM M M M k M kM kH ππ ππ (para tipos 3 e 4)
  • 142.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 142 Dado um filtro passa-baixa ideal Hd(ejw ), escolha o filtro de comprimento M e então amostre Hd(ejw ) em M igualmente espaçadas freqüências entre 0 e 2π. A resposta H(ejw ) é a interpolação 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 técnica de amostragem em frequência. Da Fig. 5.9, podemos observar que: 1) O erro de aproximação – a diferença entre a resposta ideal e a atual – é zero nas freqüências amostradas. 2) O erro de aproximação nas outras freqüências depende da forma da resposta ideal, ou seja, quanto mais “sharp” a resposta ideal, maior o erro de aproximação. 3) O erro é maior perto das fronteiras das bandas e menor dentro das bandas. 5.1.3 Projeto Equirriple Ótimo Os métodos de janelamento e de amostragem na frequência têm alguns problemas: 1) Não podemos especificar wP e wS precisamente nos projetos. 2) Não podemos especificar δ1 e δ2 simultaneamente. Ou consideramos δ1 = δ2 (como no janelamento) ou otimizamos δ2 (como na amostragem). 3) O erro de aproximação não é distribuído uniformemente nas bandas. Ele é mais alto perto das fronteiras das bandas e menor quanto mais distante delas.
  • 143.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 143 O método equirriple ótimo evita esses problemas. No entanto ele é bastante difícil de utilizar e requer computador na sua implementação. O objetivo é minimizar o erro máximo de aproximação (minimax do erro). Tais filtros são chamados de equirriple porque o erro é distribuído de maneira uniforme na banda de passagem e de corte o que resulta em um filtro de menor ordem. No MatLab, um projeto por equirriple é feito usando a função remez que implementa o algoritmo Parks-McClellan. Exemplo: Vamos projetar um filtro passa-baixa usando o algoritmo de Parks-McClellan. Os parâmetros de projeto são: 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); 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)
  • 144.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 144 M = M + 1; h = remez(M - 1, f, m, weights); [db, mag, pha, w] = freqz_m(h, [1]); delta_w = 2*pi/1000; wsi = ws/delta_w + 1; Asd = -max(db(wsi:501)) end subplot (2, 1, 1); stem(h); title('Resposta ao Impulso Atual'); axis([0 M-1 -0.1 0.3]);xlabel('n');ylabel('h[n]'); subplot (2, 1, 2); plot(w/pi, db); title('Magnitude em dB');grid axis([0 1 -100 10]);xlabel('frequencia em pi unidades');ylabel('Decibeis'); M = 43 Asd = 47.8404 M = 44 Asd = 48.2131 M = 45 Asd = 48.8689 M = 46 Asd = 49.8241 M = 47 Asd = 51.0857 
  • 145.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 145 5.2 Projeto de Filtros IIR Filtros IIR têm resposta infinita ao impulso, assim eles podem ser igualados a filtros analógicos, os quais, em geral, têm resposta ao impulso infinitamente longa. Assim, a técnica básica de projeto de filtros IIR transforma filtros analógicos bem conhecidos em filtros digitais. A vantagem dessa técnica está no fato que tanto tabelas de filtros analógicos quanto as conversões estão vastamente disponíveis na literatura. Essa técnica é chamada de transformação de filtro analógica-digital (A/D). No entanto, as tabelas de filtros só estão disponíveis para filtros passa-baixa. Para gerar outros filtros seletores de frequência, temos que aplicar transformações a filtros passa-baixa. Essas transformações também estão disponíveis na literatura. Existem duas formas de projeto de filtros IIR: 1) 2) Para projetar filtros IIR, vamos: 1) Projetar FPB analógicos; 2) Aplicar transformações no filtro para obter FPB digitais; 3) Aplicar transformações de frequência nas bandas para obter outros filtros digitais a partir do FPB. O principal problema dessas técnicas é que não temos controle sobre a fase do filtro. Assim, os projetos de filtros IIR serão apenas em magnitude. Técnica mais avançadas usam otimização e não serão tratadas.
  • 146.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 146 5.2.1 Escala Relativa Seja Ha(j ) a resposta em frequência do filtro analógico. Então as especificações do FPB quanto à resposta quadrática de magnitude são dadas por: 1|)(| 1 1 2 2 ≤Ω≤ + jHa ε , | | ≤ P 2 2 1 |)(|0 A jHa ≤Ω≤ , S ≤ | | onde ε é o parâmetro de ondulação da banda de passagem, P é a frequência de corte da banda de passagem em rad/seg, A é o parâmetro de atenuação da banda de corte e S é a frequência da banda de corte (Fig. 5.10). Fig. 5.10. Especificações de um filtro passa-baixa analógico. Da Fig. 5.10, temos: 2 2 1 1 |)(| ε+ =ΩjHa em = P 2 2 1 |)(| A jHa =Ω em = S
  • 147.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 147 Os parâmetros ε e A estão relacionados aos parâmetros RP e AS na escala dB como: 110 1 1 log10 10/ 210 −=⇒ + −= PR PR ε ε (Eq. 5.3) e 20/ 210 10 1 log10 SA S A A A =⇒−= (Eq. 5.4) As tolerâncias δ1 e δ2 da escala absoluta são relacionados a ε e A por: 1 1 2 1 1 1 2 1 1 1 1 δ δ ε εδ δ − =⇒ + = + − e 2 1 1 2 11 1 δ δ δ δ + =⇒= + A A Especificações de filtros analógicos não têm informação de fase. Para calcular a função de sistema Ha(s) no domínio-s considere: jsaa sHjH / )()( =Ω =Ω então temos Ω= −=Ω−Ω=ΩΩ=Ω jsaaaaaaa sHsHjHjHjHjHjH )()()().()(*).(|)(| 2 ou jsaaa jHsHsH / 2 |)(|)().( =Ω Ω=− Observação: O domínio-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
  • 148.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 148 mapeia um sinal ou função em termos de vibrações (senóides), a transformada de Laplace mapeia uma função em relação aos seus momentos: ∫ ∞ ∞− − = dtetftfL st )()}({ onde s = σ + jω, com σ e ω números 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: ∑ ∞ = − = 0 ][)( n nsT enxsX , onde T é o período de amostragem. Essa relação 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 são mapeadas em ângulos no plano-z, enquanto linhas horizontais são mapeadas em raios. Fig. 5.11. Mapeamento do plano-s no plano-z. 
  • 149.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 149 5.2.2 Características de Protótipos Analógicos O projeto de filtros IIR reside na existência de filtros analógicos para obter filtros digitais. Esses filtros analógicos são chamados de filtros protótipos. Três protótipos são largamente usados na prática: Butterworth, Chebyshev (tipo I e II) e Elíptico. Vamos ver as características das versões passa-baixa desses filtros. 1) Filtro Passa-Baixa de Butterworth A principal característica desse filtro é que a resposta em magnitude é plana (flat) na banda de passagem e de corte. A resposta quadrática de magnitude de um FPB de N-ésima ordem é dada por: N c a jH 2 2 1 1 |)(|       Ω Ω + =Ω onde N é a ordem do filtro e c é a frequência de corte. A plotagem de Ha(j ) é mostrada na Fig. 5.12. Fig. 5.12. Característica de um filtro Butterworth com variação de parâmetros. Desse gráfico, podemos observar: i) Em = 0, |Ha(j0)|2 = 1, para todo N.
  • 150.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 150 ii) Em = c, |Ha(j c)|2 = 0,5, para todo N, o que implica 3 dB de atenuação em c. iii) |Ha(j )|2 é uma função monotonicamente decrescente em . iv) |Ha(j )|2 se aproxima de um FPB ideal em N → ∞. V) |Ha(j )|2 é maximamente plano em = 0. Sua função de sistema Ha(s) é: N c N N N c jsaaa js j j s jHsHsH 22 2 2/ 2 )( )( 1 1 |)(|)()( Ω+ Ω =       Ω + =Ω=− =Ω Para projetar o filtro, precisamos encontrar as raízes e pólos da função do sistema. Os pólos são dados por pk = ejπ(2k + 1)/2N .ejπ/2 c, k = 0, 1, 2,..., 2N-1. Assim, os pólos estão em um círculo de raio c nos ângulos θk = (π/N)k + (π/2N) + π/2, k = 0, ..., 2N – 1. E os zeros são sk = (-1)1/2N .j c = cejπ(2k+N+1)/2N , k = 0, 1, ..., 2N – 1. O FPB analógico é especificado pelos parâmetros P, S, RP e AS. Assim, a essência do projeto no caso do filtro de Butterworth é obter a ordem N e a frequência de corte dada c. Assim, dadas essas especificações, queremos: i) em = P, Pa RjH =Ω− 2 10 |)(|log10 ou PN cP R=      ΩΩ+ − 210 )/(1 1 log10 e ii) em = S, Sa AjH =Ω− 2 10 |)(|log10 ou SN cS A=      ΩΩ+ − 210 )/(1 1 log10
  • 151.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 151 Resolvendo as equações para N = c, temos: )/(log2 )]110/()110[(log 10 10/10/ 10 SP AR SP N ΩΩ −− = Em geral, N não é um inteiro e, por isso, deve ser truncado para o menor inteiro maior que o valor calculado: N = N. Obviamente, isso irá gerar um filtro com ordem maior do que o necessário. Para satisfazer exatamente as especificações do projeto em P: N R P C P2 10/ 110 − Ω =Ω ou para satisfazer exatamente as especificações em S: N A S C S2 10/ 110 − Ω =Ω 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 Solução:   379,2 )3,0/2,0(log2 )]110/()110[(log 10 6,17,0 10 ==      −− = ππ N Para satisfazer exatamente as especificações em P temos: 4985,0 110 2,0 3.2 7,0 = − =Ω π C
  • 152.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 152 Para satisfazer exatamente as especificações em S temos: 5122,0 110 3,0 3.2 6,1 = − =Ω π C 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: 6 2 5,0 1 1 |)(|       Ω + =ΩjHa Como = s/j, temos: 6666 2 641 1 21 1 5,0 1 1 |)(| ss j S sHa − = − =       + = cujos pólos 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
  • 153.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 153 Para termos um filtro causal e estável, usamos os pólos do semi-plano esquerdo: )433,025,0)(433,025,0)(5,0( 1 )( jsjss sHa −++++ = )25,05,0)(5,0( 1 )( 2 +++ = sss sHa Vamos ajustar o numerador para que o ganho na frequência zero seja unitário. 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: )25,05,0)(5,0( 125,0 )25,05,0)(5,0( 8/1 )( 22 +++ = +++ = ssssss sHa Para transformar o filtro em digital, podemos usar o método de transformação bilinear. Nele, consideramos: 2/1 2/1 1 12 1 1 sT sT z z z T s − + =⇒ + − = − − (Eq. 5.5) onde T é um parâmetro. Historicamente, o valor de T foi incluído porque a equação de diferenças correspondendo a H(z) pode ser obtida aplicando a regra da integração trapezoidal na equação de diferenças de H(s), com T representando o passo de integração. Dada a invariância ao impulso, o parâmetro T não tem conseqüência no projeto já que, no mapeamento de analógico 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 1 1 1 21 1 )()( 1 1 2 z z saa sHzH z z s
  • 154.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 154         +      − − +      − −       + − − = − − − − − − 25,0 1 1 25,0 1 1 25,0 1 1 2 125,0 )( 1 12 1 1 1 1 z z z z z z zHa  A transformação bilinear pode ser ligada à fórmula trapezoidal para integração numérica. Por exemplo, considere um filtro linear analógico com função de transferência: as b sH + =)( (Eq. 5.6) Esse sistema pode ser caracterizado também pela equação de diferenças: )(.)(. )( txbtya dt tdy =+ Ao invés de substituir uma diferença finita pela derivada, suponha que integramos a derivada e aproximamos a integral pela fórmula trapezoidal. Assim: ∫ += t t tydyty 0 )()(')( 0ττ onde y’(t) denota a derivada de y(t). A aproximação da integral anterior pela fórmula trapezoidal em t = nT e t0 = nT – T leva a: [ ] )()(')(' 2 )( TnTyTnTynTy T nty −+−+= (Eq. 5.7) Agora, essa equação diferencial calculada em t = nT leva a: )(.)(.)(' nTxbnTyanTy +−= (Eq. 5.8) Usamos a Eq. 5.8 na Eq. 5.7 e obtemos a equação de diferenças para o sistema discreto no tempo equivalente. Com y(n)≡ y(nT) e x(n)≡ x(nT), obtemos o resultado:
  • 155.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 155 ( ))1()( 2 )1( 2 1)( 2 1 −+=−      −−      + nxnx bT ny aT ny aT cuja transformada Z é ( ) )(1 2 )( 2 1)( 2 1 11 zXz bT zYz aT zY aT −− +=      −−      + Consequentemente, a função de transferência do filtro digital equivalente é: 1 1 )2/1(2/1 )1)(2/( )( )( )( − − −−+ + == zaTaT zbT zX zY zH ou, equivalentemente: a z z T b zH +      + − = − − 1 1 1 12 )( (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:       + − = − − 1 1 1 12 z z T s que é a chamada transformação 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 têm resposta monotônica 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 especificações. Veja o exemplo na Fig. 5.13 gerado usando o fdatool do MatLab. Nele, temos dois
  • 156.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 156 filtros (um de Butterworth e um de Chebysshev tipo I) gerados sobre as mesmas condições, buscando sempre a menor ordem possível. O filtro de Butterworth tem ordem 31, enquanto o de Chebyshev I tem ordem 16. A resposta quadrática de magnitude de um filtro Chebyshev tipo I é dada por:       Ω Ω + =Ω c N a T jH 22 2 1 1 |)(| ε onde N é a ordem do filtro, ε é o fator de ondulação da banda de passagem (Eq. 5.3) e TN(x) é o polinômio de Chebyshev dado por:    ∞<< ≤≤ = − − xx xxN xTN 1,))(cosh(cosh 10,))(cos.cos( )( 1 1 Podemos considerar x = ( / c). Para um filtro de Chebyshev do tipo II: 1 22 2 1 1 |)(| −             Ω Ω + =Ω c N a T jH ε Ou seja, x = ( / c) é substituído por seu inverso e ε2 TN 2 (x) também.
  • 157.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 157 Fig. 5.13. Dois filtros com as mesmas especificações gerados como Butterworth e Chebyshev tipo I: o de Chebyshev tem menor ordem. 3) Filtro Passa-Baixa Elíptico Esses filtros apresentam ondulações na banda de passagem e de corte. São similares em magnitude a filtros FIR equirriple. São filtros ótimos no sentido que eles alcançam a menor ordem N para as dadas especificações. Esses filtros são muito difíceis de projetar e analisar. Não é possível projetá-los com ferramentas simples, sendo necessário uso de tabelas e computadores.
  • 158.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 158 A resposta quadrática de magnitude é dada por:       Ω Ω + =Ω c N a U jH 22 2 1 1 |)(| ε onde N é a ordem do filtro, ε é o fator de ondulação da banda de passagem (Eq. 5.3) e UN(x) é a função elíptica Jacobiana de ordem N. Apesar da análise complexa, o cálculo da ordem do filtro é simples e dado por: )1()( )1()( 2 1 2 1 kKkK kKkK N − − = onde S P k Ω Ω = , 12 − = A k ε e ∫ − = 2/ 0 22 1 1 )( π θ θ d senx xK 5.3 Transformações em Frequência Como dissemos anteriormente, o projeto de filtros seletores de frequência como passa-alta, passa-faixa ou rejeita faixa, são feitos a partir de um protótipo do tipo passa baixa. A partir desse protótipo, é possível aplicar uma transformação algébrica para construir o filtro desejado. Seja HPB(Z) a função do sistema de um filtro passa-baixa dado o qual se quer transformar para obter uma nova função H(z). Observe que as variáveis complexas Z e z estão associadas ao filtro passa-baixa protótipo e ao filtro obtido pela transformação, respectivamente. O que se deseja, portanto, é uma função Z=G(z) que satisfaça: )( 11)()( −− = = zGZPB ZHzH
  • 159.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 159 Se HPB(Z) é a função racional de um sistema causal e estável, uma exigência natural é que a função transformada H(Z) também apresente essas características. Isso implica que: 1. G(z-1 ) deve ser uma função racional de z-1 . 2. O interior do círculo unitário do plano Z deve mapear o interior do círculo unitário do plano z. 3. O círculo unitário do plano Z deve mapear no círculo unitário do plano z. Denotando por θ e w as variáveis (ângulos) associados, respectivamente, aos planos Z e z, a transformação Z-1 = G(z-1 ) pode ser re-escrita como: )( jwj eGe −− =θ )( |)(| jw eGjjwj eeGe ∠−− =θ De forma que: |G(e-jw )| = 1 e -θ= ∠G(e-jw ) A forma mais geral da função G(z-1 ) que satisfaz às condições acima é: ∏= − − −− − − ±== N k k k z z zGZ 1 1 1 11 1 )( α α onde |αk| < 1. Dependendo da escolha de N e αk, diversos mapeamentos podem ser obtidos. O mais simples é (N = 1, α1 = α): 1 1 11 1 )( − − −− − − == z z zGZ α α Agora, escolhendo uma ordem apropriada N e os coeficientes {αk}, podemos obter uma variedade de mapeamentos. As transformações mais comuns estão na Tabela 5.1. Nessa tabela, vale a pena comentar a transformação passa-baixa para passa- baixa (primeira conversão da tabela). Isso é feito para que se possa construir um
  • 160.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 160 filtro passa-baixa que pode ser modificado apenas com a variação de um parâmetro: α. 5.4 Comparação entre Filtros FIR e IIR Seja M o comprimento (número de coeficientes) de um filtro FIR de fase linear e N a ordem de um filtro elíptico (IIR). Se assumirmos que ambos os filtros atendem exatamente às mesmas especificações, os dois filtros são equivalentes e atendem à relação: 3≅ N M Isso mostra que, para a maior parte das aplicações, filtros IIR elípticos são desejáveis do ponto de vista computacional. As condições mais favoráveis para filtros FIR são: 1. Grandes valores de δ1; 2. Pequenos valores de δ2; 3. Grande largura da banda de transição.
  • 161.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 161 Tabela 5.1. Transformações em frequência para filtros digitais (filtro passa-baixa protótipo tem frequência de corte em wc’).
  • 162.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 162 5.5 Exercícios 1. Projete um filtro passa-faixa, usando filtros passa-baixa ideais e janela de Hamming, de acordo com a seguinte resposta em frequência:         <≤ <≤ <≤ <≤ <≤ = ππ ππ ππ ππ π ||6,0,1 6,0||5,0,0 5,0||4,0,1 4,0||3,0,0 3,0||0,1 )( w w w w w eH jw e 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 especificações: Frequência da Banda de corte: 0,4π Frequência 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 necessário do filtro para que as especificações sejam completamente atendidas. 3. A resposta em frequência de um filtro passa-faixa ideal é dada por:      ≤< ≤≤ <≤ = ππ ππ π ||3/2,0 3/2||3/,1 3/||0,0 )( w w w eH jw e Usando uma janela de Kaiser, projete um filtro passa-faixa de comprimento 45 com atenuação na banda de corte de 60 dB. Plote a resposta ao impulso e a resposta em magnitude do filtro. Modifique o que for necessário do filtro para que as especificações sejam completamente atendidas.
  • 163.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 163 4. Projetar um filtro digital passa-baixas, a partir do filtro analógico de Butterworth com as seguintes especificações do filtro digital: 0,89125 ≤ |H(ejw )| ≤ 1, 0 ≤ |w| ≤ 0,2π |H(ejw )| ≤ 0,17783, 0,3π ≤ |w| ≤ π  5.6 Bibliografia Complementar 1. Vinay K. Ingle, John G. Proakis, Digital Signal Processing, Thomson Learning, 2000. 2. Michael Weeks, Digital Signal Processing Using MatLab and Wavelets, Infinity Science Press, 2007. 3. Alan V. Oppenheim, Ronald Schafer, Discrete Time Signal Processing, Prentice Hall, 1989 4. Tamal Bose, Digital Signal and Image Processing, John Wiley and Sons, 2004.
  • 164.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 164 6. Transformada Discreta de Fourier O uso de transformadas serve para observar características de um sinal que já estavam presentes nele, mas que podem não ser observáveis em um domínio. Assim, as transformadas conseguem levar o sinal para outro domínio e trazê-lo de volta ao domínio original. A mais conhecida das transformadas é a transformada de Fourier. Criada por Jean-Baptiste Fourier, a Transformada de Fourier muda um sinal do domínio do tempo para o domínio da freqüência. Além da observação de outras características do sinal, a mudança de domínio também traz outras vantagens. No caso da transformada de Fourier, mudamos um sinal de um domínio o qual não temos controle (o tempo) para outro domínio que pode ser facilmente modificado (a freqüência). Uma mudança de estação de rádio nada mais é que uma mudança de freqüência de um sinal. A transformada de Fourier é uma ferramenta muito utilizada em análise e processamento de sinais. Consiste de uma generalização da série complexa de Fourier quando o período tende a infinito. A transformada de Fourier F(w) da função f (t) é definida por: ∫ ∞ ∞− − =ℑ≡ dtetftfwF wtj π2 )()}({)( onde e-jwπ é o kernel da transformada de Fourier. A transformada inversa de Fourier é definida como: ∫ ∞ ∞− − ≡ℑ≡ dwewFwFtf wtj π π 21 )( 2 1 )}({)( 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 são válidas: 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-j2πwt 0.F(w)
  • 165.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 165 3) Deslocamento na freqüência: f(t)ej2πw 0 t → F(w – w0) 4) Escalonamento: f(a.t) → (1/|a|)F(w/a) 5) Convolução no tempo: f(t)*g(t) → F(w).G(w) 6) Convolução na freqüência: f(t).g(t) → (1/2π)F(w)*G(w) 6.1 A Série Discreta de Fourier Com o advento do computador digital, foi necessária uma adequação da transformada para sinais de tempo discreto. Considere uma seqüência x[n] que é periódica com período N, tal que x[n] = x[n + k.N], para qualquer inteiro k, e N é o período fundamental da sequência. Da análise de Fourier, sabemos que funções periódicas podem ser sintetizadas como uma combinação linear de exponenciais complexas cujas freqüências são múltiplas (ou harmônicas) da frequência fundamental (no caso 2π/N). Da periodicidade no domínio da frequência da transformada de Fourier discreta no tempo, concluímos que existe um número finito de harmônicos; as frequências {(2π/N)k, k = 0, 1, 2, ...., N-1}. Assim, a sequência periódica x[n] pode ser expressa como: ∑ − = = 1 0 2 ][ 1 ][ N k kn N j ekX N nx π , n = 0, ±1, .... (Eq. 6.1) onde {X[k], k = 0, ±1, ....} são chamados de coeficientes da série discreta de Fourier, sendo dados por: ∑ − = − = 1 0 2 ][][ N n kn N j enxkX π , k = 0, ±1, .... (Eq. 6.2) onde x[n] é a seqüência discreta no domínio do tempo que descreve os valores amostrados da variável contínua x(t) e N é o número de amostras da seqüência
  • 166.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 166 da entrada. Observe que X[k] também é uma sequência periódica com período fundamental igual a N. Ou seja, X[k + N] = X[k]. As equações 6.1 e 6.2 são a representação discreta em série de Fourier de sequências periódicas. Por conveniência de notação, podemos chamar: WN = e-j(2π/N) e assim o par de equações torna-se: Equação de análise: ∑ − = = 1 0 ][][ N n kn NWnxkX Equação de síntese: ∑ − = − = 1 0 ][ 1 ][ N k kn NWkX N nx Tanto x[n] quanto X[k] são seqüências periódicas. Exemplo: Encontre a representação em série de Fourier da sequência: x[n] = {...0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, ....} O período fundamental da sequência é N = 4. Assim, W4 = e-j2π/4 = e-jπ/2 = cos(- π/2) + j.sen(-π/2) = 0 + j.(-1) = -j Agora ∑= = 3 0 4][][ n kn WnxkX Assim:
  • 167.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 167 ∑∑ == =+++=== 3 0 3 0 .0 4 6]3[]2[]1[]0[][][]0[ nn n xxxxnxWnxX De forma similar: ∑∑ == +−=−== 3 0 3 0 .1 4 22)]([][]1[ n n n n jjnxWnxX ∑∑ == −=−== 3 0 2 3 0 .2 4 2)]([][]2[ n n n n jnxWnxX ∑∑ == −−=−== 3 0 3 3 0 .3 4 22)]([][]3[ n n n n jjnxWnxX  Uma outra forma de ver a transformada discreta de Fourier é através de uma representação em matrizes. Considere que x e X são vetores coluna correspondendo aos períodos primários das sequências x[n] e X[k], respectivamente. Então as equações de síntese e análise podem ser vistas como: X = WNx e x = (1/N)W* NX onde WN é dada por:
  • 168.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 168 A matriz WN é chamada de matriz DFS. Essa forma de calcular os coeficientes da série 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 -2 + 2i -2 - 0i -2 - 2i Exatamente como calculamos anteriormente. A transformada inversa pode ser obtida como: 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. Exemplo: Considere uma sequência representando uma onda quadrada periódica:
  • 169.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 169 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]'); Para N = 40, temos:
  • 170.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 170 6.2 A Transformada Discreta de Fourier Na prática, definimos a Transformada Discreta de Fourier (DFT) como o período primário da DFS. Essa DFT é a transformada de Fourier para sequências arbitrárias de duração finita. Primeiro, definimos a squência de duração finita x[n] que tem N amostras sobre 0 ≤ n ≤ N – 1 como uma sequência de N-pontos. Seja x~ [n] um sinal periódico de período N, criado usando uma sequência de N-pontos x[n]; isto é: ∑ ∞ −∞= −= r rNnxnx ][][~ O teorema da amostragem no domínio da frequência diz que, se x[n] é de duração finita ([0, N-1]), então N amostras de X(z) no círculo unitário determinam X(z) para todo z. Nesse sentido, N eqüidistantes amostras da transformada de Fourier discreta no tempo X(ejw ) da sequência de N-pontos x[n] pode reconstruir unicamente X(ejw ). Essas N amostras ao redor do círculo unitário são chamdas de coeficientes da transformada discreta de Fourier. Seja X ~ [k] =DFS x~ [n], que é uma sequência periódica (e assim de duração finita). Seu intervalo primário é então a transformada discreta de Fourier, que é de duração finita. Essas noções
  • 171.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 171 são claras na seguinte definição. A Transformada Discreta de Fourier de uma sequência de N-pontos é dada por:    −≤≤ == senão NkkX nxDFTkX ,0 10],[ ~ ])[(][ ou ∑ − = = 1 0 ][][ N n kn NWnxkX , 0 ≤ k ≤ N – 1 Note que X[k] também é uma sequência de N-pontos, ou seja, ela não é 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: ])[(][ kXIDFTnx = ou ∑ − = − = 1 0 ][ 1 ][ N k kn NWkX N nx , 0 ≤ n ≤ N – 1 Novamente, x[n] não é definida fora do intervalo 0 ≤ n ≤ N – 1. A extensão de x[n] fora desse intervalo é x~ [n]. Do início desse capítulo, fica claro que a DFS é praticamente equivalente à DFT quando 0 ≤ n ≤ N – 1. Assim a implementação da DFT pode ser feita de forma similar. Se x[n] e X[k] são organizados como vetores coluna x e X, respentivamente, então temos: X = WNx e x = (1/N)W* NX
  • 172.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 172 onde WN é a matriz DFS como antes. A implementação tanto da DFT quanto da IDFT no MatLab é igual às da DFS e IDFS que apresentamos anteriormente. Considere aquelas mesmas funções com nomes dft e idft apenas. Uma outra possível representação da transformada discreta de Fourier é a forma retangular que se utiliza da relação de Euler. A relação de Euler é dada por ejθ = cosθ + jsenθ . A DFT pode ser escrita então da seguinte forma: ∑ − =             −      = 1 0 22 cos][][ N n N mn jsen N mn nxmX ππ lembrando que j = √−1. Este é um conceito abstrato conveniente para nos ajudar a comparar a relação de fase entre várias componentes senóidais do sinal. A DFT apresenta algumas propriedades que são muito úteis no processamento digital de sinais, como: simetria, linearidade, deslocamento no tempo e freqüência, entre outras. Fora a simetria, as outras propriedades são comuns à transformada de Fourier de tempo contínuo. 6.3 Propriedades da Transformada Discreta de Fourier 1) Linearidade Dadas duas seqüências periódicas com período N, x1[n] e x2[n], e suas respectivas DFTs X1[k] e X2[k], então: a.x1[n] + b.x2[n] ↔ a.X1[k] + b.X2[k] Obs: Se x1[n] e x2[n] são sequências de durações diferentes (N1-pontos e N2- pontos, por exemplo), escolha N3 = max(N1, N2). Se, por exemplo, N1 < N2, então X1[k] é a DFT de x1[n] aumentada de (N2 – N1) zeros. 2) Deslocamento de uma seqüência Seja x[n] uma seqüência periódica com coeficientes de Fourier X[m]. Assim:
  • 173.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 173 x[n – m] ↔ WN km X[m] 3) Dualidade Se x[n] ↔ X[k] então X[n] ↔ N.x[-k] 4) Simetria A simetria pode poupar muito esforço computacional. Quando a seqüência do sinal for real, então X[N − m]* = X[m]. Ou seja, basta que calculemos as componentes de X[m] para 0 ≤ m ≤ N/2 . Prova: ∑ − = − = 1 0 2 ][][ N n kn N j enxkX π Logo * 1 0 22* 1 0 )( 2 * ][][][       =       =− ∑∑ − = −− = −− N n nm N jnN N jN n mNn N j eenxenxmNX πππ * 1 0 2 2* ][][       =− ∑ − = − N n nm N j nj eenxmNX π π onde e-j2πk = cos(2πn) - jsen(2πn) = 1 – j.0 = 1. Assim: * 1 0 2 * ][][       =− ∑ − = N n nm N j enxmNX π Se x[n] for real: ][][][ 1 0 2 * mXenxmNX N n nm N j ==− ∑ − = − π 5) Convolução Periódica ∑ − = ↔− 1 0 2121 ][][][][ N m kXkXmnxmx
  • 174.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 174 onde o lado esquerdo da igualdade é conhecido como convolução, representado por x1[n]*x2[n]. É importante observar que o somatório ocorre no intervalo 0 ≤ m ≤ N-1. O valor de x2[n – m] se repete periodicamente fora desse intervalo. 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');
  • 175.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 175 Observe que, como o sinal x[n] é real, a magnitude da resposta em frequência apresenta uma imagem refletida. Assim, precisamos apenas da primeira metade dela. Para a fase, o padrão também aparece refletido no eixo da freqüência; novamente, só precisamos de metade da plotagem. Para a questão 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'); 6.4 A Transformada Discreta Bi-Dimensional de Fourier Para duas dimensões, a DFT e sua inversa podem ser vistas como:
  • 176.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 176 Essa é a forma como a transformada é calculada para imagens digitais, por exemplo. Se considerarmos uma imagem em níveis de cinza onde o valor 0 corresponde à ausência de cor (o preto) e o valor 1 corresponde ao valor máximo da cor (o branco), a imagem abaixo: Pode ser vista como uma figura tridimensional, cuja visão em perspectiva seria como na figura: que é uma versão tridimensional da função porta. Dessa forma, a transformada também é uma função sample, mas também tridimensional:
  • 177.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 177 Uma propriedade importante da DFT aplicada a imagens é sua sensibilidade à rotação. Por exemplo, considere a figura abaixo e sua DFT: Se for imposta uma rotação à imagem, a transformada guardará a informação da inclinação inicial, podendo ser possível encontrar o ângulo de rotação da imagem. Por exemplo, na figura a seguir, foi imposta uma rotação de 45º à imagem da figura acima. Veja o resultado da DFT como apresenta a inclinação. 6.5 O Espectrograma O espectrograma apresenta a densidade espectral do sinal ao longo do tempo. Em processamento de voz, o espectrograma é usado para identificar fonemas
  • 178.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 178 no sinal. A forma mais comum de representarmos um espectrograma é através de um gráfico bi-dimensional onde a abscissa corresponde ao tempo e a ordenada à frequência. Uma terceira dimensão indica a amplitude de cada frequência e é normalmente associada a uma cor. Com isso, o espectrograma pode ser visto como uma imagem. Normalmente, espectrogramas são gerados através do cálculo do quadrado da magnitude da STFT (Short-Time Fourier Transform – Transformada de Fourier de Tempo Curto) do sinal. Ou seja, Espectrograma(t, ω) = |STFT(t, ω)|2 Exemplo: Considere o sinal de voz abaixo. Nele está sendo dito: “jessica brown”. O som foi gerado por uma voz feminina, com ruído de fundo. Arquivo phrase59_16k.wav, da pasta Enroll_Session1 -> f16 -> female_list_4a (base TIMIT do MIT). Em seguida, apresentamos seu espectrograma. No padrão de cores do MatLab, as cores vermelha e amarela correspondem a picos (o que indica alta densidade da frequência), enquanto os tons azuis correspondem a valores baixos. Há um ruído no início da gravação.
  • 179.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 179 A função usada para gerar esse espectrograma pode ser vista abaixo: % read the signal [y,fs]=wavread('phrase59_16k.wav'); % calculate the table of amplitudes [B,f,t]=specgram(y,1024,fs,256,192); % calculate amplitude 50dB down from maximum bmin=max(max(abs(B)))/300; % plot top 50dB as image imagesc(t,f,20*log10(max(abs(B),bmin)/bmin)); % label plot axis xy; xlabel('Time (s)'); ylabel('Frequency (Hz)'); colormap(jet); (fonte: http://www.phon.ucl.ac.uk/courses/spsci/matlab/lect9.html) As figuras a seguir mostram as mesmas palavras ditas pela mesma mulher, mas com outro tipo de microfone. Observe as diferenças mais visíveis no espectrograma.
  • 180.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 180
  • 181.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 181 6.6 Exercícios 1. Determine os coeficientes da DFS das seguintes sequências periódicas, usando a definição 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 sequências periódicas, dados os seguintes coeficientes DFS, usando a definição 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] periódica com período fundamental N = 50, onde um período é dado por:    ≤≤ ≤≤ = − 4926,0 250, ][ 3,0 1 n nne nx n e seja x2[n] periódica com período fundamental N = 100, onde um período é dado por:    ≤≤ ≤≤ = − 9926,0 250, ][ 3,0 21 n nne nx n a) Encontre DFT{x1[n]} e plote (usando a função stem) os gráficos de sua magnitude e de sua fase. b) Encontre DFT{x2[n]} e plote (usando a função stem) os gráficos de sua magnitude e de sua fase. c) Qual a diferença entre as duas plotagens?
  • 182.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 182 4. Nas questões abaixo, para cada função, plote a magnitude e a fase de sua DFT (crie as funções no MatLab): a) Dente de serra: b) Onda quadrada 
  • 183.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 183 6.7 Bibliografia Complementar 1. Vinay K. Ingle, John G. Proakis, Digital Signal Processing, Thomson Learning, 2000. 2. Michael Weeks, Digital Signal Processing Using MatLab and Wavelets, Infinity Science Press, 2007. 3. Alan V. Oppenheim, Ronald Schafer, Discrete Time Signal Processing, Prentice Hall, 1989
  • 184.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 184 7. Transformada Rápida de Fourier (FFT- Fast Fourier Transform) Embora a DFT seja o melhor procedimento matemático para determinar o conteúdo espectral de uma seqüência no domínio do tempo, ela é muito ineficiente. Em 1965, um artigo foi publicado por J.W.Cooley e J.W.Tukey descrevendo um algoritmo eficiente para implementação da DFT, este algoritmo ficou conhecido como Transformada rápida de Fourier (FFT). Antes do advento da FFT, a DFT com muitos pontos estava restrita a grandes centros de pesquisas. Graças a Cooley e Tukey, e a indústria dos semicondutores, DFTs com 1024 pontos podem ser calculadas em apenas alguns segundos em computadores pessoais. O esforço computacional pode ser definido como o número máximo de operações elementares necessárias para resolver o problema. No caso da DFT, pode-se tratar da complexidade multiplicativa e complexidade aditiva i.e., número de multiplicações ponto flutuante (respectivamente adições) necessárias para calculá-la. Tradicionalmente tem-se usado apenas a complexidade multiplicativa como o parâmetro mais importante. A FFT foi implementada com o objetivo de diminuir complexidade (temporal) necessária para calcular uma DFT (Transformada Discreta de Fourier), visando aplicações em tempo real.Para uma seqüência de N pontos, o algoritmo comum para cálculo da DFT realiza N2 multiplicações, enquanto o algoritmo FFT realiza apenas (N/2)log2N. A FFT usa um número reduzido de operações aritméticas para calcular a DFT em relação ao seu cálculo direto. As primeiras aplicações práticas da FFT usando computação digital foram resultantes de manipulações da DFT. 7.1 Algoritmos Rápidos Existem diversos algoritmos para executar computações. Por exemplo, há diversos algoritmos dedicados à ordenação de uma seqüência. O que difere esses algoritmos é o tempo de resposta deles ou a chamada complexidade do
  • 185.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 185 algoritmo. No entanto, a análise de complexidade de um algoritmo não considera detalhes de implementação. Nesse sentido, os algoritmos rápidos propõem modificações na forma de resolver algum problema a fim de conseguir um ganho de tempo de processamento. Isso pode não afetar a complexidade do algoritmo, mas deve diminuir seu tempo de processamento. Claro, há condições específicas para que isso ocorra. Casos onde essas condições não são atendidas podem provocar até um aumento no tempo de processamento. A busca por soluções rápidas deve ser constante no desenvolvimento de um algoritmo. Por exemplo, considere a computação da variável A dada por: A = a.c + a.d + b.c + b.d Esse cálculo direto leva o programa a executar 4 multiplicações e 3 adições. Essa expressão, no entanto, pode ser simplificada para: A = (a + b).(c + d) provocando uma redução das operações para apenas 1 multiplicação e 2 adições. Em geral, a multiplicação é o elemento de maior custo considerado. Observamos que essa expressão é equivalente à primeira, apenas executando menos operações aritméticas. Um outro exemplo menos trivial é o cálculo de uma multiplicação complexa. O produto complexo: (e + jf) = (a + jb).(c + jd) é definido por: e = (ac – bd) f = (ad + bc) exigindo 4 multiplicações e duas adições. Um algoritmo mais eficiente calcula:
  • 186.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 186 e = (a – b)d + a(c – d) f = (a – b)d + b(c + d) tendo 3 multiplicações apenas. O aumento na quantidade de adições não prejudica o desempenho do algoritmo já que a multiplicação é o elemento mais custoso. 7.2 Algoritmo de Cooley-Tukey ou Decimação no Tempo J.W.Cooley (IBM) em colaboração com J.W.Tukey (Bell Labs) conseguiram uma revolução maior no tratamento digital de sinais em 1965 com a publicação da transformada rápida de Fourier, a FFT. Trata-se de um método engenhoso e altamente eficiente de reagrupar os cálculos dos coeficientes de uma DFT. A idéia é representar uma DFT de tamanho arbitrário N = N1.N2 em termos de DFTs menores de tamanhos N1 e N2, procedendo recursivamente. Lembrando que os coeficientes da DFT são definidos por: ∑∑ − = − = − == 1 0 1 0 /2 ][)]([)( N n kn N N n knNj WnxenxkX π (Eq. 7.1) onde k = 0, 1, 2, ...., N – 1. Calculada assim diretamente, a DFT requer O(N2 ) operações. A idéia do algoritmo de Cooley-Tukey é dividir a seqüência x[n] em duas seqüências: uma com os coeficientes de índice par e outra com os coeficientes de índice ímpar. Como a quebra é em duas seqüências, o algoritmo é conhecido também como Radix-2. Algoritmos no qual a seqüência é decomposta sucessivamente em seqüências menores são chamados de algoritmos de decimação em tempo. O princípio do algoritmo de decimação em tempo pode ser analisado considerando que N é um inteiro potência de 2, i.e., N = 2v . Como N é um inteiro
  • 187.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 187 par, podemos considerar calcular X(k), separando x[n] em duas seqüências 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: ∑ ∑+= parn ímparn nk N nk N WnxWnxkX _ _ ][][)( Substituindo as variáveis n = 2r para n par e n = 2r + 1 para n ímpar: ∑∑ − = + − = ++= 12/ 0 )12( 12/ 0 2 ]12[]2[)( N r kr N N r rk N WrxWrxkX (Eq. 7.2) ∑∑ − = − = ++= 12/ 0 2 12/ 0 2 )](12[)](2[)( N r rk N k N N r rk N WrxWWrxkX (Eq. 7.3) Mas WN 2 = WN/2 já que: WN 2 = e-2j(2π/N) = e-2j(π/(N/2)) = WN/2 Consequentemente, a Eq. 7.3 pode ser escrita como: ∑∑ − = − = ++= 12/ 0 2/ 12/ 0 2/ ]12[]2[)( N r rk N k N N r rk N WrxWWrxkX ][][)( kHWkGkX k N+= (Eq. 7.4)
  • 188.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 188 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 sequência original e o segundo termos uma DFT de N/2 pontos dos pontos de índice ímpar da seqüência original. A Fig. 7.1 apresenta um diagrama de fluxo do cálculo de uma DFT de 8 pontos. Fig. 7.1. Decimação 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 são 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 saída, X[0] é obtido multiplicando H[0] por WN 0 e somando o produto com G[0]. X[1] é obtido multiplicando H[1] por WN 1 e somando o resultado com G[1]. Para calcular X[4] deveríamos multiplicar H[4] por WN 4 e somar o resultado com G[4]. Contudo, como G[k] e H[k] são
  • 189.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 189 periódicas em k com período 4 (nesse caso), H[4] = H[0] e G[4] = G[0]. Assim, H[4] é obtido multiplicando h[0] por WN 4 e somando o resultado com G[0]. Os outros valores são obtidos de forma similar. Com a computação re-estruturada de acordo com a Eq. 7.4, podemos analisar a complexidade desse novo método e comparar com o algoritmo clássico da DFT. A computação direta da DFT requer N2 multiplicações complexas e adições. A Eq. 4 requer o cálculo de duas DFTs de N/2 pontos o que significa 2(N/2)2 multiplicações complexas e o mesmo número de adições, se usarmos o método clássico para calcular cada DFT dessas. Então as duas DFTs de N/2 pontos devem ser combinadas precisando N multiplicações complexas, correspondendo a multiplicar H[k] pelo twiddle e N adições complexas para somar G[k] com o resultado desse produto. Assim, a computação da Eq. 6.4 para todos os valores de k requer, no máximo: N + 2(N/2)2 = N + N2 /2 multiplicações complexas e adições. Para N> 2, esse valor é menor que as N2 operações necessárias pela DFT clássica. A Eq. 7.4 corresponde a quebrar a computação da DFT de N-pontos em duas DFTs de N/2 pontos. Se N/2 é par, o que acontece quando N é igual a uma potência de 2, podemos considerar calcular cada DFT de N/2 pontos usando o mesmo método. Assim, cada uma será quebrada em duas DFTs de N/4 pontos. Com isso, G[k] e H[k] serão dados por: ∑∑ − = − = ++= 14/ 0 4/2/ 14/ 0 4/ ]12[]2[][ N l lk N k N N l lk N WlgWWlgkG (Eq. 7.5) ∑∑ − = − = ++= 14/ 0 4/2/ 14/ 0 4/ ]12[]2[][ N l lk N k N N l lk N WlhWWlhkH (Eq. 7.6)
  • 190.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 190 Consequentemente, a DFT de N/2 pontos G[k] pode ser obtida combinando as DFTs de N/4 pontos das sequências g[2l] e g[2l + 1]. O mesmo acontecendo com o cálculo 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, então o cálculo aconteceria como na Fig. 7.2. Inserindo a computação 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 potências de WN ao invés de WN/2, considerando que WN/2 = WN 2. Fig. 7.2. Gráfico de fluxo da decimação em tempo de uma DFT de N/2 pontos em duas DFTs de N/4 pontos (para N = 8).
  • 191.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 191 Fig. 7.3. Fluxo completo do cálculo 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 computação 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 cálculo de uma DFT de 2 pontos. Para o caso geral, mas ainda considerando N como potência de 2, podemos continuar com a decomposição 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
  • 192.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 192 processo requer v estágios, onde v = log2N. Anteriormente, calculamos a quantidade de operações executadas para uma DFT usando uma única decimação em tempo (uma única quebra) e chegamos a N + 2(N/2)2 = N + N2 /2. Quando temos uma decomposição de uma DFT de N/2 pontos e duas de N/4 pontos, o fator (N/2)2 é substituído por N/2 + 2(N/4)2 , assim, a computação total requer: N + N + 4(N/4)2 multiplicações complexas e adições. Se N = 2v , isso pode ser feito no máximo v = log2N vezes. Assim, se fizermos a decomposição o maior número de vezes possível, temos uma quantidade total de multiplicações complexas e adições igual a N.log2N. Todo o processo ainda pode ser mais simplificado se explorarmos a simetria e periodicidade dos coeficientes WN r . Primeiro, podemos observar que a passagem de um estágio para o outro na Fig. 7.3 tem uma computação básica como mostrada na Fig. 7.5. Ou seja, ela envolve a obtenção de um par de valores de um estágio a partir de um par de valores do estágio anterior, onde os coeficientes são sempre potências de WN e os expoentes são separados por N/2. Por causa de sua forma, essa computação é chamada de butterfly. Como: WN N/2 = e-j(2π/N)N/2 = e-jπ = -1 o fator WN r+N/2 pode ser escrito como: WN r+N/2 = WN N/2 .WN r = -WN r Com isso em mente, o cálculo da butterfly da Fig. 7.5 pode ser simplificado para a forma da Fig. 7.6 que requer apenas uma multiplicação complexa ao invés de duas.
  • 193.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 193 Fig. 7.5. Gráfico de fluxo de uma computação butterfly. Fig. 7.6. Gráfico de fluxo de uma computação butterfly simplificada. Em termos práticos, para desenvolver o cálculo apresentado na Fig. 7.3, poderíamos usar dois arrays: um para o array sendo computado e outro para o array usado na computação. Vamos denotar a seqüência de números complexos resultante do m-ésimo estágio como Xm[l], onde l = 0, 1, ..., N-1, e m=1, 2, ...., v. Além 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 saída do m-ésimo estágio. 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]
  • 194.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 194 X0[6] = x[3] X0[7] = x[7] Usando essa notação, podemos legendar a entrada e a saída do butterfly da Fig. 7.6, como indicado na Fig. 7.7, de acordo com as seguintes equações: (Eqs. 7.7) que podem ser re-escritas como: (Eqs. 7.8) Fig. 7.7. Gráfico de fluxo das Eqs. 7.8. Pelas equações 7.8 e pela Fig. 7.3, está claro que apenas o passo m-1 é necessário estar armazenado para poder calcular os valores do array no passo m. Esse tipo de computação é chamado de computação in-place. É importante observar também, pela Fig. 7.3, que a seqüência de entrada é acessada de uma maneira não-sequencial. De fato, a ordem no qual os dados de entrada são 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.
  • 195.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 195 Escrevendo esses índices na forma binária, obtemos o seguinte conjunto de equações: 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 representação binária do índice da seqüência x[n], então o valor da seqüência x[n2, n1, n0] é armazenado no array na posição X0[n0, n1, n2], invertendo os bits do índice n. Essa ordenação em subseqüências de índices pares e ímpares é apresentada no diagrama em árvore da Fig. 7.8. Outra forma de melhorar o desempenho do cálculo da DFT é através da subdivisão da seqüência de saída. Esses algoritmos são chamados de algoritmos de decimação em freqüência. Todo o processo é bem semelhante à decimação em tempo.
  • 196.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 196 Fig. 7.8. Diagrama em árvore apresentando a ordenação bit-reverso Fig. 7.9. Diagrama final de uma DFT de 8 pontos Fig. 7.10. Diagrama da DFT de 8 pontos usando computação butterfly
  • 197.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 197 7.3 Outras FFTs Existem diversas variações no algoritmo da FFT. O algoritmo de Cooley-Tukey ou de decimação no tempo re-arranja os elementos de entrada e depois constrói a saída em log2N iterações. Também é possível derivar algoritmos de FFT que primeiro desenvolvam um conjunto de log2N iterações nos dados de entrada e re-arranje os valores de saída em ordem reversa de bits. Tais algoritmos são chamados de decimação em freqüência ou algoritmos de FFT de Sande-Tukey. Para algumas aplicações, como a convolução, os dados são convertidos para o domínio da freqüência e depois de volta ao domínio do tempo. Nesses casos, é possível evitar todo o reverso dos bits. Outra classe de FFTs sub-dividem o conjunto de dados inicial de comprimento N em conjunto menores de tamanho proporcional a potências de 2, por exemplo, N = 4, FFTs de base 4, ou N = 8, FFTs de base 8. Essas transformações são feitas por seções de códigos otimizadas que usam características de simetria desses valores de N. Por exemplo, para N = 4, os senos e cossenos são todos ±1 ou 0, eliminando muitas multiplicações, deixando mais adições e subtrações. A melhoria de desempenho em relação a FFTs mais simples é de cerca de 20 a 30%. Existem também algoritmos de FFT que atuam em conjuntos de comprimento N que não é potência de 2. Eles trabalham usando relações análogas ao lema de Danielson-Lanczos para sub-dividir o problema inicial em problemas sucessivamente menores, não por potências de 2, mas por qualquer primo pequeno que divida N. Quanto maior for o maior fator primo de N, pior o método funciona. Se N é primo, então nenhuma sub-divisão é possível e o usuário termina usando uma FFT com complexidade O(N2 ) ao invés de O(N.log2N). Deve-se ficar atento a esse tipo de implementação. Algoritmos de Winograd são de certa forma análogos às FFTs de base 4 e 8. Winograd derivou códigos altamente otimizados para atuar em DFTs de N
  • 198.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 198 pequeno, e.g., para N = 2, 3, 4, 5, 7, 8, 11, 13, 16. Os algoritmos também usam um método mais eficiente para combinar os sub-fatores. O método envolve uma re-ordenação de dados antes e depois do processamento, conseguindo uma grande redução no número de multiplicações do algoritmo. Para valores de N da ordem de potências de 2, o algoritmo de Winograd pode ser mais rápido que algoritmos mais simples de FFT. Essa vantagem deve ser analisada com cuidado já que o método torna bastante mais complicada a indexação dos dados envolvidos na transformada. Finalmente, uma classe interessante de transformadas para gerar convoluções mais rápidas são as transformadas baseadas em teoria dos números. Esses esquemas substituem a aritmética de ponto-flutuante por uma aritmética de inteiros módulo algum valor primo grande N. De fato, esses métodos não são transformadas de Fourier em absoluto, mas suas propriedades são similares e a velocidade computacional pode ser muito superior.
  • 199.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 199 7.4 Exercícios 1. Dada a equação abaixo para a transformada discreta do cosseno, apresente como ficaria sua implementação usando o algoritmo rápido de decimação no tempo. ∑=       −− = N n N kn nxkwky 1 2 )1)(12( cos)()()( π , k = 1, ...., N Onde:       ≤≤ = = Nk N k kkw 2 2 1 1 )( 
  • 200.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 200 7.5 Bibliografia Complementar 1. Michael Weeks, Digital Signal Processing Using MatLab and Wavelets, Infinity Science Press, 2007. 2. Alan V. Oppenheim, Ronald Schafer, Discrete Time Signal Processing, Prentice Hall, 1989
  • 201.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 201 8. Análise Wavelet Em 1807, Joseph Fourier propôs sua análise de freqüência em sinais. Através dessa análise, um sinal no domínio do tempo poderia ser convertido para o domínio da freqüência e vice-versa. Dessa forma, características do sinal podem ser observadas de uma maneira mais apropriadas. A transformada de Fourier é definida como: ∫ ∞ ∞− − = dtetfF tj πω ω 2 )()( (Eq. 8.1) sendo a transformada inversa: ∫ ∞ ∞− = ωω π πω deFtf tj2 )( 2 1 )( (Eq. 8.2) A Transformada de Fourier representa no domínio da freqüência uma função do domínio do tempo. A representação no domínio do tempo especifica uma função, em cada intervalo de tempo, enquanto que a representação no domínio da freqüência especifica as amplitudes relativas das componentes de freqüência da função. Por exemplo, na Fig. 8.1, a transformada de Fourier da função porta é a chamada função sample (sen(x)/x).
  • 202.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 202 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 série de senos e cossenos. O problema é que a transformada considera o sinal todo. A transformada não é sensível a mudanças de freqüência no sinal. Assim, ela é apropriada para os chamados sinais estacionários: sinais cuja freqüência não muda com o tempo. O problema é que os sinais reais são não-estacionários. Assim, nesses casos, a transformada de Fourier torna-se inútil. A Fig. 8.2 apresenta a representação de dois sinais: um estacionário e outro não. Uma solução para esse problema foi sugerida por Gabor em 1946. Ao invés 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 porção que está sob a janela, sendo todo o restante desconsiderado nesse momento. Dentro da janela, considera-se que o sinal tem comportamento estacionário (Fig. 8.3).
  • 203.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 203 Fig. 8.2. Exemplo de um sinal estacionário e um não-estacionário. Fig. 8.3. Transformada de Fourier de Tempo Curto A aplicação de janelas a um sinal é uma prática comum, usada bastante em processamento digital de voz. O problema associado ao uso dessa técnica 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,
  • 204.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 204 uma janela pequena pode trazer pouca informação sobre o sinal e exige muito processamento. Já uma janela grande pode aumentar o erro na consideração de estacionaridade do sinal. Nesse sentido, o próximo passo natural na evolução das transformadas é a aplicação de uma transformada em uma janela de tamanho variável. Essa é a idéia básica da Transformada Wavelet. As janelas podem atuar em intervalos maiores quando queremos informações mais precisas sobre baixas freqüências ou em intervalos menores quando queremos informações mais precisas sobre altas freqüências (Fig. 8.4). Fig. 8.4. Transformada Wavelet 8.1 A Transformada Wavelet A função da transformada Wavelet contínua é dada por: (Eq. 8.3) Nessa equação, s atua como fator de escala e τ atua como fator de translação (deslocamento) da janela; ψ é uma função conhecida como a wavelet mãe. Essa função é aplicada sobre a função em análise (x(t)), em janelas (cuja posição é definida pelo deslocamento τ) e com dimensões diferentes (definidas pelo fator de escala s). Variações nessa função criam as chamadas famílias de wavelets. A primeira família de wavelets é a Haar criada na tese de Alfred Haar ainda em 1909 sem o propósito atual das Wavelets.
  • 205.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 205 A Eq. 8.3 pode ser vista como uma forma geral da transformada que pode variar, dependendo da função assumida por ψ. Dessa forma, podemos entender a transformada de Fourier como um caso particular da transformada Wavelet com a wavelet mãe sendo a função exponencial. Existem condições que definem uma função como passível de ser wavelet, como veremos posteriormente. O nome wavelet é a versão em inglês para o termo original ondeletteque significa “pequena onda” como referência ao deslocar da onda por todo o sinal desde escalas pequenas. O termo também referencia o fato da janela ter comprimento finito. A wavelet mãe é a função que analisa o sinal, efetivamente. Todas as janelas são versões expandidas ou comprimidas e deslocadas dessa função. O fator de escala afeta o sinal de forma que: • Se s>1, então o sinal é expandido; • Se s<1, então o sinal é comprimido. Para análises de baixas freqüências do sinal, usamos uma alta escala para ter uma visão global não detalhada do sinal. Para análise de altas freqüências usa- se baixa escala para ter uma visão global detalhada do sinal. A Fig. 8.5 apresenta um exemplo de uma wavelet e o resultado da aplicação de um elemento de escala nela. A Fig. 8.6 apresenta o resultado do deslocamento na função. Fig. 8.5. Influência da escala na wavelet mãe.
  • 206.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 206 A Fig. 8.7 representa o comportamento da wavelet mãe ao longo de toda a análise wavelet; à medida que a escala vai sendo modificada, como a wavelet mãe se comporta. Fig. 8.6. Influência do deslocamento na wavelet mãe. Fig. 8.7. Comportamento da wavelet mãe à medida que mudanças de escala vão sendo impostas a ela durante a análise. Há algumas propriedades que devem ser obedecidas para que uma função possa ser chamada de wavelet. Neste contexto, wavelets devem satisfazer requisitos como: • possuírem energia finita; • possuírem certo grau de regularidade (suavidade); • serem nulas no infinito; • possuírem um certo número de momentos nulos; • que sejam funções de classe Ck (0<k<∞); • que tenham suporte compacto, no tempo e na freqüência.
  • 207.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 207 A análise wavelet no contínuo acontece da seguinte forma: 1- Tome uma função wavelet e compare-a com a região no início do sinal original; 2- Calcule a correlação C entre a função e a região 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. Análise de wavelet no contínuo: a) correlação entre a função e a wavelet mãe; b) novo cálculo com a função deslocada; c) re-início do processamento com uma nova escala aplicada à wavelet mãe. Quando o processo é concluído, temos os coeficientes resultantes das comparações em cada escala da wavelet mãe. Esse resultado é plotado em um gráfico tridimensional que apresenta o tempo versus a escala e o valor dos coeficientes para cada escala.
  • 208.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 208 Para as wavelets discretas, tradicionalmente discretizam-se os parâmetros s (escala) e τ (deslocamento), variáveis do sinal transformado F(a,b), os coeficientes wavelet. Para s toma-se valores inteiros (positivos e negativos), potências de um parâmetro fixo s0: s = s0 -j , s0 > 1 e j∈Z A discretização de b deve depender de j tal que wavelets estreitas (de alta freqüência) sejam deslocadas por passos pequenos, e wavelets largas (de baixa freqüência) sejam deslocadas por passos maiores. Assim, uma escolha natural é: b= k.b0.s0 -j b0 > 0, fixo, j,k∈Z A wavelet discreta fica então: )()( 00 2/ 0, kbtsst jj kj −= ψψ (Eq. 8.3) O fator s0 não pode ser arbitrário. Diferentes valores de s0 levam a wavelets diferentes, e bases ortonormais de wavelets só são conhecidas para valores racionais de s0. A escolha mais natural é s0=2. Fazendo-se b0=1, a wavelet da equação 3 fica: )2(2)( 2/ , ktt jj kj −= ψψ A wavelet acima é conhecida por wavelet diádica. 8.2 Análise em Multiresolução A implementação da análise de wavelets é um processo bastante custoso. Em 1988, Mallat propôs sua implementação com filtros. Observamos que a intenção inicial da transformada wavelet é poder observar um sinal em suas diferentes freqüências. No entanto, na maioria dos casos práticos, as informações de baixa freqüência são as mais importantes. Assim, um sinal pode ser dividido em duas partes: • Aproximações: componentes de alta escala e baixa freqüência do sinal
  • 209.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 209 • Detalhes: componentes de pequena escala e alta freqüência do sinal. Essa divisão nada mais é do que a divisão de um sinal em baixas e altas freqüências. Isso pode ser facilmente conseguido com o uso de filtros passa- baixa e passa-alta (Fig. 8.9). Fig. 8.9. Decomposição de um sinal em suas componentes de baixa (aproximações) e alta (detalhes) freqüências. Um problema quanto a essa decomposição é 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 também, embora as amostras de alta freqüência sejam suavizadas. Assim, cada decomposição, aumentaria muito a quantidade de amostras. Para resolver esse problema, a cada passo da decomposição, o sinal resultante é novamente amostrado em um processo chamado de downsampling. Dessa forma, a saída 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).
  • 210.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 210 Todo esse processo pode ser repetido em cascata, tratando, como sugerido, apenas os componentes de baixa freqüência do sinal (os mais importantes). Isso pode ser visto na Fig. 8.11. A isso se chama análise em multiresolução. 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. Decomposição do sinal em baixas e altas freqüências com o mesmo processo se repetindo para as componentes de baixa freqüência. 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 informação que não se consegue recuperar com o upsampling.
  • 211.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 211 Fig. 8.12. Uso do upsampling (bloco com seta para cima) para reconstrução do sinal. 8.3 Sobre os coeficientes das wavelets Existem diversos tipos de wavelets como a Haar, Daubechies, Coiflets, Shannon, etc. Diversas são as aplicações de wavelets em processamento de sinais ou de imagens. Dentre elas, podemos citar remoção de ruído, compressão (já que o downsampling já é, naturalmente, um elemento de compressão com perda), análise de texturas, filtragem, etc. Por exemplo, por processarem as diferentes freqüências de um sinal, a análise wavelet é apropriada para imagens que tenham diferente iluminação ao longo dela. Para demonstrar uma transformada geral, vamos usar o esquema apresentado na Fig. 8.13. Nela, um sinal de entrada alimenta dois canais, cada qual com um par de filtros FIR. Tal estrutura é chamada de two-channel filter banks. Fig. 8.13. Um two channel filter bank. Análise Síntese
  • 212.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 212 A metade esquerda da Fig. 8.13 (filtros h0 e h1) corresponde à transformada direta, chamada de análise. A metade da direita é a transformada inversa, chamada de síntese. É esperado que a síntese gere um sinal de saída 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 freqüência. Isso é chamado de subband coding. Para a transformada inversa, as saídas dos filtros da parte de análise (z[n] e w[n]) passam por outros filtros FIR e, em seguida, são combinadas para gerar a saída y[n]. A idéia é que w[n] e z[n] sejam versões transformadas de x[n] e que y[n] é o sinal após 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 análise, w[n] e z[n] são definidos por: w[n] = a.x[n] + b.x[n – 1] z[n] = b.x[n] – a.x[n – 1] Precisamos saber também que são w[n – 1] e z[n – 1]: w[n - 1] = a.x[n - 1] + b.x[n – 2]
  • 213.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 213 z[n - 1] = b.x[n - 1] – a.x[n – 2] Assim, y[n] será: y[n] = -a.z[n] + b.z[n – 1] + b.w[n] + a.w[n – 1] E, em relação ao sinal original: 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 operações 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 então y[n] = x[n – 1] ou seja, a saída é 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 não 2(aa + bb) = 1 está relacionada ao processo de downsampling como explicado anteriormente.
  • 214.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 214 Algumas vezes, um two channel filter bank é chamado de quadrature mirror filter (QMF). Um QMF é um filter banks com condições especiais nos coeficientes dos filtros para evitar aliasing e conseguir uma reconstrução perfeita. Ou seja, sua única diferença para filter banks é a escolha dos coeficientes dos filtros. Seja um dos filtros da análise h0. Os outros filtros (h1, g0 e g1) são gerados a partir de h0. Especificamente, h1 usa os mesmos coeficientes de h0, mas negativa os coeficientes de índice par. O filtro de reconstrução 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 reconstrução, g0 e g1 são 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, então QMF = CQF. Fig. 8.15. QMF para a transformada de Haar. Fig. 8.16. CQF para a transformada de Haar. O termo “quadratura” quer dizer que as respostas dos filtros passa-baixa e passa-alta são simétricas ao redor do ponto de “quadratura” π/2. O termo h1 g1 h0 g0
  • 215.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 215 “mirror” vem do fato de que a magnitude da resposta em freqüência do filtro HPF é uma imagem espelhada da magnitude da resposta em freqüência do filtro LPF. Um das famílias de wavelets mais utilizadas é a família das Daubechies. Criada por Ingrid Daubechies, a família das wavelets Daubechies (ou db) é a única família 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 freqüências. Um exemplo de uma wavelete de daubechies pode ser visto na Fig. 8.17. Fig. 8.17. Forma de uma onda da família 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: w[n] = a.x[n] + b.x[n – 1] + c.x[ n – 2] + d.x[n – 3]
  • 216.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 216 z[n] = d.x[n] - c.x[n – 1] + b.x[ n – 2] - a.x[n – 3] Considerando que: 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 operações, que ac = -bd, então, chegamos à expressão final: y[n] = 2(aa + bb + cc + dd).x[n – 3] Novamente, precisamos ter (aa + bb + cc + dd) = 1. Os coeficientes de Daubechies obedecem a essas duas condições: i) (aa + bb + cc + dd) = 1 ii) ac = -bd 8.4 Wavelets no MatLab O MatLab traz uma série de ferramentas para lidar com wavelets. A mais básica é a função swt (e swt2 para sinais bi-dimensionais como imagens) ou dwt. A função swt permite diversos parâmetros de entrada (veja a documentação do MatLab para ver todos), sendo os principais: o sinal de entrada, a quantidade de níveis de decomposição e o tipo de wavelet (com o número de coeficientes previamente calculados até certo ponto). Já a função dwt apresenta apenas a decomposição do sinal nos componentes de aproximação e detalhes (como apresentado na Fig. 8.11). A função wavemenu abre uma janela com diversas funcionalidades do MatLab relacionadas com wavelets (Fig. 8.19). Todas essas funções podem ser ativadas por linha de comando no próprio MatLab.
  • 217.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 217 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'); >> % reconstrução >> 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');
  • 218.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 218 Plotagem do sinal de voz: Plotagem das aproximações e detalhes: Recuperação do sinal: >> A0 = idwt(cA1,cD1,'db1',l_s); >> err = max(abs(som-A0)) err = 1.1102e-016 >> plot (A0);
  • 219.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 219 No wavemenu, selecione Wavelet 1-D, carregue o arquivo a_casa.wav e clique em analyze com uma wavelet haar e 5 níveis de decomposição. O resultado está apresentado abaixo: Podemos visualizar a árvore de decomposição e o resultado final da reconstrução comparando com o arquivo original na próxima imagem:
  • 220.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 220 Para imagens, podemos usar o comando Wavelet 2-D do wavemenu. Carregando a imagem lena.bmp e processando com uma db1 com 5 níveis de decomposição, temos a janela apresentada na próxima figura e detalhada nas seguintes.
  • 221.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 221
  • 222.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 222 Imagem original Imagem sintetizada
  • 223.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 223 8.5 Exercícios 1. a) Verifique se os coeficientes a = (1-√3)/(4√2), b = (3-√3)/(4√2), c = (3+√3)/(4√2) e d = (1+√3)/(4√2) podem ser coeficientes de uma wavelet de Daubechies. b) Use esses coeficientes para filtrar a sequência: x[n] = {8, 4, 0, 6, 3, 7, 2, 9} de acordo com o filter banks da figura desta questão. c) Agora, acrescente o downsampling antes das saídas z[n] e w[n] e um upsampling após o processamento dessas saídas (antes da soma que gera y[n]). Qual o erro entre a resposta da letra anterior e desta em relação à saída? 2. Para os coeficientes de filtros abaixo, use o MatLab para plotar a resposta em frequência. 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}
  • 224.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 224 3. No conjugate quadrature filter da 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 condições e exemplo de coeficientes para outra família de wavelets. 
  • 225.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 225 8.6 Bibliografia Complementar 1. Stéphane Mallat, A Wavelet Tour of Signal Processing, Academic Press, 2009. 2. Michael Weeks, Digital Signal Processing Using MatLab and Wavelets, Infinity Science Press, 2007.
  • 226.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 226 9. Processamento Digital de Imagens Ao longo dos anos, o interesse em técnicas de processamento digital de imagens (PDI) vem aumentando. Diversas são as aplicações que precisam utilizar algum algoritmo associado ao processamento digital de imagens. Na prática, os principais objetivos relacionados com PDI são: i) melhoria na qualidade da imagem para observação humana ou para um mais reconhecimento automático por máquinas; e ii) compressão para transmissão ou armazenamento de imagens. Cada um desses objetivos leva a um grande leque de técnicas e algoritmos. No primeiro caso, podemos destacar aplicações relacionadas com imagens via satélite, onde, em geral, as imagens chegam com distorções e ruídos que precisam ser filtrados para uma análise humana. Da mesma forma, a quantidade de estudos voltados para a visão computacional vêm crescendo mundialmente e, na maioria dos casos, o primeiro passo para um sistema de visão computacional é a aplicação de algoritmos de processamento de imagens para, por exemplo, extrair a borda de objetos, permitindo uma melhor análise da sua forma. No segundo caso, em termos de compressão e transmissão, podemos observar aplicações voltadas para a Internet que, cada vez mais, precisam usar imagens para transmitir informações. Algumas dessas aplicações exigem imagens de alta resolução, como o sensoriamento remoto. Nesses casos, é preciso usar algoritmos que provoquem uma grande redução na quantidade de dados, sem perder informação. Esse é o caso também de imagens médicas, mas, nesse tipo de aplicação, a preocupação maior é o armazenamento das imagens. Por exemplo, nos Estados Unidos, mamografia digitais precisam ser armazenadas por 5 anos após o exame. Cada exame gera diversas lâminas que são imagens de alta resolução ocupando GigaBytes de espaço de armazenamento. Nesse caso também, é essencial que a compressão seja feita sem perdas.
  • 227.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 227 Uma imagem digital pode ser entendida como uma função f(x,y), onde x e y são as coordenadas espaciais e a função f é o nível de cinza (ou de brilho) naquele ponto. Quando x, y e f estão numa escala finita e discreta, dizemos que temos uma imagem digital. A imagem digital pode ser gerada diretamente através de um dispositivo digital ou pode ser digitalizada a partir de uma imagem real. Esse segundo caso é o mais clássico, onde dispositivos, como scanners, por exemplo, faziam a transposição da imagem do meio real para o digital. Para tanto, alguns processos são fundamentais como veremos posteriormente. Em termos de pesquisa e desenvolvimento, processamento digital de imagens está inserido na grande área de processamento gráfico. Nessa área, encontramos ainda elementos de computação gráfica e de visão computacional. [Gomes e Velho, 1995] relacionam essas áreas de acordo com a representação gráfica da Fig. 9.1. Essa representação e essa relação estão associadas ao tipo de dado que entra e que sai de um sistema específico. Notadamente, essa representação está relacionada com a percepção humana para os dados inseridos e retornados pelos sistemas. Para os dispositivos, como computadores, tudo é apenas processamento de dados.
  • 228.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 228 Fig. 9.1. Relação 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 saída. A computação gráfica refere-se ao uso de dados de entrada para geração das imagens de saída. 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 são renderizados compondo a imagem final. Já a visão computacional corresponde ao oposto da computação gráfica: uma imagem é inserida no sistema e dados são extraídos dela. Um exemplo pode ser uma contagem automática de pessoas a partir de uma fotografia. As primeiras aplicações relacionadas a imagens datam do início do século XX com as primeiras transmissões de imagens para jornais. As imagens eram transmitidas em 5 tons de cinza em cerca de uma semana. Com a invenção do sistema Bartlane (dedicado para esse tipo de transmissão), o tempo de envio de uma imagem passou a ser de apenas poucas horas. Em 1929, as imagens
  • 229.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 229 começaram a ser geradas em 15 tons de cinza. A partir daí, o tratamento de imagens começou a ter um maior desenvolvimento junto com o desenvolvimento de tecnologias digitais, de uma maneira geral. Na década de 60, registra-se o primeiro uso de computador para tratamento de imagens. No caso, procurava-se corrigir distorções nas imagens transmitidas pela sonda Ranger 7. 9.1 Digitalização Um sistema de processamento digital de imagens necessita de um dispositivo de digitalização (câmera digital, scanner, etc), um meio para processar e armazenar a imagem (como o computador) e uma forma de visualização da imagem. Em geral, a grande dificuldade está relacionada com a digitalização que pode gerar imagens com grande quantidade de dados a serem processados. Detalhando as principais funções relativas ao processamento digital de imagens, comecemos com o processo de geração de uma imagem digital a partir de uma imagem real: a digitalização. Dada uma imagem real, a digitalização consiste em colher amostras dessa imagem para representá-la em um meio discreto. O processo de coleta de amostras é o mesmo que a digitalização de uma função como pode ser visto na Fig. 9.2. Nela, vemos uma função no contínuo. Para ser representada em algum domínio discreto, é preciso “adaptar” a função a esse domínio. Ou seja, partes dela serão perdidas porque não podem ser representadas. Assim, amostras da função são coletadas por impulsos separados por intervalos definidos de tempo de forma que representem da melhor forma possível a função original. Notadamente, em muitos casos reais, essa representação perde elementos que não podem ser recuperados. Mas espera-se que a perda não seja significativa. De qualquer forma, a reconstrução do sinal leva a uma forma aproximada do sinal original. Isso está representado na Fig. 9.3. O sinal original é discretizado. Cada amostra é então codificada e armazenada. A decodificação é feita sem
  • 230.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 230 perda, recuperando o sinal discreto correto. A reconstrução que seria o processo inverso da discretização é que ocorre de forma aproximada. O número de amostras que deve ser colhido de um sinal para poder recuperá-lo é definido pela taxa de Nyquist. Fig. 9.2. Em azul (linha contínua) o sinal original e em vermelho (linha pontilhada) as amostras colhidas do sinal para representá-lo em um domínio discreto. Fig. 9.3. Discretização e codificação em oposição à decodificação e reconstrução do sinal contínuo original.
  • 231.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 231 Tanto para sinais quanto para imagens, o processo de digitalização ocorre da mesma forma. Em imagens, porém, ainda há outros elementos a serem cuidados como será descrito posteriormente. Para geração 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 Físico (que são os objetos reais, como eles existem na natureza), o Universo Matemático (que é uma descrição abstrata desses objetos), o Universo de Representação (com descrições simbólicas dos objetos) e, por fim, o Universo de Implementação (onde são associadas às descrições abstratas e simbólicas com estruturas de dados implementáveis no computador). No caso, a imagem digital é representada no computador através de uma matriz. A matriz imagem tem suas dimensões definidas durante o processo de digitalização. A coleta de amostras define qual será a dimensão da matriz. Essa medida define a resolução da imagem e é especificada em dpi (dots per inch ou pontos por polegada). A resolução da imagem não pode ser alterada após o processo de digitalização a não ser por uma nova digitalização. Definida as dimensões da matriz, define-se cada elemento dessa matriz. Em uma imagem digital, o seu menor elemento, ou seja, a célula da matriz, é chamado de pixel. Seu valor é definido também durante a digitalização em um processo semelhante ao de amostragem chamado de quantização. Em uma analogia com sinais, como fizemos na Fig. 9.2, a quantização é responsável por discretizar o sinal em sua amplitude. Isso pode ser visto na Fig. 9.4. Nas imagens, a amplitude de cada célula da matriz corresponde à sua cor. Assim, através da quantização definimos quantas cores a imagem terá. A essa definição de cores chama-se de resolução de cor da imagem. Diferente da resolução da imagem, a resolução de cor, em alguns casos, pode ser alterada após a digitalização. Dessa forma, uma imagem digital está completamente definida: suas dimensões e a cor de cada pixel. Como está claro, então, uma imagem nada mais é do que
  • 232.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 232 uma matriz onde cada célula tem uma cor específica. O conjunto e a disposição dessas cores é percebida pelo sistema visual humano e interpretado pelo nosso cérebro como uma imagem. Fig. 9.4. Como antes (Fig. 9.3), em azul (linha contínua) temos o sinal original, em vermelho (linha pontilhada vertical) as amostras colhidas do sinal durante a amostragem e em pontilhado na horizontal temos a discretização das amplitudes durante a quantização. Dada a importância das cores na formação e percepção da imagem, descreveremos a seguir o sistema computacional de cores desde sua definição. 9.2 Sistema Computacional de Cores A cor é tida como um fenômeno psicofísico. Ou seja, por um lado, ela deriva de um fenômeno físico relacionado com a luz. No entanto, nossa percepção da cor depende de sua interação com nosso sistema visual. Percebemos uma parede como branca se uma luz branca incidir sobre ela. Se a única fonte de luz no ambiente for uma luz vermelha, perceberemos a parede como um tom de vermelho e não conseguiremos distingui-lo de outra cor.
  • 233.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 233 No início do estudo sobre cores, o fenômeno que mais chamava a atenção era a decomposição da luz branca em todas as cores do espectro ao passar por um prisma. Acreditava-se que o prisma tinha essa propriedade “mágica” de decompor a luz. Foi Sir Isaac Newton, físico, matemático e astrônomo inglês, no século XVII, que derrubou essa idéia com um experimento simples: Newton colocou um prisma na frente de outro e a decomposição 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 células fotossensíveis, cada uma responsável pela percepção de uma cor. Fig. 9.5. Experimento de Newton sobre a decomposição da luz branca. No século XIX, Young propôs o modelo tricromático: nele, o sistema visual humano era composto apenas de três células que seriam responsáveis pela percepção de altas, médias e baixas freqüências. A idéia do modelo tricromático foi comprovada por Helmholtz na década de 60, mas o modelo de Young não explicava alguns fenômenos do sistema visual. No entanto, com seu trabalho, Young mostrou que com apenas essas três cores primárias (de alta, média e baixa freqüências) todas as cores do espectro poderiam ser geradas através de um processo aditivo. Atualmente, teoria da percepção das cores usa o modelo de Young-Helmholtz e o modelo de Hering. De fato, nosso sistema visual não é sensível às freqüências
  • 234.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 234 de forma separada, mas, sim, à composição delas. Seja L a componente de baixa freqüência, M a média freqüência e H a alta freqüência, temos células fotossensíveis às combinações: L - M H – (L + M) L + M As altas freqüências (baixo comprimento de onda) correspondem ao tom de azul (B), as médias aos tons de verde (G) e as altas freqüências ao vermelho (R). Assim, percebemos as combinações: i) R – G ii) B – (R + G) iii) R + G A combinação (iii) corresponde ao amarelo ou à luminosidade da cor. As combinações (i) e (ii) formam a componente de crominância. Em 1931, a Companhia Internacional de Iluminação definiu o modelo RGB baseado na teoria de Young, onde a soma de diferentes intensidades de cada uma dessas cores primárias corresponderia a uma cor do sistema. Esse é o modelo adotado pelos sistemas computacionais, por televisores, projetores, monitores, etc. Além do sistema RGB, outros sistemas surgiram ao longo dos tempos para aplicações específicas como o HSV, HSL, CMYK, CieLab, Pantone, etc. A mudança de um sistema para outro pode trazer diversas vantagens dependendo da aplicação. No sistema computacional de cores, cada cor é representada pela tríplice (R, G, B), onde cada componente de cor tem seu valor inteiro variando de 0 a 255, ou seja, 1 byte. Assim, 3 bytes são necessários para representar uma cor. Com isso, a quantidade máxima de cores que uma imagem pode ter em um computador comum é cerca de 16 milhões.
  • 235.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 235 No sistema padrão do Windows, adotado pela maioria dos sistemas computacionais, as imagens podem ser armazenadas em 4 diferentes formatos, baseado na quantidade de bits necessária 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 milhões 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 também em uma paleta pré-definida, contendo apenas o nível de brilho de cada cor, também chamado de tom de cinza. Essa paleta contém 256 entradas (cores), precisando, assim, de 8 bits para cada pixel da imagem codificar a entrada da paleta. O nível 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. (Eq. 9.1) 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 contribuição do componente B é pequena em relação aos outros componentes. Existem diferentes formas de representar as cores de um sistema. A mais comum é através de um sólido como o cubo de cor, ou o cilindro ou o cone. Essas são três representações comuns para o sistema RGB.
  • 236.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 236 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). Variações nesses valores geram as outras cores do sistema computacional de cores. 9.3 Histograma Em uma imagem, o histograma é um gráfico que mostra a distribuição das cores na imagem. No eixo x, encontramos todos os valores possíveis 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 não diz como as cores estão distribuídas na imagem; apenas quantas vezes cada componente aparece. No entanto, existem outras informações agregadas ao histograma de uma imagem que permitem alterar algumas de suas características. 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 próximo ao 0 indica uma imagem escura, assim como um histograma concentrado próximo ao 255 indica uma imagem clara. Um histograma com uma pequena variação de cores (Fig. 9.6) indica uma imagem com baixo contraste (o contraste está associado à separação das cores na imagem). Fig. 9.6. Histograma de uma imagem de baixo contraste. Por não conter informação sobre a distribuição das cores em uma imagem, diferentes imagens podem ter o mesmo histograma (Fig. 9.7)
  • 237.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 237 Fig. 9.7. Imagens completamente opostas, mas que têm o mesmo histograma. As imagens podem ser manipuladas através de mudanças em seus histogramas. As operações mais básicas são de equalização, stretch e especificação. Na equalização, 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 não estiver presente na imagem original, ele deverá estar na imagem final após a aplicação dessa operação. Já a especificação faz com que uma imagem passe a ter o histograma como definido em outra imagem. Por outro lado, mudanças na imagem trazem conseqüências em seu histograma. Por exemplo, se cada pixel da imagem é somado com um valor positivo X, as cores dessa imagem tornar-se-ão mais próximas 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 expansão do histograma, aumentando seu contraste. Já o produto por um valor entre 0 e 1 provocará a compressão do histograma, diminuindo seu contraste. Nesse caso, valores negativos, claro, não fazem sentido já que as cores são positivas entre 0 e 255. Assim, através do histograma podemos obter algumas informações 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 características são vistas a seguir.
  • 238.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 238 9.4 Filtragem de Imagens Digitais A forma mais comum de manipular uma imagem (mudar suas características) é através do processo de filtragem. Existem diversos tipos de filtros e maneiras diferentes de realizar uma filtragem. Os filtros digitais podem ser classificados em: 1) Filtros Estatísticos ou Determinísticos: onde os estatísticos são os que usam alguma propriedade estatística da imagem. Exs: filtro da moda, da mediana. 2) Filtros lineares ou não-lineares: os filtros lineares não geram novas freqüências na imagem, enquanto os lineares geram. Exs: Lineares: passa- baixa, passa-alta, passa-faixa; Não-Lineares: filtros polinomiais com base de polinômios de ordem maior que 2. 3) Filtros Topológicos ou de Amplitude: filtros topológicos são os que afetam a estrutura da imagem (como os filtros de warping) e os filtros de amplitude atuam apenas no espaço de cores da imagem. Uma das formas de executar o processo de filtragem de uma imagem é através da convolução. A convolução é uma operação comum em processamento de sinais, resultante do seguinte cálculo: ∫ ∞ ∞− −= τττ dthfthtf )().()(*)( (Eq. 9.2) A Eq. 9.2 representa a convolução de uma função f(t) por uma função g(t). Em termos gráficos, a convolução pode ser representada como na Fig. 9.8 (onde as funções estão representadas como retângulos apenas para facilitar o entendimento). Uma das funções, h, é rebatida e desloca-se pelo espaço das funções. No momento que ela começa a ter alguma interseção com a função f a área dessa interseção é calculada (resultado da integração). Enquanto as funções tiverem área comum ao longo do deslocamento de h, o resultado é avaliado. A integração é feita de -∞ a +∞, mas, claro, a área só é diferente de zero enquanto há área em comum.
  • 239.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 239 Para imagens, a convolução é aplicada de forma discreta. Ou seja, no caso das imagens, as funções que convoluem são matrizes. Da mesma forma, a integração é substituída por somatório. Na sua execução, como na versão contínua, uma matriz é fixa e a outra desloca-se sobre ela. A área (resultado da integração) é a região em comum entre as funções. Podemos ver esse processo com as matrizes apresentadas na Fig. 9.10. Fig. 9.8. Representação gráfica da convolução da função f pela função h. Fig. 9.10. Convolução discreta aplicada a matrizes. Uma característica da convolução discreta não é desejável na filtragem de imagens. Por exemplo, considere na Fig. 9.9 que f é a imagem e h é o filtro. A imagem de entrada tem dimensões 2x3, enquanto o resultado da operação é uma matriz 3x4. Na prática, o processo de filtragem não pode acrescentar linhas ou colunas à imagem. Assim, para aplicação em imagens digitais, a convolução digital ocorre de maneira um pouco diferente.
  • 240.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 240 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 somatório do produto de cada valor da máscara pelo valor da imagem sob a máscara. Fig. 9.10. Processo de convolução aplicado em imagens. Por exemplo, suponha que a matriz de um filtro tem os valores: 987 654 321 www www www Quando o ponto w5 casar no pixel p1, suponha que os valores abaixo da matriz do filtro tenham valores: 987 654 321 zzz zzz zzz O resultado da filtragem será: w1.z1 + w2.z2 + .... + w10.z10. Assim, a matriz do filtro (chamada de máscara) atua como uma matriz de pesos. Para evitar perda das características do filtro, a máscara deve ser sempre multiplicada por 1/∑iw. Se o centro da máscara estiver numa posição (x,y) na imagem, o tom do pixel posicionado em (x,y) será substituído por R. A máscara é então movida para a
  • 241.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 241 próxima posição de pixel na imagem e o processo se repete. É prática 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 operação anterior. É preciso observar que essa operação exige algumas alterações 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 máscara não 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 extensão da imagem. Ou seja, a matriz imagem é estendida, ganhando novos elementos em sua borda externa de forma que a operação de convolução possa ser executada. É importante ressaltar que esses novos elementos são inseridos apenas para fins de processamento. Eles não farão parte da imagem original e nem da imagem de saída. 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 situação, 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 extensão é necessária para o processamento de toda a borda interna da imagem. A quantidade de elementos a ser estendidos depende da dimensão do filtro. Os elementos inseridos na extensão dependem do tipo de extensão. A extensão mais simples é a fixa que preenche toda a borda externa com um valor fixo. Se esse valor é zero, a extensão é chamada de nula. O preferível é que a extensão seja preenchida com os valores da borda interna da imagem para diminuir os “efeitos de borda” (pixels com cores não relacionadas com as cores presentes no restante da imagem).
  • 242.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 242 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 máscaras, os filtros lineares são os que têm as maiores aplicações práticas. Como definido, os filtros lineares não acrescentam novas freqüências à imagem. Vamos descrever esses filtros, exemplificá-los e discutir a função deles em imagens. São eles: filtro passa-baixa, passa-alta e passa-faixa. 1) Filtro Passa-Baixa Teoricamente, esse filtro é gerado por uma função 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 função é deixar passar as baixas freqüências (freqüências entre –w e w) e eliminar as altas freqüências. Na prática, esse filtro tem um comportamento como o da Fig. 9.12c, onde ele, na verdade, não elimina completamente as altas freqüências, mas as atenua.
  • 243.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 243 a) b) c) Fig. 9.12. a) Forma de um filtro passa-baixa ideal, b) matriz de um filtro passa- baixa (filtro Box) e c) forma de um filtro passa-baixa real. O resultado da aplicação de um filtro passa-baixa em uma imagem é seu embaçamento. Em imagens, as freqüências estão associadas a regiões de mudanças bruscas entre tons (como, por exemplo, uma passagem de branco para preto). A atenuação dessas mudanças é interpretada por nosso sistema visual como um embaçamento na imagem. A Fig. 9.13 ilustra essa idéia. A Fig. 9.13a mostra uma região de alta freqüência da imagem e a Fig. 9.13b apresenta o resultado de uma filtragem passa-baixa. a) b) Fig. 9.13. Ilustração do efeito de um filtro passa-baixa: a) imagem original e b) imagem resultante. 2) Filtro Passa-Alta Esse filtro tem comportamento oposto ao passa-baixa e é gerado por uma função que tem valor zero entre –w e w e 1 fora desse intervalo (Fig. 9.14a). O
  • 244.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 244 filtro Laplaciano é um exemplo de um filtro passa-alta (Fig 9.14b). Como um filtro passa-alta, sua função é deixar passar as altas freqüências e eliminar as baixas freqüências. Na prática, esse filtro tem um comportamento como o da Fig. 9.14c, onde ele, na verdade, não elimina completamente as baixas freqüências, 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 aplicação de um filtro passa-alta em uma imagem é o destaque de seus contornos. A atenuação das baixas freqüências e intensificação das altas provoca um realce nas regiões de fronteiras da imagem (regiões que há mudanças bruscas entre tons claros e escuros). Uma ilustração do efeito da aplicação desse filtro em uma imagem pode ser visto na Fig. 9.15. a) b) Fig. 9.15. Ilustração do efeito de um filtro passa-alta: a) imagem original e b) imagem resultante.
  • 245.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 245 3) Filtro Passa-Faixa Esse filtro permite a passagem de freqüências dentro de um intervalo e cortam as freqüências 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 função é deixar passar freqüências específicas da imagem. Na prática, 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 passa- faixa (filtro Prewitt – detector de linhas horizontais) e c) forma de um filtro passa- faixa real. O resultado da aplicação 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. Além da extensão da imagem, na implementação de uma filtragem digital deve- se considerar questões relacionadas a cores não-realizáveis. O processo de filtragem pode, por exemplo, gerar uma cor negativa ou maior que 255. Esse fenômeno é chamado de “cor não-realizável”. Assim, é preciso truncar o resultado da filtragem para que as cores resultantes sejam sempre inteiras e entre 0 e 255.
  • 246.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 246 É possível também aplicar uma filtragem no domínio da frequência. Considere a função 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 código 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, []); 9.5 Compressão de Imagens Como uma imagem é apenas uma matriz de dados, qualquer algoritmo de compressão de dados pode ser usado para gerar compressão no arquivo imagem. No entanto, podemos usar características da própria imagem para alcançar mais altas taxas de compressão.
  • 247.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 247 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, regiões 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 não funciona bem, podendo até expandir o espaço de armazenamento necessário para a imagem. No entanto, esse algoritmo de compressão encontra-se implementado em uma variação do formato BMP, o BMP_RLE (Run-Length Encoding). Outro algoritmo que sofreu uma variação e foi implementado para imagens é o Lempel-Ziv. O LZ77 foi criado por Abraham Lempel e Jacob Ziv em 1977, sendo um algoritmo de compressão dinâmico. Ou seja, ele gera a codificação à medida que lê o arquivo de entrada. Isso é diferente de outros algoritmos clássicos de compressão de dados como o código de Huffman que, em sua versão clássica, primeiro lê todo o arquivo, gerando a codificação. Somente depois, outra varredura é feita para gerar a compactação. Em 1984, Terry Welch propôs uma modificação no LZ77 (a qual foi chamada de LZW) que o tornou mais eficiente. Essa modificação é, por exemplo, implementada no formato GIF (Graphic Interchange Format) para armazenamento de imagens de até 256 cores. O LZW é inicializado com um dicionário básico de codificação e esse dicionário vai ganhando novos códigos à medida que o arquivo vai sendo lido. Na transmissão ou armazenamento, apenas o dicionário básico é enviado com o arquivo. Durante a descompactação, o mesmo dicionário é formado automaticamente.
  • 248.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 248 Uma forma mais nova para gerar compressão é através do uso de wavelets. A decomposição wavelet gera um downsampling em cada nível que, por definição, já diminui a quantidade de dados. Assim, é bastante natural que ela seja usada como mecanismo para gerar compressão. 9.6 Processamento de Imagens no MatLab O MatLab possui uma toolbox específica para o tratamento de imagens digitais. Essa toolbox possui diversos comandos para as diversas técnicas de processamento de imagens. Pelas próprias características do MatLab, ele se torna bastante apropriado para trabalhar com imagens. Por exemplo, a estrutura básica do MatLab é a matriz e uma imagem nada mais é do que uma matriz. Uma imagem é lida no MatLab e armazenada como uma matriz do tipo uint8. Esse tipo armazena valores inteiros de 0 a 255 (correspondendo aos tons da imagem), mas não podem ser usados com operadores de números do tipo double como adição, subtração, multiplicação e divisão. Para tanto, é preciso primeiro converter a matriz imagem para o tipo double. O seguinte código apresenta diversas funções do MatLab para imagens na prática: >> im = imread (‘lena.jpg’); % Leitura da imagem em tons de cinza >> [lin, col] = size(im); % lê o número de linhas e colunas de uma imagem % e armazena nas variáveis lin e col (variáveis quaisquer) >> imshow (im); % visualização de imagens >> im2 = double(im); % conversão da imagem para tipo numérico >> im2 = im2 + 10; % aumento do brilho de uma imagem >> im2 = uint8(im2); % volta ao tipo imagem >> imwrite (im2, ‘nome.bmp’, ‘bmp’); %salva a nova imagem O código acima apresenta apenas um exemplo de trabalho com imagens. No caso, uma imagem em tons de cinza é carregada e armazenada na variável im.
  • 249.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 249 Não há necessidade de indicar o tipo da imagem já que isso é lido direto do cabeçalho da mesma. O MatLab aceita imagens do tipo bmp, jpg, tif, pcx e alguns outros. A principal função desse código é a leitura do arquivo da imagem com o comando imread. É possível esse comando ter dois argumentos de saída quando queremos armazenar em uma variável 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) não há paleta de cores. As matrizes R, G, B são armazenadas assim na imagem. Isso é tratado no MatLab como uma matriz 3 dimensional. Cada dimensõ contém uma matriz mxn que corresponde à matriz de um dos tons (exatamente na ordem RGB). Para separar cada componente, o seguinte código 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 à variável r >> g = im(:, :, 2); % matriz do segundo plano >> b = im(:, :, 3); % matriz do terceiro plano Nesse caso, observe que a leitura das dimensões da imagem deve ser feita como: >> [lin, col, plano] = size(im); Ou seja, um terceiro parâmetro de saída 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:
  • 250.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 250 rgb2grey: conversão de 24 bits para tons de cinza im2bw: conversão para preto-e-branco (dado um ponto de corte) rgb2ind: conversão de 24 bits para 256 cores As dimensões 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 próximo % bilinear = interpolação bilinear % bicubic = interpolação bicúbica % 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 funções histeq e imadjust provocam a equalização e a especificação do histograma de uma imagem, respectivamente. A filtragem de uma imagem pode ser conseguida com a função filter2. Observa- se que a função 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 média (box) >> im2 = uint8(round(filter2(h, im)));
  • 251.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 251 >> imshow (im2); No código acima, usamos a função fspecial para criar o filtro da média. O parâmetro 5 indica a ordem do filtro (dimensões da matriz quadrada). A função permite ainda a criação de filtros: gaussian, sobel, prewitt, laplacian, log, average e unsharp. Cada um com sua particularidade quanto à ordem.
  • 252.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 252 9.7 Exercícios 1. Diferencie os processos de amostragem e quantização. 2. Sobre filtros digitais: a. Como os filtros se classificam de maneira geral? b. Como se classificam os filtros lineares? Explique o resultado da aplicação de cada um desses tipos a uma imagem. 3. O que representa o histograma de uma imagem e cite, pelo menos, duas características 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 2 3 1 0 2 2 2 0 Qual a imagem resultante após a aplicação 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 diferenças à medida que as ordens se diferenciam mais e mais. Explique os motivos das diferenças encontradas nos resultados. 
  • 253.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 253 9.8 Bibliografia Complementar 1. Rafael Gonzalez, Richard Woods, Digital Image Processing, Ed. Prentice- Hall, 2007. 2. Jonas Gomes, Luiz Velho, Computação Gráfica: Imagem, Sociedade Brasileira de Matemática, 1996. 3. Hélio Pedrini, Análise de Imagens Digitais, Ed. Thomson, 2007.
  • 254.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 254 10. Técnicas de Codificação de Áudio e Vídeo Com a melhoria dos dispositivos digitalizadores, tem sido constante o aumento na quantidade de dados a serem armazenados. Isso é mais sensível quando falamos de dados relacionados com áudio ou imagens. Para imagens, o problema agrava-se com vídeos que nada mais são do que seqüências de imagens. Para reduzir o espaço necessário para armazenar tais arquivos (seja para fins de preservação ou transmissão dos mesmos), algoritmos de compressão de dados são usados. A compressão de dados é uma forma de codificação que visa a reduzir o tamanho dos dados com ou sem perda de informação. Caso haja perda, essa perda pode ser relevante ou não. Assim, antes de começarmos a falar de codificação de áudio e vídeo, precisamos entender os conceitos associados à teoria dos códigos. 10.1 Teoria dos Códigos Codificação consiste no mapeamento de um alfabeto (alfabeto fonte) em outro (alfabeto código). Cada símbolo ou palavra da fonte deve ser mapeada de forma única ou não em um código. O código pode ser formado por uma seqüência de símbolos do alfabeto fonte. Por exemplo, seja o alfabeto fonte S = {A, B, C, D} que se deseja codificar usando bits (ou seja, o alfabeto código é apenas {0, 1}). Uma codificação possível seria: A = 00 B = 01 C = 10 D = 11 Os códigos podem ser classificados da seguinte maneira: Códigos de comprimento variável ou de bloco Os códigos de comprimento variável são aqueles que têm atribuídos códigos de comprimento diferente a uma mesma palavra. Por exemplo, se A é codificado como 0 ou como 01, temos um código de comprimento variável. Pode haver
  • 255.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 255 diferentes comprimentos entre diferentes palavras de um código. Por exemplo, se: A = 0 B = 01 temos um código de bloco. Os códigos de bloco, por sua vez, podem ser divididos em singulares ou não- singulares. Nos códigos não-singulares todas as palavras código são distintas. Por exemplo: A = 10 B = 11 Se há repetição, nas palavras código, temos um código singular. Por exemplo: A = 10 B = 10 C = 01 Os códigos não-singulares são divididos em unicamente decodificáveis ou não unicamente decodificáveis. Os códigos unicamente decodificáveis não geram ambigüidades na decodificação; o mapeamento de volta ao alfabeto fonte é feito de forma única. Já os não-unicamente decodificáveis geram ambigüidades. Por exemplo: A = 10 B = 11 C = 01 é um código unicamente decodificável, enquanto: A = 0 B = 1 C = 01 não é. Se o receptor recebe a seqüência “01”, ela pode ser decodificada em AB ou C.
  • 256.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 256 Por último, os códigos unicamente decodificáveis podem ser divididos em instantâneos ou não-instantâneos. Os códigos são ditos instantâneos se sua decodificação não precisa de informação futura. Por exemplo, o código: A = 10 B = 100 C = 1000 é não instantâneo. Para decodificar uma seqüência de bits, precisamos ler o próximo bit para saber se ele é zero ou um, denotando o encerramento ou não da seqüência. Já o código: A = 01 B = 001 C = 0001 é instantâneo; ao encontrarmos um bit 1 sabemos que o código acabou. Essa classificação pode ser vista em resumo na figura abaixo: Uma condição necessária e suficiente para um código ser unicamente decodificável é que nenhuma palavra completa do código seja prefixo de outra palavra qualquer.
  • 257.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 257 Por exemplo, se: A = 10 B = 01 C = ? C não pode receber nenhum código que comece com 10 ou 01 para garantir que o código seja unicamente decodificável. A desigualdade de Kraft garante que um código é instantâneo. Se, para um código de base r, com q palavras, cada palavra com comprimento Li, a desigualdade é satisfeita, então o código é dito instantâneo. Por exemplo, considere o código: A = 0 comprimento Li=1 B = 01 comprimento Li=2 C = 11 comprimento Li=2 Número binário base r=2 Ou seja, 2-1 + 2-2 + 2-2 = 1 Isso garante que o código é instantâneo. McMillan mostrou que, se um código satisfaz a mesma desigualdade, ele também é unicamente decodificável. Para um código, o comprimento médio é calculado como: onde Li é o comprimento de cada uma das q palavras do código e Pi é a probabilidade de cada palavra. Um código é dito compacto para uma fonte S,
  • 258.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 258 se seu comprimento médio é menor ou igual ao comprimento médio de todos os outros códigos unicamente decodificáveis para a mesma fonte S. Já a taxa de compressão, C, para arquivos em geral, é medida como: CompactadoArquivodooCompriment OriginalArquivodooCompriment C ___ ___ = 10.2 Algoritmos de Compressão Os algoritmos de compressão dividem-se em: - Algoritmos com perda ou sem perda - Algoritmos estáticos ou dinâmicos O termo “perda” relaciona-se com perda de informação. Algum símbolo que havia no arquivo original e foi perdido no arquivo compactado. Dependendo da fonte e do nível de perda, essa perda pode não ser sensível ao ser humano. Por exemplo, em termos de imagens, não percebemos a diferença entre tons muito próximos, principalmente, se colocados em posições adjacentes em uma imagem. Assim, se o ponto (i, j) em uma imagem tem tom de cinza 130 e o ponto (i, j + 1) tem tom 131, nós não conseguimos ver essa diferença. Assim, os dois pontos podem passar a ter o valor 130 sem que nosso sistema visual perceba. No entanto, isso pode provocar um aumento na taxa de compressão de um arquivo de imagem. Algoritmos baseados em wavelets e em quantização vetorial são algoritmos de compressão com perda. Já algoritmos sem perda, temos o código de Huffman, o Run-length e o Lempel-Ziv-Welch. Algoritmos estáticos são algoritmos que geram toda a tabela de codificação antes de, efetivamente, codificar o arquivo. Em geral, tais algoritmos são ditos de dois passos: primeiro, eles lêem todo o arquivo a fim de gerar a tabela de codificação e, em seguida, eles precisam ler o arquivo de novo para codificar o arquivo. Algoritmos dinâmicos geram a codificação e codificam à medida que eles lêem o arquivo de entrada. Assim, todo o processo é feito em um passo apenas.
  • 259.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 259 Vamos ver o exemplo de funcionamento de alguns algoritmos, começando com algoritmos de compressão sem perdas. 10.2.1 Código de Huffman Definido por David Huffman em 1952, é uma variação do algoritmo de Shannon- Fano. O código de Huffman divide o conjunto de entrada em dois subconjuntos, atribuindo 0 a um deles e 1 ao outro. Prossegue com a codificação da mesma forma. O algoritmo completo pode ser resumido da seguinte forma: • Organizam-se os símbolos em ordem decrescente de suas probabilidades; • Uma fonte reduzida é formada a partir dos 2 símbolos de menor probabilidade; • Continua o passo anterior até que só restem 2 símbolos; • Atribui-se 0 a um dos símbolos e 1 ao outro, aleatoriamente; • Continua atribuindo 0’s e 1’s até chegar aos símbolos iniciais. Por exemplo, considere um arquivo com apenas 5 símbolos (a, b, c, d, e) dispostos na mensagem M da seguinte forma: M = a a a b b b c e c d Primeiro, deve-se calcular a probabilidade de cada símbolo. 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 símbolos são listados em ordem decrescente de probabilidade. Os símbolos de menor probabilidade vão sendo agrupados, gerando símbolos cuja probabilidade é dada pela soma das probabilidades dos símbolos que os gerou e criando, assim, as chamadas fontes reduzidas. O processo continua até que só reste uma quantidade de símbolos igual à base a que se deseja gerar a codificação (por exemplo, para uma codificação binária – base 2 – o processo continua até que só restem dois símbolos). A figura abaixo representa o processo:
  • 260.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 260 A partir dos símbolos da última fonte reduzida, atribui-se 0 para um símbolo e 1 para o outro, aleatoriamente. Esse processo vai se repetindo pelas outras fontes reduzidas até chegar aos símbolos da fonte. A partir da penúltima fonte, as atribuições de 0’s e 1’s são feitas à direita dos símbolos, garantindo que nenhuma palavra do código será prefixo de outra (tornando o código unicamente decodificável): No caso desse exemplo, a seguinte codificação é gerada: a ↔ 10 (2 bits) b ↔ 11 (2 bits) c ↔ 00 (2 bits) d ↔ 010 (3 bits)
  • 261.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 261 e ↔ 011 (3 bits) Assim, se no arquivo original, cada símbolo ocupava 8 bits, tínhamos uma mensagem com 80 bits. Agora, apenas 16 bits são necessários para codificar a mensagem (sem contar o espaço necessário para armazenar a tabela de codificação). O comprimento médio desse código é 1,6. Nesse exemplo, podemos observar algumas características do código de Huffman: 1) O código gerado é unicamente decodificável e instantâneo. 2) A codificação atribuiu para os símbolos de maior probabilidade os menores códigos (claro, observando, as condições para garantir o item 1 acima). O código de Huffman é um algoritmo de compressão sem perda e estático. Sua codificação é dita bottom-up já que podemos comparar a estrutura montada como uma árvore invertida (a raiz embaixo) cuja codificação iria da raiz às folhas. Existem algumas variações do código de Huffman como a versão para multi-símbolos, o código de Huffman adaptativo, o truncado e a versão modificada. O problema do código de Huffman é que, dependendo da quantidade de símbolos no código fonte, sua codificação pode atingir rapidamente grandes quantidades de bits. Uma tabela de codificação deve ser anexada ao arquivo, permitindo sua decodificação. Uma variação no código de Huffman é a Codificação Aritmética. Ela funciona basicamente da mesma forma que o código de Huffman, mas gera a codificação baseando-se em intervalos ao invés de probabilidades. Cada símbolo da fonte será representado por um intervalo, onde, à medida que o intervalo se torna menor, o número de bits necessário para especificá-lo aumenta.
  • 262.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 262 A codificação aritmética é utilizada em parte da compactação do formato JPEG para imagens. 10.2.2 Run-length O algoritmo de run-length é um dos mais simples. Ele é apropriado para alguns tipos de arquivos em condições específicas. Por exemplo, imagens em preto-e- branco 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 codificação é da forma: <contador, símbolo> onde o contador diz quantas vezes o símbolo se repete em seqüência. Por exemplo, para a seqüência: 120 120 120 30 45 45 45 60 o resultado da codificação seria: <3, 120> <1, 30> <3, 45> <1, 60> Como dito antes, se o arquivo tem grandes repetições de um mesmo valor, essa codificação pode se mostrar bastante eficiente. O run-length é implementado em uma versão do formato BMP para armazenamento de imagens (o BMP_RLE). 10.2.3 Algoritmo de Lempel-Ziv-Welch Criado por Abraham Lempel e Jacob Ziv, o LZ-77 é um algoritmo de compressão dinâmico e sem perda. Em 1984, Terry Welch modificou o algoritmo, criando uma versão mais eficiente que é a utilizada hoje em dia, o LZW. No LZW, a codificação começa com um dicionário base o qual contém a codificação dos símbolos da fonte. Esse dicionário vai ganhando novos símbolos à medida que o arquivo original vai sendo lido e codificado.
  • 263.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 263 Por exemplo, considere o dicionário base abaixo (sem nos preocuparmos com o código que foi atribuído a cada símbolo da fonte): X ↔ #1 Y ↔ #2 Z ↔ #3 W ↔ #4 e a seguinte mensagem M: M = XYXZXYXW Ao ler o primeiro símbolo da mensagem (X), o algoritmo verifica se esse símbolo está no dicionário. Se estiver, atribui a codificação (#1). Em seguida, o próximo símbolo (Y) é lido e codificado de acordo com o dicionário (#2). Agora, o algoritmo verifica se XY (o símbolo anterior completo concatenado com o atual) faz parte do dicionário. Se não faz parte, ele é acrescentado com uma nova codificação (por exemplo, #5). O dicionário agora passa a ter essa entrada. O processo prossegue, acrescentando novas entradas que passam a poderem ser usadas na codificação. No entanto, apenas o dicionário base é armazenado junto com a mensagem codificada. Ao decodificar, o dicionário base é utilizado e é estendido da mesma forma que foi feito na codificação. 10.3 Algoritmos de codificação multimídia Os algoritmos de compressão com perdas mais conhecidos utilizados em multimídia são: MPEG-1 – MPEG é a sigla de Moving Pictures Experts Group, que é um grupo de pesquisadores que desenvolvem padrões para compressão de áudio e vídeo. O MPEG-1 é o padrão original do MPEG e é capaz de codificar áudio e vídeo a uma taxa de 1,5 Mbps.
  • 264.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 264 O MPEG define três níveis ou camadas de compressão para áudio. Em cada camada o nível de compressão é mais complexo e exige mais poder computacional. A terceira camada (layer 3) se tornou bastante popular para a compressão de áudio e atualmente é o que conhecemos como MP3, ou melhor, MPEG Layer 3. MPEG-2 – É um padrão de compactação de maior qualidade utilizado em radiodifusão por satélite, por exemplo. Pode ser utilizado em transmissões a taxas de 4 a 9 Mbps. Uma versão modificada do MPEG-2 é usada pelo padrão HDTV e também nos DVDs. MPEG-4 e derivados - O padrão 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 espaço. Vamos detalhar mais sobre compressão de áudio e vídeo a seguir: 10.3.1 Codificação de Vídeo A fim de avaliar sistemas de compressão de vídeo, os seguintes parâmetros devem ser considerados quanto ao desempenho da compressão: • Quantidade ou grau da compressão • Qualidade da Imagem • Velocidade da compressão e descompressão É preciso analisar também a implementação em hardware ou software. O grau da compressão é, geralmente, avaliado como uma razão entre os dados de saída e os de entrada. Essa medida, no entanto, pode trazer problemas para imagens (estáticas ou dinâmicas) quando temos uma matriz m versus n com ainda uma quantidade de bits por pixel para representar a cor. Uma maneira
  • 265.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 265 mais eficiente de especificar o total de compressão é determinar o número de bits por pixel apresentado (displayed) necessário 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 compressão apenas, no entanto, não é medida suficiente para avaliar um sistema. Outro fator igualmente importante é a qualidade da imagem gerada. Nesse sentido, podemos dividir os algoritmos de compressão, de uma maneira geral, em com perda ou sem perda. Nos algoritmos de compressão sem perda, não há necessidade de avaliar a qualidade da imagem já que ela é exatamente igual à imagem original. Nesse caso, porém, deve ser feita a transmissão de todos os pixels da imagem. Algoritmos de compressão sem perda, normalmente, geram uma quantidade maior de dados a serem transmitidos. Algoritmos de compressão com perda provocam alguma mudança na imagem. O objetivo, porém, é fazer com que essa mudança não seja perceptível pelo usuário. Algoritmos de compressão com perda podem inserir diversos artefatos na imagem e não é fácil quantificar o desempenho desses algoritmos. Normalmente, essa avaliação é feita com algum critério subjetivo. Tais algoritmos ainda trazem um outro problema a ser tratado: a velocidade de compactação e descompactação. Para vídeo, esse é um problema fundamental, pois são milhares de imagens (quadros ou frames) que são compactados/descompactados. Se, para imagens, uma compactação/descompactação de 1 segundo é considerada rápida, para vídeos essa é uma taxa inaceitável. Uma taxa mais rápida está associada ao algoritmo utilizado e a como esse algoritmo é implementado (hardware ou software). Na maioria dos casos, hardware específico é necessário para conseguir implementar os algoritmos com a máxima eficiência. 2 Saída do compactador.
  • 266.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 266 Os algoritmos de compressão buscam reduzir a quantidade de elementos redundantes no arquivo. Em imagens de vídeo digital essa redundância pode ser encontrada de diferentes formas: • Algumas áreas do frame possuem a mesma cor que se espalha por mais de um pixel (redundância espacial); • Quando a cena ou parte dela contém predominantemente objetos orientados verticalmente existe grande probabilidade que duas linhas adjacentes sejam as mesmas (redundância espacial); • Imagens onde alguns pixels se repetem por diversos frames (redundância temporal). Algoritmos de compressão podem explorar essas características de redundância a fim de conseguirem uma melhor taxa de compressão. Outros elementos podem ser considerados pelo algoritmo de compressão. Por exemplo, quanto à resolução de cor, o sistema visual humano tem certas limitações quanto à percepção de cores. Não conseguimos diferenciar cores que estão muito próximas no espectro. Necessitamos de uma diferença 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 distância 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 compressão (observamos que essa mudança provoca perdas na imagem – mesmo elas não sendo perceptíveis, são mudanças na imagem original). As principais técnicas de compressão de vídeo são baseadas em:
  • 267.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 267 • Color Look-Up Table: o pixel na matriz da imagem corresponde na verdade a um índice para uma tabela que aloca as cores reais. • Codificação Run-length: já explicada anteriormente. • Técnicas de interpolação: compressão através de interpolação atua a nível de pixel e consiste de transmitir um subconjunto de pixels, usando técnicas de interpolação para reconstruir os pixels intermediários. Interpolação é sugerida para ser usada em sistemas baseados no modelo YIQ (como o NTSC) ou YUV (como o Pal). • Técnicas preditivas: técnicas de compressão preditivas são baseadas no fato que podemos armazenar um elemento anterior (como um frame, por exemplo) e usar essa informação para predizer qual o próximo elemento. o DPCM: a forma mais simples de compressão preditiva é chamada de PCM diferencial (ou DPCM, onde PCM = pulse code modulation). Em DPCM, pixels adjacentes são comparados e apenas a diferença entre eles é transmitida. Há uma grande probabilidade de alta compressão por esse método porque pixels adjacentes, em geral, têm cores muito próximas. Assim, espera-se uma diferença pequena que pode ser transmitida em uma quantidade menor de bits. Um problema de DPCM ocorre quando a diferença entre os pixels ultrapassa o limite de representação da quantidade de bits adotada pelo sistema. Por exemplo, suponha um sistema que use apenas 4 bits para armazenar/transmitir a diferença entre tons. Se há uma região de mudança de preto para branco, essa mudança não poderá acontecer entre pixels adjacentes, pois não haveria como representá-la. Seria necessário um certo número de pixels intermediários para conseguir a
  • 268.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 268 representação. Esse efeito é chamado de slope overload. Esse efeito pode provocar um embaçamento 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 necessária para armazenar a diferença entre os pixels. O uso de ADPCM pode provocar ruídos nas regiões de alta freqüência. • Técnicas de codificação por transformadas: uma transformada é uma técnica que converte um conjunto de dados de um domínio para outro mais apropriado para a aplicação. As transformadas, em geral, são reversíveis. Uma das transformadas mais utilizadas para compressão de imagem e vídeo é a Transformada Discreta do Cosseno (DCT). o DCT: A DCT é executada em blocos adjacentes de pixels (em geral, 8x8). Assim, 64 pixels por vez são processados pela DCT. A DCT é calculada como: onde Sendo a inversa calculada como: A DCT está relacionada com a DFT; a DFT, de fato, é um passo no cálculo da DCT para uma seqüência. A DCT, no entanto, tem
  • 269.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 269 propriedades de compactação de energia, com apenas uns poucos coeficientes da transformada representando a maior parte da energia da seqüência. Essas propriedades fazem a DCT bem apropriada para compressão de dados. Por causa dessa compressão, é possível reconstruir um sinal a partir de apenas alguns coeficientes da DCT. Apesar de serem relativamente fáceis de implementar em qualquer linguagem de computador, a compressão de imagens demanda um grande poder de processamento e por isso precisa ser otimizada ao máximo. O uso da DCT em imagens grandes, apesar de apresentar ótimos resultados, exige um processamento muito grande. Por isso na prática a estratégia 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 otimização: • Otimização 1: a imagem a ser tratada deve ser dividida em blocos menores facilitando a computação das transformadas. Outra justificativa para esta abordagem é que apesar de terem bastante correlação com os vizinhos próximos, existe pouca ou nenhuma correlação entre pontos distantes de uma mesma imagem. Os ganhos de processamento com esta abordagem suplantam em muito as perdas em termos de compressão. O cálculo das funções de cosseno, por ser uma função transcendental, também exige bastante poder de processamento. Se verificarmos a fórmula da transformada discreta de cosseno veremos que podemos pré-calcular todos os valores de cosseno a serem utilizados, e depois disto apenas realizar operações
  • 270.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 270 aritméticas de soma e multiplicação. Isso nos leva a segunda regra: • Otimização 2: os cossenos utilizados devem ser pré- calculados e armazenados, realizando-se assim apenas operações aritméticas ao se calcular a fórmula da transformada. Ao aplicar a transformada discreta de cosseno, os coeficientes mais significativos se acumulam no início do vetor (ou matriz) dos dados, ficando o restante com valores muito pequenos e carregando pouca informação. Este tipo de distribuição já é suficiente para que uma técnica de redução de redundância (como os algoritmos LZ77, LZ78 ou LZW) ou uma codificação otimizada (como codificação de Huffman ou codificação aritmética) produzam melhores resultados do que na imagem ou nos dados originais. Entretanto, por trabalharmos sempre com uma precisão finita nas representações numéricas utilizadas, acabamos por ter uma perda nos dados. Portanto, mesmo sem aplicar nenhuma forma de quantização, a compressão usando transformada discreta de cosseno é uma compressão com perdas. Entretanto, a forma mais comum e que gera melhores resultados, é a aplicação de uma operação de quantização nos dados gerados pela transformada, e armazenar apenas os dados quantizados. Essa quantização permite uma maior eficiência das técnicas de codificação e eliminação de redundância utilizadas. Algumas formas de quantização normalmente utilizadas com a transformada discreta de cosseno são: • Eliminação dos componentes menos significativos (determina-se um patamar de valor ou mesmo de posição
  • 271.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 271 na matriz de resultados da transformada, e elimina-se ou substitui-se esses valores por 0). • Divisão inteira dos valores por um coeficiente de quantização fixo (assim pode-se usar menos dígitos, ou bits, para se representar os valores). • Divisão inteira por uma matriz de coeficientes de quantização (Esta técnica é a empregada pela maioria dos padrões de compressão de dados, pois é mais flexível e permite que se ajuste a matriz a qualidade desejada da imagem). • Codificação estatística: como o código de Huffman ou a codificação aritmética. Dentre os formatos mais utilizados para compressão de áudio e vídeo, temos: • MPEG (Moving Picture Expert Groups) • DiVX Vamos detalhar cada um desses. MPEG Na década 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 padrões para o vídeo digital. Foram definidos três itens a serem desenvolvidos: 1. Vídeo 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);
  • 272.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 272 3. Imagens em movimento e áudio associados a uma taxa de 60 Mbps (mais tarde reduzido para 40 Mbps e então cancelado). MPEG 1 era orientado como imagem digital armazenada em Mídia de armazenagem digital (DSM - Digital Storage Media). MPEG-2 foi orientado como broadcast. MPEG-3 para televisão de alta-definição (HDTV). Enquanto os padrões se desenvolviam ficou claro que as técnicas empregadas nos padrões poderiam ser usados em qualquer bit-rate (quantidade de bits necessários para codificar um segundo de informação, seja esta vídeo, áudio ou ambos). Assim, os títulos dos que incluíam a taxa de transmissão 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 vídeo, áudio, ou qualquer outra informação para um serviço 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 vídeo 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 sincronização. 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 não se propaguem além das fronteiras de um único pacote. Geralmente, quanto maior o pacote, mais suscetível ele é aos erros de bit. Por outro lado, agrupando os bits em pacotes cria um maior tráfego para acomodar os cabeçalhos dos pacotes. Geralmente quanto menores os pacotes, maior o tráfego. Assim, existe um trade-off entre escolher o tamanho do pacote e sua resiliência e eficiência. Pode- se considerar, portanto, que formar pacotes é uma terceira função para os MPEG Systems.
  • 273.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 273 Na maioria dos casos, decodificadores necessitam de Informações Específicas 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 compõem um serviço de áudio e/ou vídeo. 3) Empacota os bits em grupos. 4) Provê informações específicas chamadas PSI. Nos MPEG-2 Systems, um programa é definido como o conjunto de Fluxos Elementares significativos, como áudio e vídeo, que têm a mesma base de tempo. Um arquivo MPEG é um arquivo digital contendo vídeo e áudio digitais codificados seguindo determinados padrões de compressão e armazenados em um dado formato específico. O comitê ISO especifica separadamente o tratamento de áudio e de vídeo, permitindo streams sem áudio, por exemplo. Um filme é uma seqüência de blocos. Cada bloco do filme contém seções individuais para o vídeo e para o áudio. A sincronização entre o vídeo e o áudio é feita através de marcadores de tempo que são fixados durante a codificação nos identificadores de blocos. O padrão MPEG especifica 3 tipos de quadros comprimidos no arquivo de saída. Nos quadros I (Intraframe) somente se aplicam algoritmos de redução de redundância espacial. Nos quadros P (Predicted) e B (Bidirectionally Predicted) também se aplicam algoritmos de redução de redundância temporal. No caso dos quadros B a predição de movimento é bidirecional, ou seja, é feita com quadros no passado e no futuro em relação ao quadro sendo codificado.
  • 274.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 274 Os quadros apresentam diferentes taxas de compressão, 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 redundância espacial. Quanto maior a compressão, maiores as perdas de qualidade sofridas nos quadros, por isso há a necessidade de intercalar quadros I de tempos em tempos para permitir a “restauração” da qualidade do sinal e também acesso aleatório aos quadros do filme (Fig. 10.1). Uma análise bilateral (observando frames passados e futuros) é importante para permitir que frames futuros sejam usados em uma predição mais correta. Tabela 10.1. Taxa de compressão de cada tipo de quadro no MPEG. Quadro Taxa de Compressão I 10-20:1 P 20-30:1 B 30-50:1 Fig. 10.1. Disposição dos quadros no formato MPEG. O padrão publicado pela ISO especifica o formato final do arquivo comprimido, deixando margem para que diferentes abordagens possam ser utilizadas, com diferentes compromissos entre compressão e complexidade computacional. Além disso, também fazem parte do padrão:
  • 275.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 275 • Uso da Transformada Discreta do Cosseno (DCT), seguida de Quantização e Run Length Encoding (RLE) para redução da redundância espacial de cada quadro do filme; • Uso de Motion Estimation e Motion Compensation (MEC) preditiva e interpolativa para redução de redundância temporal entre quadros e • Uso de Codificação de Huffman ao final do processo, gerando a compressão efetiva. A DCT faz uma transformação na imagem, mudando o domínio de representação da mesma. Este processo não introduz perdas de qualidade na imagem, sua utilização se dá porque ela permite uma representação mais compacta da imagem, facilitando a compressão. O uso da DCT faz com que as maiores frequências 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 conversão de uma imagem do formato RGB para o formato YCbCr (mais indicado para vídeo). Após a aplicação da DCT nesse bloco da imagem, temos como resultado a matriz apresentada na Fig. 10.2-direita. Fig. 10.2. Aplicação da DCT: (esquerda) região 8x8 da imagem em YCbCr e (direita) o resultado da aplicação da DCT nessa região.
  • 276.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 276 Após a aplicação da DCT, uma quantização é feita tomando uma matriz de quantização fixa (Fig. 10.3-esquerda). Cada valor da matriz gerada pela DCT é dividido pelo valor correspondente na máscara de quantização 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 quantização e (direita) resultado da quantização da matriz DCT da Fig. 10.2-direita. Observamos nessa matriz quantizada uma grande presença de valores zero. Assim, podemos agrupá-los, usando, por exemplo, uma codificação 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 aplicação da codificação Run- Length.
  • 277.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 277 Existem diferentes formas de se detectar movimento de objetos numa seqüência de imagens. O padrão MPEG adota algoritmos de MEC baseados em casamento de blocos. Este algoritmo consiste na procura de um bloco de tamanho fixo (16x16 pixels no padrão MPEG) de um quadro em uma janela de busca em um quadro seguinte (ou anterior). Esta janela pode ser de tamanho variável, mas o tamanho usual é de 30x30 pixels. A Fig. 10.5 mostra um exemplo de tal técnica. Fig. 10.5. Aplicação de Motion Estimation. O padrão MPEG usa uma variação da DCT chamada MDCT (Modified DCT): ∑ −=+++= − = 1 0 1 2 ,...,1,0)),12]( 2 12[ 2 cos( n k ki n ii n k n xS π E a sua inversa, conhecida como IMDCT é dada por: 1,...,1,0,))12]( 2 12[ 2 cos( 12/ 0 −=+++= ∑ − = nki n k n Sx n i ik π DivX O DivX é um codec de vídeo criado pela DivX, Inc. Ele foi produzido para ser usado em compactação de vídeo digital, deixando os vídeos com qualidade, apesar da alta compactação, utilizada para ocupar menos espaço no Disco rígido. Para alcançar tal compactação é necessário muito processamento, o que pode fazer com que um computador tecnologicamente defasado demore para
  • 278.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 278 realizar a operação ou tenha dificuldades para realizar a exibição. O DivX é compatível com Windows, Linux, Solaris e Mac OS X. Atualmente, os arquivos DivX estão amplamente presentes nas redes dos programas de P2P, devido ao seu reduzido tamanho e à ótima qualidade. O método de compactação DIVX funciona como um MP3 para vídeo. Mas, ao contrário do MP3, que apaga sons sobrepostos que nosso cérebro não conseguiria reconhecer, o DIVX torna repetitivas as imagens que não se modificam no decorrer dos frames (quadros) que formam o vídeo. Simplificando: tomando-se uma cena onde a câmera é estática e fundo não se modifica, o codec DIVX grava um único frame dessa imagem e repete-o até a imagem sofrer alguma alteração. Na mesma cena, caso haja uma pessoa andando, somente os pixels em que sua imagem se sobrepõe são modificados. O resto da cena pode ser considerado, grosseiramente, como uma foto estática ao fundo do vídeo. Desta forma, são guardados muito menos dados pelo vídeo 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 vídeo em formato não compactado para um em DivX é preciso comprar o DivX Codec que é o software responsável por esta tarefa, porém, se seu objetivo é apenas o de assistir os vídeos já compactados em DivX, é possível se fazer o download gratuito do tocador (player) no site oficial da DivX, Inc ou em quaisquer sites de downloads. 10.3.2 Codificação de Áudio Um dos primeiros sistemas desenvolvidos para compressão de áudio usa métodos parecidos com o algoritmo de run-length. A idéia da compressão usada em arquivos VOC é a redução dos chamados “blocos de silêncio”. A vantagem é a redução do tamanho a até um quarto do tamanho original. No entanto, como desvantagens têm a degradação no som, não é possível uma conversão para
  • 279.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 279 outro formato e só é aplicado a arquivos amostrados com baixas taxas. Blocos de silêncio são marcadores que contêm um valor de duração do tempo que representa a extensão do silêncio ou quase silêncio. Silêncio é definido como a amplitude da forma de onda que não ultrapassa a janela de silêncio. Uma extensão de silêncio menor que a janela é considerada muito curta para merecer a conversão para bloco de silêncio. Os Blocos de silêncio não existem na maioria dos formatos de arquivos de áudio. Outro problema é que pode haver uma confusão do silêncio com o início de um som (como um fricativo inaudível - /f/, /s/, /sh/) (Fig. 10.6). Fig. 10.6. Som fricativo inaudível que pode ser confundido com um silêncio por ter baixas amplitudes em parte dele.
  • 280.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 280 MP3 MP3 é uma abreviação de MPEG 1 Layer-3 (camada 3). Trata-se de um padrão de arquivos digitais de áudio estabelecido pelo Moving Picture Experts Group (MPEG), grupo de trabalho de especialistas de Tecnologias da Informação vinculado ao ISO e à CEI. As camadas referem-se ao esquema de compressão de áudio do MPEG-1. Foram projetadas em número de 3, cada uma com finalidades e capacidades diferentes. Enquanto a camada 1, que dá menor compressão, se destina a utilização em ambientes de áudio profissional (estúdios, emissoras de TV, etc) onde o nível de perda de qualidade deve ser mínimo devido à necessidade de pré-processamento, a 3 se destina ao áudio que será usado pelo cliente final. Como se espera que esse áudio não sofrerá novos ciclos de processamento, a compressão pode ser menos conservadora e aproveitar melhor as características psicoacústicas do som limitando-se apenas pela qualidade desejada para o ouvido humano. A compressão típica da camada 1 é de 2:1 enquanto a da 3 é de 10:1. É importante lembrar que essa diferença da compressão não tem nada a ver com uma camada ser mais avançado que o outro tecnologicamente, mas sim com o objetivo da aplicação 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 compressão tanto de áudio como de vídeo o MP3 responde apenas pela compressão de áudio do MPEG-1. As taxas de compressão alcançadas pelo MP3 chegam a até 12 vezes, dependendo da qualidade desejada. Para fazer isso o MP3 utiliza-se, além das técnicas habituais de compressão, de estudos de psico-acústica, sendo que estes permitem aproveitar-se das limitações e imperfeições da audição humana. A utilização dos limites da audição humana baseia-se em três princípios básicos:
  • 281.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 281 • Faixa de freqüência audível dos seres humanos; Faixa de freqüência audível humana: O ouvido humano, devido às suas limitações físicas, é capaz de detectar sons em uma faixa de freqüência que varia de 20 Hz a 20 KHz, sendo que estes valores podem variar de indivíduo para indivíduo e também com a idade (com o envelhecimento perdemos a capacidade de ouvir freqüências mais altas). Assim, não faz sentido armazenar dados referentes a sons fora desta faixa de freqüência, pois ao serem reproduzidos, os mesmos não serão percebidos por um ser humano. Esta é a primeira limitação da audição humana do qual o sistema MP3 faz uso para alcançar altas taxas de compressão. De acordo com o Teorema de Nyquist, para garantir a reprodução de um sinal, temos de amostrá-lo pelo menos a duas vezes sua freqüência máxima. Ou seja, neste caso, como a freqüência máxima de interesse é 20 KHz, basta amostrar a 40 KHz. Utiliza-se 44.100 Hz como taxa de amostragem, pois leva-se em consideração 10% de tolerância e busca-se um valor produto dos quatro primeiros números primos (Obs: (2x3x5x7)^2 = 44100). Dessa forma, esta taxa de amostragem funciona como um filtro passa-baixa, que remove todos os componentes de freqüência fora da faixa de interesse, neste caso, acima de 20 Khz. • Limiar de audição na faixa de freqüência audível; Limiar de audição na faixa de freqüência audível: Outro fator utilizado pela codificação MP3 é a curva de percepção da audição humana dentro da faixa de freqüências audíveis, ou Limiar de Audição. Apesar da faixa de audição humana variar entre 20Hz e 20KHz, a sensibilidade para sons dentro desta faixa não é uniforme. Ou seja, a percepção da intensidade de um som varia com a freqüência em que este se encontra. Assim, o MP3 utiliza-se desta propriedade para obter compressão em arquivos de áudios. Esta abordagem é bastante intuitiva, sendo que o que se faz é descartar amostras que se encontrem abaixo deste limiar.
  • 282.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 282 • Mascaramento em freqüência e mascaramento temporal. Mascaramento em freqüência e mascaramento temporal: Por fim, uma última propriedade da audição humana ainda é utilizada pelo método é o chamado mascaramento auditivo, ou “audiabilidade diminuída de um som devido à presença de outro”, podendo este ser em freqüência ou no tempo. O mascaramento em freqüência ocorre quando um som que normalmente poderia ser ouvido é mascarado por outro, de maior intensidade, que se encontra em uma freqüência próxima. Ou seja, o limiar de audição é modificado (aumentado) na região próxima à freqüência do som que causa a ocorrência do mascaramento, sendo que isto se deve à limitação da percepção de freqüências do ouvido humano. O mascaramento em freqüência depende da freqüência em que o sinal se encontra, podendo variar de 100 Hz a 4 KHz. Em função deste comportamento, o que o método de compressão do MP3 faz é identificar casos de mascaramento em freqüência e descartar sinais que não serão audíveis devido a este fenômeno. Além do mascaramento em freqüência, temos ainda o mascaramento no tempo, sendo que este ocorre quando um som forte é precedido por um mais fraco que se encontra em uma freqüência próxima à do primeiro. Se o intervalo de tempo entre os dois for suficientemente pequeno, este som mais fraco não será percebido pela audição humana. Se um som é mascarado após um som mais forte, temos o chamado pós-mascaramento. No caso de um som ser mascarado antes do som mais forte, temos o que chamamos de pré- mascaramento. O pré-mascaramento existe só por um curto momento, cerca de 20ms, enquanto que o pós-mascaramento tem efeito por até 200 ms. O método de compressão do MP3 utiliza-se, portanto, deste fenômeno, identificando casos onde o mesmo ocorre e descartando sons que seriam mascarados, o que permite reduzir a informação de áudio consideravelmente sem mudança audível.
  • 283.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 283 A Thomson Consumer Electronics controla o licenciamento da patente do MPEG-1/2 Layer 3 nos poucos países que reconhecem patentes de software, tais como Estados Unidos da América e Japão. Em setembro de 1998, o Instituto Fraunhofer enviou um comunicado a diversos desenvolvedores de programas MP3, exigindo cobrança de royalties por essa patente. O comunicado informava que o licenciamento era necessário para "distribuir e/ou vender decodificadores e/ou codificadores", e que os produtos não licenciados infringiam os "direitos sobre a patente do Instituto Fraunhofer e da Thomson. Para produzir, vender e/ou distribuir produtos que se utilizem do padrão MPEG-1/2 Audio Layer 3 e, portanto, de suas respectivas patentes, é necessário obter uma licença". O sistema empregado pelo MP3 também possibilita transmissões por streaming, onde o arquivo pode ser interpretado na medida em que é feito o download ou em que é baixado (não é necessário que o arquivo chegue inteiro para iniciar a reprodução). 10.4 Implementações no MatLab 10.4.1 Processamento de Vídeo no MatLab O MatLab tem algumas funções para processamento de vídeo, trabalhando mais facilmnte com arquivos do tipo AVI (Audio Vídeo Interleave), aceitando alguns CODECs (codificadores/decodificadores) mais conhecidos como o XViD. É possível abrir arquivos MPEG também. Funções de Video file import/export: • aviread – Lê arquivo de vídeo (AVI) • aviinfo - Retorna informação sobre o arquivo AVI • avifile - Cria um novo arquivo AVI • mmreader – Lê frames de vídeo de um arquivo multimídia (como MPEG)
  • 284.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 284 • mmfileinfo - Retorna informação sobre o arquivo multimídia • movie2avi – Cria filme AVI a partir de um filme MATLAB (.mov – não do Quicktime) Exemplo: >> info = aviinfo('video1.avi') info = Filename: 'D:MATLABR2008bworkvideo1.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 informações: >> info.NumFrames ans = 13 >> h = info.Height; >> w = info.Width; A leitura do arquivo de vídeo é feita pelo comando aviread (arquivo AVI): >> mov = aviread('video1.avi'); É possível acessar um frame específico do arquivo de vídeo:
  • 285.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 285 >> mov = aviread('video1.avi', 3); No caso, o 3º frame está sendo lido. Mas o arquivo de saída continua sendo um arquivo de vídeo: >> whos Name Size Bytes Class Attributes mov 1x1 230648 struct Observe que a saída 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 exibição do vídeo podemos usar o comando movie: >> movie(mov, repetições, info.FramesPerSecond); O parâmetro repetições indica quantas vezes o vídeo será repetido. A conversão de imagens para frame é feita com o comando im2frame: >> mov1(i) = im2frame(imagem, map);
  • 286.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 286 Isso faz com que imagem seja inserida como frame i do arquivo de vídeo mov1 com mapa de cores especificado em map. Variando i criamos o arquivo de vídeo a partir de diversas imagens. O MatLab permite também o processamento de vídeo usando o módulo Simulink. As funções (para imagem e vídeo) podem ser acessadas através do munu Vídeo and Image Processing Blockset conforme a Fig. 10.7. Fig. 10.7. Acesso aos blocos de processamento de imagem e vídeo pelo Simulink. As possíveis entradas para o sistema são acessadas pelo item sources enquanto as saídas podem ser geradas pelos blocos sinks (Fig. 10.8).
  • 287.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 287 Fig. 10.8. Entrada e saída de dados multimídia via Simulink. A Fig. 10.9 apresenta um esquema simples com um vídeo exemplo do MatLab inserido e apresentado. Para executar a simulação, basta clicar em Simulation- >Start (tecla de atalho: CTRL+T).
  • 288.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 288 Fig. 10.10. Sequência de blocos do Simulink para apresentar um vídeo. Outros blocos podem ser colocados entre a entrada e saída para gerar processamento do vídeo como na Fig. 10.11 (uma rotação) e na Fig. 10.12 (uma transformação geométrica). Fig. 10.11. Execução de uma rotação em um vídeo
  • 289.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 289 Fig. 10.12. Execução de uma transformação geométrica em um vídeo 10.4.2 Processamento de Áudio no MatLab Um som pode ser gravado com a função wavrecord que gera um arquivo do tipo wav: >> som = wavrecord (16000, 8000, 1, ‘double’); Esse comando grava 16000 amostras com uma taxa de amostragem de 8 kHz e o armazena no vetor som do tipo double. O parâmetro ‘1’ indica que a gravação é feita em apenas um canal (mono) e não em estéreo. Para tocar o som, basta usar o comando soundsc: >> soundsc (som); Às vezes, é importante informar a frequência de amostragem: >> soundsc (som, 8000); O arquivo de som pode ser plotado em um gráfico como um vetor comum:
  • 290.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 290 >> plot (som); É comum precisarmos trabalhar com o arquivo de som normalizado. Para tanto, usamos: >> som = som/max(abs(som)); Isso não 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 frequência de amostragem do sinal é salva na variável fs. O comando wavread não permite que o parâmetro de entrada seja uma variável 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 através de filtros como o processamento de sinais, usando a função filter: >> y = filter (b, a, som); onde a e b são os coeficientes do filtro a ser aplicado (para filtros FIR, a = 1).
  • 291.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 291 Exemplo 1: >> som = wavread(‘a_casa.wav’); >> plot (som); Calculando a transformada de Fourier: >> som_spec = fft (som, 256); >> plot (abs(som_spec)); Um gráfico em formato mais padrão pode ser obtido com as baixas freqüências centralizadas: >> plot (abs(fftshift(som_spec)));
  • 292.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 292 Suponha um filtro IIR com função de transferência: 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 serão 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:
  • 293.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 293 Fig. 10.13. (coluna da esquerda) Sinal original e sua transformada e (coluna da direita) sinal filtrado e sua transformada. 
  • 294.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 294 Exemplo 2: Como um exemplo da dificuldade de analisar um sinal que muda constantemente, vamos construir um sinal “ágil na frequência” (um que muda rapidamente suas características de frequência): >> 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 gráfico representa mesmo o sinal que criamos? Vamos observar melhor o sinal quebrando ele em janelas e plotando-as como uma “queda d’água” (waterfall) para ver como as freqüências mudam pelo tempo. >> s = spectrogram(z, 1024); >> waterfall(abs(s)');
  • 295.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 295 A plotagem em “queda d’água” mostra cerca de 30 pedaços no tempo, cada um correspondendo a uma FFT-512 e indicando claramente que diferentes componentes de frequência estão presentes durante cada período de tempo. Veja o resultado para diferentes FFTs de N-Pontos: >> s = spectrogram(z, 256); >> waterfall(abs(s)');
  • 296.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 296 >> s = spectrogram(z, 8192); >> figure, waterfall(abs(s)');
  • 297.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 297 Exemplo 3: Criando música no MatLab: Primeiro, vamos crier uma onda senoidal de amplitude A = 1, com uma frequência de 523,25 Hz (correspondente a um pitch C em um piano; uma oitava acima do C médio): cnote = sin(2*pi*523.25*(0:0.000125:0.5)); Esse vetor cnote contém amostras da onda senoidal de t = 0s a t = 0.5s, as amostras são separadas de 0.000125s (que é o intervalo de amostragem Ts). Note que esse intervalo de amostragem corresponde à frequência 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 frequência de diferentes notas (apresentadas na tabela a seguir): http://www.dolmetsch.com/musictheory27.htm.
  • 298.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 298 Usando essa informação, podemos criar diferentes notas no MatLab. Observe que existem diferentes oitavas da mesma forma que existem diferentes teclas em um piano. Aqui estão 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 música faça: 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 música use: song = [line1, line2]; e toque com sound() ou soundsc().
  • 299.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 299 10.5 Exercícios 1. Implemente no MatLab o Código de Huffman e aplique-o para compressão do arquivo de voz sentence.wav. 2. Como podemos avaliar a qualidade de um algoritmo de compressão para imagens estáticas ou dinâmicas (vídeos)? 3. No mesmo arquivo de voz, implemente a técnica DPCM e apresente qual a maior diferença entre tons adjacentes que ela possui. Nesse caso, você acha que o algoritmo seria eficiente para compressão ou não? 4. No MatLab, capture dois frames próximos do arquivo vipmen.avi e calcule com PSNR a diferença entre os frames. 5. Usando o MatLab (funções dct2.m e idct2.m), calcule através do uso do PSNR a perda provocada pelo uso da DCT na imagem lena.bmp. 6. Cite os princípios básicos de funcionamento da compressão MP3, definidos pela psicoacústica. 
  • 300.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 300 10.6 Bibliografia Complementar 1. A.C.Bovik, The Essential Guide to Video Processing, Academic Press, 2009. 2. C.Wootton,A Practical Guide to Video and Audio Compression, Focal Press, 2005. 3. D.Hankersson ,Introduction to Information Theory and Data Compression, CRC Press, 2003.
  • 301.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 301 11. Processamento de Voz O som é uma vibração que propaga pelas moléculas do ar até nossos ouvidos. De uma forma geral, os sons são variações na pressão do ar ao longo do tempo em freqüências que podemos ouvir. A voz é um tipo específico de som. Logo, um som pode ser uma voz ou não. A voz consiste de um conjunto de sons que podem ser gerados pelo ser humano. O sinal de voz pode ser plotado (Fig.11.1) como uma forma de onda na qual podemos observar valores positivos e negativos. Isso acontece porque a radiação de voz da boca faz com que a pressão do ar seja temporariamente maior ou menor que a pressão do ar do ambiente. Fig. 11.1. Exemplo de plotagem de um sinal de voz. O propósito primário da voz é comunicação. De acordo com a Teoria da Informação conforme definida por Claude Shannon [Shannon, 1945], a voz pode ser representada em termos de conteúdo ou informação. Outra maneira de caracterizar o sinal de voz é como sendo uma onda acústica que carrega a informação. Para o processamento de voz, o mais comum é entendermos o sinal de voz como sendo uma onda ou algum modelo paramétrico como discutiremos posteriormente. A Informação gerada no cérebro é convertida em um conjunto de sinais neurais os quais controlam o mecanismo articulatório (movimentos da língua, lábios, cordas vocais, etc). As articulações movem-se em resposta a estes sinais neurais para desempenhar uma seqüência de gestos os quais resultam em uma forma de onda acústica que contém a informação da mensagem original.
  • 302.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 302 A informação que é comunicada através do sinal de voz é intrinsicamente discreta, ou seja, pode ser representada como uma concatenação de um conjunto finito de símbolos – fonemas. Um fonema é uma unidade de voz, o conjunto que define todos os sons dos quais palavras podem ser construídas em uma linguagem particular: as línguas possuem cerca de 30 a 50 fonemas distintos (por exemplo, o inglês possui 42 fonemas). Assim, um código de 6 bits pode representar todos os fonemas. Na fala usamos cerca de 10 fonemas por segundo o que leva a uma taxa média de informação de 60 bits/seg. Ou seja, o equivalente escrito da voz contém informação 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 conteúdo. O interesse em qualquer sistema é: - Preservação do conteúdo da mensagem no sinal de voz; - Representação do sinal de voz em uma forma que seja conveniente para transmissão ou armazenamento ou numa forma flexível tal que modificações possam ser feitas sem degradar o conteúdo 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 informação, ou seja, de onde a voz é gerada. Essa informação é convertida para algum meio observável (a forma de onda) o qual é pode sofrer diferentes representações (como a mudança para o domínio da freqüência) e transformações. Por fim, o sinal transformado é utilizado novamente pelo homem ou por algum dispositivo.
  • 303.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 303 Fig. 11.2. Visão geral da manipulação e processamento da informação. O processamento do Sinal de Voz é o veículo para obtenção de uma representação geral do sinal tanto como forma de onda ou na forma paramétrica Ele serve como função auxiliar no processo de transformar a representação do sinal em formas alternativas que sejam mais gerais em natureza, mas mais apropriadas para aplicações específicas. O processamento digital de sinais (PDS) tem interesse na obtenção de representações discretas dos sinais e no design e implementação de procedimentos numéricos para processar essa representação. As técnicas digitais surgiram, primeiramente, para simular sistemas analógicos. Em meados da década de 60, PDS tornou-se viável devido à criação de processadores mais rápidos e a avanços teóricos quanto ao tema. Há diversas vantagens dos sistemas digitais para os analógicos: - Sistemas digitais são mais confiáveis; - Grande capacidade de integração, podendo ser implementados em um único chip;
  • 304.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 304 - Baixo custo; - Permitem comunicação em canais ruidosos; - Maior segurança de informação (permite inclusão de elementos de criptografia). O propósito do processamento digital pode ser: • Saber se determinado sinal corresponde a um sinal de voz ou não • Classificar uma seção de um sinal de voz como: o voz audível (voiced speech) o voz inaudível (unvoiced speech) o silêncio ou ruído de fundo • Redução de ruído Para redução de ruído, 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 expressão “a casa” com um ruído de fundo. Esse sinal pode ser filtrado com a redução do ruído através do uso de uma janela de Hanning conforme o código: [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)));
  • 305.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 305 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 aplicação do filtro no domínio da frequência, sendo esse o sinal original: e esse o sinal filtrado:
  • 306.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 306 Considerando a aplicação de técnicas de processamento digital de sinais a problemas de comunicação por voz, é interessante observar três aspectos principais: a representação do sinal de voz na forma digital, a implementação das técnicas de processamento e a classe de aplicações. A representação do sinal de voz na forma discreta é, claro, de fundamental importância para todo o processo. Essa conversão é 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 aplicações do processamento digital da voz. Existem muitas formas de representar um sinal de voz. Essas representações podem ser classificadas em dois grandes grupos (Fig. 11.3): representações em forma de onda e representações paramétricas. A representação em forma de onda está preocupada com a preservação da forma de onda do sinal analógico através de um processo de amostragem e quantização. Já a representação paramétrica está preocupada com a representação do sinal de voz como a saída de um modelo para produção de voz. A obtenção de uma representação paramétrica, em geral, começa com a forma de onda (ou seja, o sinal amostrado e quantizado). A seguir, o sinal é tratado para obtenção dos parâmetros necessários para sua representação. Esses parâmetros são classificados em parâmetros de excitação (relativos à fonte da voz) e parâmetros do trato vocal (relativos a sons de voz individuais).
  • 307.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 307 Fig. 11.3. Representações do sinal de voz. Existem diversas aplicações relacionadas com processamento do sinal de voz. A Fig. 11.4 exemplifica algumas delas. A transmissão e o armazenamento digital relacionam-se com técnicas de compressão do sinal de voz. A produção de voz humana para, por exemplo, leitura de textos é a preocupação em métodos de síntese de voz, onde os maiores problemas estão relacionados com a criação automática de elementos como entonação da voz e a produção de um texto que soe natural ao nosso sistema auditivo. O reconhecimento de interlocutor pode estar associado a questões de segurança; onde um dado sistema só se torna acessível se padrões 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 eliminação de ruído ou eco como um pré- processamento para quaisquer das aplicações anteriores. Muitas dessas aplicações são naturalmente indicadas para ajudar pessoas com necessidades especiais como deficientes visuais.
  • 308.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 308 Fig. 11.4. Aplicações relacionadas com processamento de voz. 11.1 Amostragem e Quantização Dada a relação direta entre processamento de voz e processamento de sinais, vamos fazer uma breve revisão de alguns conceitos básicos de processamento de sinais. Um sinal é geralmente representado por um padrão que varia no tempo. A voz produzida pelo ser humano é desta natureza: x(t). É possível representar um sinal como uma seqüência de números: x(n). Esta seqüência pode ser vista como uma seqüência de amostras de um sinal analógico feitas com período de amostragem T: xa(nT). A Fig. 11.5 ilustra essa representação. Fig. 11.5. Representação de um sinal de voz na forma de onda e amostrado.
  • 309.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 309 As funções básicas para o processamento digital de sinais são o impulso e o degrau unitário. Elas podem ser definidas como: Impulso: δ(n) = 1, para n = 0, e δ(n) = 0, caso contrário Degrau Unitário: u(n) = 1, para n ≥ 0, u(n) = 0, caso contrário No caso, podemos afirmar que: δ(n) = u(n) - u(n – 1) É através da função impulso que podemos representar as amostras de um sinal digitalizado (Fig. 11.6). Fig. 11.6. Seqüência de impulsos representando uma função exponencial discreta. A discretização do sinal é um passo fundamental para que o processamento posterior aconteça de forma adequada. A Fig. 11.7 ilustra os possíveis resultados da discretização de uma função com diferentes taxas de amostragem, resultando em um sinal de boa ou de má qualidade.
  • 310.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 310 a) b) Fig. 11.7. a) Sinal amostrado com uma taxa apropriada para sua recuperação e b) o mesmo sinal amostrado de forma incorreta (baixa taxa de amostragem) tornando impossível uma recuperação fiel ao original. Além da amostragem, o sinal de voz passa por outro processo para ser digitalizado: a quantização. Na Fig. 11.8, podemos ver o sinal de entrada contínuo, sendo inserido em um amostrador que cuida da discretização do sinal no tempo. O quantizador é responsável então pela discretização do sinal em amplitude. Fig. 11.8. Amostragem e quantização, gerando o sinal discreto final. Se um sinal analógico for banda limitado e amostrado na taxa de Nyquist pode- se reconstruir o sinal original. O sinal de voz não é banda limitado, embora o espectro tenda a cair rapidamente para freqüências mais altas. Uma representação fiel da voz exige uma taxa de amostragem de, pelo menos, 20 kHz. As freqüências que mais contribuem para o sinal de voz estão abaixo de 3,5 kHz. É por isso que há uma certa dificuldade em reconhecer uma voz ao
  • 311.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 311 telefone. Se passarmos o sinal de voz por um filtro passa-baixa, podemos, para a maioria das aplicações, utilizar uma taxa de Nyquist de 8 kHz. É conveniente separar os processos de amostragem e quantização. Na prática é geralmente impossível distinguir entre eles. Números binários são usados para representarmos os níveis de quantização. Podemos representar a quantização 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 não houve erros na transmissão, o sinal recebido c’(n) deverá ser igual a c(n). Fig. 11.9. Processo de quantização, codificação e envio do sinal. Na transmissão, o sinal é decodificado. Se a transmissão foi sem erro, c(n) = c’(n). A quantização pode ser: a) Quantização Instanânea; b) Quantização Uniforme; c) Companding Instanâneo; d) Quantização Adaptativa. Na quantização instantânea as amplitudes das amostras são quantizadas dividindo-se a amplitude em um conjunto finito de pequenas variações de amplitude. Dá-se o mesmo valor a todas as amostras dentro de um mesmo
  • 312.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 312 patamar de amplitude. Para uma representação em 3 bits há 8 possíveis rótulos (Fig. 11.10) e conseqüentemente o número de diferentes seqüências de rotulação é o fatorial de 8. Fig. 11.10. Quantização instantânea com 3 bits. Q quantização uniforme exige uma mesma distância entre xi e xi-1. Existem duas classes de quantizadores uniformes: mid-riser e mid-tread. No mid-riser, a origem aparece no ponto médio da parte crescente de uma função escada. O quantizador mid-riser é conveniente quando temos o número de níveis uma potência de 2. O mid-riser possui o mesmo número de níveis positivos e negativos que estão simetricamente posicionados em relação à origem. O quantizador mid-tread possui um nível negativo a mais que positivo. O quantizador mid-tread possui o zero (000) no meio da escala o que é útil em diversas aplicações. O quantizador mid-riser não possui o nível zero. Pode-se ter desde a codificação direta a escolhas que tentem manter equilibrada a potência utilizada entre os bits da amostra em relação a origem, etc. A Fig. 11.11 apresenta esses dois quantizadores para uma quantização de 3 bits como na Fig. 11.11.
  • 313.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 313 a) b) Fig. 11.11. Quantizadores de 3 bits: a) mid-riser e b) mid-tread.
  • 314.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 314 Companding é uma expressão que significa compress + expand. Para tornar a porcentagem de erro constante os níveis de quantização devem ser espaçados logaritmicamente. Para tanto, o logaritmo da entrada é quantizado ao invés da própria entrada: y(n) = ln|x(n)| Cujo inverso é: x(n) = exp[y(n)]sgn[x(n)] Dessa maneira, pode-se mostrar que o nível sinal-ruído é independente da variância do sinal. Problemas acontecem com pequenas amplitudes (x[n] ≈ 0). A Fig. 11.12 apresenta em diagrama de blocos como se desenvolve a codificação e a decodificação do sinal. Fig. 11.12. Representação da técnica de companding. O problema da quantização é quanto a quantidade de degraus. Desejamos fazer essa quantidade suficientemente grande para termos uma varredura pico-a-pico do sinal. Mas isso implica mais níveis de quantização. Porém, mais níveis de quantização implica em uma cpdificação com mais bits o que implica em maior tempo de processamento/espaço de armazenamento; o que não é interessante. Esse é o grande dilema.
  • 315.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 315 Uma solução está em utilizar um quantizador não-uniforme. Alternativamente, pode-se adaptar as propriedades do quantizador aos níveis do sinal de entrada. O tamanho do degrau ∆ varia casadamente com a variância do sinal de entrada. A Fig. 11.13 apresenta o comportamento de um tal quantizador. Fig. 11.13. Quantização adaptativa. 11.2 Técnicas Temporais para Processamento de Voz Técnicas temporais para processamento de voz envolvem a forma de onda do sinal diretamente (em contraste com métodos do domínio da freqüência). São simples de implementar e ricas em informação. As técnicas mais difundidas são: a) Taxa de passagem pelo Zero (zero-crossing rate); b) Energia do Sinal; c) Magnitude do Sinal; d) Auto-Correlação.
  • 316.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 316 As propriedades do sinal de voz variam com o tempo: a excitação muda entre a voz audível e não audível; a amplitude do sinal varia; há uma variação significativa da freqüência fundamental para a voz audível. Essas propriedades são nitidamente observáveis na forma de onda. Por isso, os métodos podem ser aplicados no domínio do tempo, diferente de outros tipos de sinais que são preferivelmente tratados no domínio da freqüência. A maioria dos sistemas de processamento de voz assume que as propriedades da fala mudam relativamente devagar com o tempo. Afinal, não há variações bruscas num fonema ou entre fonemas. Assim, podem-se utilizar métodos de processamento em tempo curto (short-time), nos quais analisam-se amostras de curta duração do sinal. Cada segmento curto de voz é visto como um som estável com propriedades fixas. Às vezes, esses segmentos se sobrepõem. Essas amostras de curta duração são geralmente chamadas de moldura de análise (analysis frames). O resultado da análise de uma moldura pode ser um número ou um conjunto de números. A seqüência gerada pode ser tomada como uma nova representação no tempo do sinal original. É geralmente assumido que o sinal de voz foi limitado em faixa e que foi amostrado em taxa não inferior a taxa de Nyquist (pelo menos 8.000 amostras/segundo). É também considerado que o sinal foi quantizado e que o erro de quantização é desprezível. A maioria das técnicas de processamento em tempo curto pode ser representada pela equação: ∑ ∞ −∞= −= m n mnwmxTQ )()]([ (Eq. 11.1) o sinal de voz, x(.), é submetido a transformação T[ ], linear ou não, a qual pode depender de um conjunto ajustável de parâmetros.
  • 317.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 317 Observando a Eq. 11.1, podemos vê-la como uma operação de convolução da transformação do sinal de entrada x() por uma função w. Aqui, podemos entender w como uma seqüência 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 duração finita, mas pode ser infinita. Fig. 11.14. Processamento de um sinal de voz em uma janela w. 11.2.1 Energia de Curta Duração Das técnicas temporais para processamento de voz a mais simples é a Energia de Curta-Duração. A amplitude do sinal de voz varia apreciavelmente com o tempo. A voz audível apresenta amplitude maior que a voz inaudível ou o silêncio (ruído de fundo), assim, a energia de curta duração de um sinal provê uma representação conveniente que reflete as variações de amplitude. A energia de um sinal discreto no tempo pode ser definida como: ∑ ∞ −∞= = m mxE )(2 Em relação à equação de Qn (Eq. 11.1), temos: T[ ] = quadrado w(n) = 1, 0 ≤ n ≤ N – 1 e 0, caso contrário. A energia de tempo curto de um sinal de voz pode ser definida como:
  • 318.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 318 ∑ ∞ −∞= −= m n mnwmxE 2 )]().([ que pode ser re-escrita como: ∑ ∞ −∞= −= m n mnhmxE )(.)( 2 com h(n) = w2 (n). Observamos que En é um número e não uma função. 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 relação ao tempo. Essa janela seria equivalente a um filtro de passa-baixa de banda (muito) estreita. Uma janela estreita demais não consegue produzir uma função suave de energia. Se a janela for muito estreita, não proverá medições suficientes para produzir uma função de energia suave. Se a janela for da ordem de vários picos do sinal, En não vai refletir as variações do sinal. Esse conflito é de grande importância na representação 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 criança; b) 250 amostras para uma voz grave de homem. Na prática, para uma freqüência 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 significância de En está em conseguir distinguir entre segmentos com voz audível e voz inaudível. Os valores de En são significativamente maiores para sinais audíveis. En pode ser usada para determinar o tempo onde um sinal audível torna-se inaudível e vice-versa; se o sinal for de boa qualidade pode-se distinguir a voz do silêncio.
  • 319.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 319 11.2.2 Magnitude de Curta Duração Outra técnica de processamento em tempo curto é a Magnitude de Curta Duração. O cálculo da energia é muito sensível a níveis altos de sinal (devido à potenciação na computação de En). Uma maneira de aliviar este problema é utilizar-se uma função de magnitude média: ∑ ∞ −∞= −= m n mnwmxM )(|)(| Essa função é de aritmética mais simples que a energia, porém tem menor capacidade de diferenciação entre voz audível e inaudível. Tanto para a Energia quanto para a Magnitude de Curta Duração para uma janela de 20ms uma taxa de amostragem de 100 amostras/seg. é adequada. A janela não precisa ser restrita a qualquer função comumente utilizada como filtro. Ela também não precisa ser retangular; é necessário apenas que o filtro seja suave e passa-baixa. Pode ser um filtro FIR ou IIR; sugere-se FIR, pois a saída é mais fácil de ser computada a uma baixa taxa de amostragem. A janela não precisa ter dimensão finita; basta que a Transformada-Z seja uma função racional. Por exemplo, se: h(n) = an , n ≥ 0 = 0 , n < 0 ou seja, h(n) = an u(n) Um valor de 0 < a < 1 dá uma janela cuja duração 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:
  • 320.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 320 1 1 1 )( − − = az zH , 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. 11.2.3. Taxa de Passagem pelo Zero Diz-se que houve uma passagem pelo zero quando duas amostras sucessivas possuem sinais diferentes. A taxa com que há a passagem pelo zero é apenas uma medida do conteúdo de freqüência do sinal. Este fato é particularmente verdadeiro para sinais faixa-estreita. Esse conceito define a técnica de processamento de Passagem pelo Zero em Tempo Curto. Um sinal senoidal de freqüência F0, amostrado numa taxa Fs, possui Fs/F0 amostras por ciclo de senóide. Cada ciclo possui duas passagens pelo zero (Fig. 11.16), ou seja, a taxa média de passagens pelo zero é: Z = 2.F0/Fs passagens/amostra
  • 321.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 321 Fig. 11.16. Uma senóide tem duas passagens pelo zero em um ciclo. Os sinais de voz são sinais faixa-larga e, portanto, a interpretação da taxa média de passagem pelo zero é menos precisa. Estimativas grosseiras das propriedades espectrais podem ser obtidas baseadas na taxa de passagem pelo zero média em tempo curto. Pode-se definir: ∑ ∞ −∞= −−−= m n mnwmxmxz )(|)]1(sgn[)](sgn[| onde sgn[x(m)] = 1, se x(n) ≥ 0 = -1, se x(n) < 0 e w(n) = 1/(2N), para 0 ≤ n ≤ N-1 = 0, caso contrário O modelo para a produção 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 não audíveis é de alta-freqüência: altas freqüências implicam uma taxa alta de passagem pelo zero e baixas freqüências implicam numa taxa baixa de passagem pelo zero. Assim, há uma correlação forte entre taxa de passagem
  • 322.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 322 pelo zero e a distribuição de energia com a freqüência: se a taxa de passagem pelo zero é alta, o sinal é inaudível; do contrário, o sinal é audível. A taxa média de passagem pelo zero em tempo curto é de: i) 49 vezes por 10 ms para sinais não-audíveis. ii) 14 vezes por 10 ms para sinais audíveis. Há uma sobreposição das distribuições de sinais audíveis e não-audíveis de forma que esta divisão não pode ser tomada somente com a informação da taxa de passagem pelo zero. Isso dificulta a decisão entre voz audível e inaudível. A taxa de passagem pelo zero é fortemente afetada por: a) sinal de rede elétrica; b) qualquer ruído no processo de digitalização. Cuidado extremo deve ser tomado no processo analógico antes da digitalização; é preferível utilizar-se um filtro passa-faixa ao invés de passa-baixa. Para eliminar a freqüência de 60 Hz da rede elétrica que pode corromper o sinal original. O problema de ruído de fundo é de grande importância no reconhecimento de voz. É essencial saber onde cada palavra inicia e termina. A separação Voz/Silêncio não é simples exceto no caso de gravações de alta-fidelidade em câmaras de gravação. Em gravações com alta relação sinal/ruído os sons da voz de menor intensidade são mais fortes que o ruído de fundo. 11.2.4. Função de Autocorrelação A última técnica de processamento de sinal de voz é a Função de Autocorrelação de Tempo Curto. A autocorrelação de um sinal determinístico discreto no tempo é dada por: ∑ ∞ −∞= +=Φ m kmxmxk )()()(
  • 323.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 323 A representação em função de autocorrelação de um sinal é um modo conveniente de apresentar algumas propriedades do sinal. Por exemplo, se o sinal é periódico com período de P amostras, então: φ(k) = φ(k+P) Ou seja, a autocorrelação de uma função periódica também é periódica com o mesmo período. Outras propriedades importantes da função de autocorrelação são: 1) Ela é uma função par: φ(k) = φ(-k); 2) Ela alcança seu valor máximo quando k = 0; i.e.; |φ(k)|≤0, para todo k; 3) O valor de φ(0) é igual à Energia para sinais determinísticos ou à potência média para sinais periódicos. A função de autocorrelação para tempo curto é definida como: ∑ ∞ −∞= −−+−= m n mknwkmxmnwmxkR )()()()()( Ou seja, primeiro, um segmento de voz é selecionado pelo produto com a janela; em seguida, a autocorrelação é aplicada ao segmento de voz sob a janela. A técnica de autocorrelação pode ser usada para estimativa do pitch (frequência fundamental) de um sinal de voz. O seguinte código do MatLab pode ser usado para estimar a frequência fundamental de um sinal usando a função de autocorrelação: [x,fs]=wavread('casa1.wav'); ms20=fs/50; % minimum speech Fx at 50Hz % % plot waveform t=(0:length(x)-1)/fs; % times of sampling instants subplot(2,1,1); plot(t,x); legend('Waveform');
  • 324.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 324 xlabel('Time (s)'); ylabel('Amplitude'); % % calculate autocorrelation r=xcorr(x,ms20,'coeff'); % % plot autocorrelation d=(-ms20:ms20)/fs; % times of delays subplot(2,1,2); plot(d,r); legend('Autocorrelation'); xlabel('Delay (s)'); ylabel('Correlation coeff.'); % Estimativa da frequencia fundamental ms2=fs/1000; % maximum speech Fx at 1000Hz ms20=fs/50; % minimum speech Fx at 50Hz % 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=%gHzn',rmax,fs/(ms2+tx-1)); Podemos ver a aplicação desse código no sinal de voz correspondente ao som “a casa”. Nesse caso, a frequência fundametal estimada é: Fx=512.195Hz
  • 325.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 325 11.3 Análise Cepstral O nome “cepstrum” vem do inverso da primeira metade da palavra “spectrum” (espectro) e plota a amplitude de um sinal versus sua “quefrência” (que seria o inverso da frequência). Essa técnica é útil para separar componentes de um sinal complexo formado por diversos simultâneos, mas diferentes elementos combinados. O cepstrum é gerado pela transformada de Fourier de logaritmo da transformada de Fourier. São duas transformadas de Fourier calculadas, mas, de fato, na prática, a segunda transformada pode ser a transformada inversa. A utilidade da análise do cepstrum deriva do fato que ele corresponde à transformada inversa de Fourier do logaritmo da transformada de Fourier. Isso significa que os componentes de frequência foram ordenados logaritmicamente. Na matemática, um dos princípios do logaritmo é que, se alguma expressão é a combinação multiplicativa de dois elementos, então, no domínio logarítmico,
  • 326.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 326 esses elementos são combinados aditivamente. Colocando de outra forma, se o sinal sob análise y(t) é igual a h(t) vezes x(t): y(t) = h(t).x(t) então: log[y(t)) = log[h(t)] + log[x(t)] No domínio do processamento digital de voz, x(t) pode ser o pitch enquanto h(t) é o componente do trato vocal. A quefrência é uma medida de tempo, embora não no sentido de um sinal no domínio do tempo. Por exemplo, se a taxa de amostragem de um sinal de áudio é 44100 Hz e existe um pico no gráfico do cepstrum cuja quefrência é 100 amostras, o pico indica a presença de um pitch que é 44100/100 = 441 Hz. Esse pico ocorre no cepstrum porque os harmônicos no espectro são periódicos e o período corresponde ao pitch. O código de MatLab abaixo estima a frequência fundamental do arquivo ‘casa1.wav’: [x,fs]=wavread('casa1.wav'); ms1=fs/1000; % máxima frequência de voz Fx em 1000Hz ms20=fs/50; % mínima frequência de voz Fx em 50Hz % % plotagem da forma de onda t=(0:length(x)-1)/fs; subplot(3,1,1); plot(t,x); legend('Waveform'); xlabel('Time (s)'); ylabel('Amplitude'); Y = fft(x); % plotagem do espectro abaixo de 5000Hz hz5000=5000*length(Y)/fs; f=(0:hz5000)*fs/length(Y);
  • 327.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 327 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=%gHzn',fs/(ms1+fx-1)); Frequência estimada: 667.171Hz
  • 328.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 328 Outra aplicação do cepstrum é a extração da informação de envelope para análise da voz. Em geral, o envelope espectral é uma forma mais suave do gráfico da frequência, onde o processo de suavização ignora os componentes de mais alta frequência. No domínio cepstral, isso corresponde ao descarte de todos os coeficientes cepstrais relacionados às frequências maiores que o envelope da frequência. Isso pode ser conseguido no MatLab com o código abaixo: [som, fs] = wavread('casa1.wav'); ps = log(abs(fft(som))); len = length(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).
  • 329.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 329
  • 330.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 330 11.4 Exercícios 1. Explique a técnica temporal de processamento de voz de Energia de Curta Duração, seguindo os seguintes passos: a) Defina a equação ∑ ∞ −∞= −= m n mnwmxTQ )()]([ b) Cite quais os cuidados que devem ser tomados na definição da janela w(n). 2. Diferencie Quantização e Amostragem, relacionando as duas técnicas com o processo de Digitalização de um sinal. É correto afirmar que a quantização de um sinal pode compactá-lo? Essa compactação seria com ou sem perda de informação? 3. Construa o gráfico da função característica do quantizador de 2 bits definido pela seguinte relação entre as amostras quantizadas e a palavra código: 2/*)1)((*))(( ^ ∆+= ncncsignx onde a função 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 representação em sinal-magnitude. Tal quantizador possui características de um quantizador mid-riser? E mid-tread? 
  • 331.
    Processamento Digital deSinais - Prof. Carlos Alexandre Mello Página 331 11.5 Bibliografia Complementar 1. Lawrence Rabiner, Ronald W. Schafer, Digital Processing of Speech Signals, Prentice Hall, 1978. 2. Vilay K. Madisetti, The Digital Signal Processing Handbook, CRC Press, 2010. 3. VOICEBOX (a MATLAB toolbox for speech processing): http://www.ee.ic.ac.uk/hp/staff/dmb/voicebox/voicebox.html