335
Processamento Digital de Sinais Carlos Alexandre Mello Centro de Informática – UFPE 2015

Processamento Digital de Sinais

Embed Size (px)

Citation preview

Page 1: Processamento Digital de Sinais

Processamento Digital

de

Sinais

Carlos Alexandre Mello Centro de Informática – UFPE 2015

Page 2: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de 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.

Page 3: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de 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 Operações entre sequências..................................................................... 14 1.5 Sistemas LTI como Filtros Seletores de Frequência ................................. 16 1.6 Representação de Sequências pela Transformada de Fourier ................. 19

1.6.1 Propriedades da Transformada de Fourier ......................................... 23 1.7 Códigos do MatLab (Sinais e Operações) ................................................. 25 1.8 Exercícios .................................................................................................. 34 1.8 Bibliografia Complementar ........................................................................ 37

2. A Transformada Z ........................................................................................... 38 2.1 Propriedades da Transformada Z .............................................................. 40 2.2 Pares de Transformadas Z ........................................................................ 43 2.3 Exemplos de Cálculo da Transformada Z ................................................. 43 2.4 Propriedades da Região de Convergência ................................................ 51 2.5 A Transformada Z Inversa ......................................................................... 52 2.6 Exercícios .................................................................................................. 61 2.7 Bibliografia Complementar ........................................................................ 63

3. Teorema da Amostragem ............................................................................... 64 3.1 Teorema de Shannon ................................................................................ 69 3.2 Re-Obtenção do Sinal a partir de suas amostras ...................................... 74

4. Filtros Digitais ................................................................................................. 77 4.1 Filtros Digitais ............................................................................................ 79 4.2 Filtros FIR .................................................................................................. 83 4.3 Filtros IIR ................................................................................................. 106 4.4 Exercícios ................................................................................................ 112 4.5 Bibliografia Complementar ...................................................................... 113

5. Técnicas de projeto de filtros ........................................................................ 114 5.1 Projeto de Filtros FIR .............................................................................. 117

5.1.1 Projeto usando janelas ..................................................................... 118 5.1.2 Técnicas de Projeto por Amostragem em Frequência ...................... 144 5.1.3 Projeto Equirriple Ótimo .................................................................... 146

5.2 Projeto de Filtros IIR ................................................................................ 149 5.2.1 Escala Relativa ................................................................................. 150 5.2.2 Características de Protótipos Analógicos ......................................... 153

5.3 Transformações em Frequência .............................................................. 162 5.4 Comparação entre Filtros FIR e IIR ......................................................... 164 5.5 Exercícios ................................................................................................ 166 5.6 Bibliografia Complementar ...................................................................... 167

6. Transformada Discreta de Fourier ................................................................ 168 6.1 A Série Discreta de Fourier ..................................................................... 169 6.2 A Transformada Discreta de Fourier ....................................................... 174 6.3 Propriedades da Transformada Discreta de Fourier ............................... 176

Page 4: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 4

6.4 A Transformada Discreta Bi-Dimensional de Fourier .............................. 179 6.5 O Espectrograma .................................................................................... 181 6.6 Exercícios ................................................................................................ 185 6.7 Bibliografia Complementar ...................................................................... 187

7. Transformada Rápida de Fourier (FFT- Fast Fourier Transform) ................. 188 7.1 Algoritmos Rápidos ................................................................................. 188 7.2 Algoritmo de Cooley-Tukey ou Decimação no Tempo ............................ 190 7.3 Outras FFTs ............................................................................................ 201 7.4 Exercícios ................................................................................................ 203 7.5 Bibliografia Complementar ...................................................................... 204

8. Análise Wavelet ............................................................................................ 205 8.1 A Transformada Wavelet ......................................................................... 208 8.2 Análise em Multiresolução....................................................................... 212 8.3 Sobre os coeficientes das wavelets ........................................................ 215 8.4 Wavelets no MatLab ................................................................................ 220 8.5 Exercícios ................................................................................................ 227 8.6 Bibliografia Complementar ...................................................................... 229

9. Processamento Digital de Imagens .............................................................. 230 9.1 Digitalização ............................................................................................ 233 9.2 Sistema Computacional de Cores ........................................................... 236 9.3 Histograma .............................................................................................. 240 9.4 Filtragem de Imagens Digitais ................................................................. 242 9.5 Compressão de Imagens ........................................................................ 250 9.6 Processamento de Imagens no MatLab .................................................. 252 9.7 Exercícios ................................................................................................ 256 9.8 Bibliografia Complementar ...................................................................... 257

10. Técnicas de Codificação de Áudio e Vídeo ................................................ 258 10.1 Teoria dos Códigos ............................................................................... 258 10.2 Algoritmos de Compressão ................................................................... 262

10.2.1 Código de Huffman ......................................................................... 263 10.2.2 Run-length ...................................................................................... 266 10.2.3 Algoritmo de Lempel-Ziv-Welch ...................................................... 266

10.3 Algoritmos de codificação multimídia .................................................... 267 10.3.1 Codificação de Vídeo ...................................................................... 268 10.3.2 Codificação de Áudio ...................................................................... 282

10.4 Implementações no MatLab .................................................................. 287 10.4.1 Processamento de Vídeo no MatLab ................................................. 287 10.4.2 Processamento de Áudio no MatLab ................................................. 293 10.5 Exercícios .............................................................................................. 303 10.6 Bibliografia Complementar .................................................................... 304

11. Processamento de Voz ............................................................................... 305 11.1 Amostragem e Quantização .................................................................. 312 11.2 Técnicas Temporais para Processamento de Voz ................................ 319

11.2.1 Energia de Curta Duração .............................................................. 321 11.2.2 Magnitude de Curta Duração .......................................................... 323 11.2.3. Taxa de Passagem pelo Zero ........................................................ 324

Page 5: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 5

11.2.4. Função de Autocorrelação ............................................................. 326 11.3 Análise Cepstral .................................................................................... 329 11.4 Exercícios .............................................................................................. 334 11.5 Bibliografia Complementar .................................................................... 335

Page 6: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de 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

sequências de amostras. Para tanto, o sinal contínuo no tempo é convertido

nessa sequência de amostras, i.e., convertido em um sinal discreto no tempo.

Após o processamento digital, a sequê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

caracterí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 sequência é denotado

por x[n]. Assim, x é formalmente escrito como:

Page 7: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 7

x = x[n], -∞ <n < ∞

onde n é um inteiro. Tais sequê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 sequê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

nnδ

Page 8: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 8

Um dos mais importantes aspectos do impulso é que uma sequência arbitrária

pode ser representada como uma soma de impulsos escalonados e deslocados.

Por exemplo, a sequê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 sequência x[n] pode ser representada como:

∑∞

−∞=

−=k

knkxnx ][][][ δ

Outra sequência importante é o degrau unitário, u[n]:

<

≥=

0,0

0,1][

n

nnu

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]

Page 9: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 9

Uma sequência exponencial é importante na análise de sistemas discretos e

invariantes no tempo. A forma geral de uma sequê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 sequência de entrada x[n] em uma sequência

de saída y[n]. Isso pode ser denotado por:

y[n]=Tx[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

knxMM

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:

Page 10: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 10

Ta.x1[n] + b.x2[n] = a.Tx1[n] + b.Tx2[n]

Ex: Acumulador: ∑−∞=

=n

k

kxny ][][

3) Um sistema é invariante no tempo é um sistema no qual um deslocamento

no tempo (ou atraso) da sequência de entrada gera um deslocamento

correspondente na sequência de saída. Ou seja, suponha um sistema que

transforma uma sequência de entrada x[n] na sequência de saída y[n]. Se a

sequência de entrada sofre um deslocamento de n0, x[n] = x[n – n0], então a

sequê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

sequê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 é

Page 11: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 11

combinada com a representação de uma sequê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 consequê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.

Page 12: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de 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

Page 13: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de 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 knxbknya0 0

][][ (Eq. 1.3)

Um exemplo de um tal sistema é um acumulador definido pela sequência cujo

diagrama de blocos pode ser visto na figura abaixo:

Page 14: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de 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 Operações entre sequências Vamos descrever algumas operações básicas em sequências. Os códigos em

MatLab para as principais operações pode ser encontrado na Seção 1.7.

a) Adição de sequências:

A adição de amostra por amostra é dada por:

x1[n] + x2[n] = x1(n) + x2(n)

Deve ser observado que o comprimento das sequências x1[n] e x2[n] deve ser o

mesmo. Se as sequências têm comprimentos diferentes, a menor deve ser

completada para que tenha o mesmo comprimento da maior. Normalmente, isso

é feito, acrescentando zeros à sequência (zero padding).

b) Multiplicação de sequências:

Novamente, é uma operação amostra por amostra e as questões de

comprimento das sequências devem ser consideradas:

x1[n].x2[n] = x1(n).x2(n)

Page 15: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 15

c) Mudança de escala:

Cada amostra de uma sequência é multiplicada por um escalar α:

α.x[n] = α.x(n)

d) Deslocamento:

Cada amostra x(n) é deslocada k posições:

y[n] = x(n – k)

Seja m = n – k, então n = m + k e a operação pode ser vista como:

y[m + k] = x(m)

e) Inversão:

A sequência é posta de trás para frente. Seja x[n] uma sequência de

comprimento k. Logo, y[n] será:

y[n] = x(k – n)

f) Soma de amostras:

Soma as amostras de uma sequência dentro de um intervalo:

= 1 +⋯ .+2

g) Produto de amostras:

Similar ao anterior, mas com operação de produto em um intervalo.

h) Energia:

A energia de uma sequência x[n] é dada por:

= ||

i) Potência:

A potência média de uma sequência periódica pode ser calculada como:

1 ||

Page 16: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 16

1.5 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

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

Page 17: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 17

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.

Fig. 1.2. Resposta em magnitude para alguns filtros seletores de frequência

discretos no tempo.

Page 18: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 18

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

CeH

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

dg

)()(

Θ−=

τ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

Page 19: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 19

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.6 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 frequência através da

Transformada de Fourier. Muitas sequências podem ser representadas por uma

integral de Fourier da forma:

∫−

π

ωω ωπ

deeXnxnjj )(

2

1][

(Eq. 1.4)

onde X(ejw) é dada por:

∑∞

−∞=

−=n

njjenxeX

ωω ][)( (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 à frequência, algumas vezes, pode-se expressar X(ejω) na forma:

X(ejω) = XR(ejω) + j.XI(ejω)

Page 20: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 20

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 sequê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

1nxdeemx nj

m

mj =

∫ ∑

−∞=

−π

π

ωω ωπ

Se trocarmos a ordem da integração com o somatório, temos:

= ∫∑

−∞

−∞=

π

π

ω ωπ

demxnxmnj

m

)(^

2

1][][

Calculando a integral dentro dos parênteses, temos:

==

−=∫

nm

nm

mn

mnde mnj

,0

,1

)(

))(sin(

2

1 )(

ππ

ωπ

π

π

ω

][ mn −= δ

Page 21: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 21

Assim:

][][][][^

nxmnmxnxm

=−= ∑∞

−∞=

δ

Exemplo 1:

Seja x[n] = anu[n].

A TF é dada por:

∑ ∑∑∞

=−

=

−−∞

−∞=

−====

0 0 1

1)(][)(

njw

n

njwjwnn

n

jwnjw

aeaeeaenxeX

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 frequência é:

<<

<=

π||,0

||,1)(

ww

wweH

c

cjw

LPF

A resposta o impulso hLPF[n] pode ser encontrada através da Transformada

Inversa de Fourier:

∫∫−−

==c

c

w

w

jwnjwnjw

LPFLPF dwedweeHnhππ

π

π 2

1)(

2

1][

Page 22: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 22

∞<<−∞= nn

nwnh c

LPF ,)sin(

][π

Exemplo 3:

Determine a resposta em frequência H(ejw) de um sistema cuja resposta ao

impulso h(n) = (0,9)nu[n]. Plote a magnitude e a fase.

=ℎ

=0,9

= 0,9

= 11 − 0,9

Assim, a magnitude é calculada como:

"" = # 11 − 0,9$%&' + 0,9&' = 1√1,81 − 1,8$%&'

E a fase:

∠ = −arctan 0,9&'1 − 0,9$%&' Plotagem no MatLab:

w = [0:1:500]*pi/500; H = exp(j*w)./(exp(j*w) - 0.9*ones(1, 501)); magH = abs(H); angH = angle(H); subplot (2, 1, 1); plot (w/pi, magH); grid; xlabel('frequency in pi units'); ylabel('|H|'); title('Magnitude response'); subplot (2, 1, 2); plot (w/pi, angH/pi); grid; xlabel('frequency in pi units'); ylabel('Phase in pi Radians'); title('Phase response');

Page 23: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 23

1.6.1 Propriedades da Transformada de Fourier Algumas propriedades da TF: Seja: x[n] ↔ X(ejw) e y[n] ↔ Y(ejw)

Propriedade Sequência Transformada de Fourier

Linearidade a.x[n] + b.y[n] a.X(ejw) + b.Y(ejw)

Deslocamento no Tempo x[n – nd] e-jwndX(ejw)

Deslocamento na Freq ejwonx[n] X(ej(w – w0))

Conjugação x*[n] X*(e-jw)

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] ∫−

−π

π

θθ θπ

deYeXwjj )()(

2

1 )(

Page 24: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 24

A seguir, temos códigos do MatLab que exemplificam algumas dessas

propriedades:

% Exemplo de Linearidade

x1 = rand(1, 11); x2 = rand(1, 11); n = 0:10;

alpha = 2; beta = 3; k = 0:500; w = (pi/500)*k;

X1 = x1*(exp(-j*pi/500)).^(n'*k); % DTFT de x1

X2 = x2*(exp(-j*pi/500)).^(n'*k); % DTFT de x2

x = alpha*x1 + beta*x2; % Combinação linear de x1 e x2

X = x*(exp(-j*pi/500)).^(n'*k); % DTFT de x

X_check = alpha*X1 + beta*X2; % DTFT da combinação de X1 e

X2

error = max(abs(X - X_check)) % Diferença

% Exemplo de deslocamento no tempo

x = rand (1, 11); n = 0:10;

k = 0:500; w = (pi/500)*k;

X = x*(exp(-j*pi/500)).^(n'*k); % DTFT de x

% O sinal é deslocado de duas amostras

y = x; m = n + 2;

Y = y*(exp(-j*pi/500)).^(m'*k); % DTFT de y

% Verificação

Y_check = (exp(-j*2).^w).*X; % Multiplicação por exp(-j2w)

error = max(abs(Y - Y_check)) % Diferença

% Exemplo de deslocamento na frequência

n = 0:100; x = cos(pi*n/2);

k = -100:100; w = (pi/100)*k;

X = x*(exp(-j*pi/100)).^(n'*k); % DTFT de x

y = exp(j*pi*n/4).*x; % Sinal multiplicado por

exp(j*pi*n/4)

Y = y*(exp(-j*pi/100)).^(n'*k); % DTFT de y

% Verificação gráfica

subplot (2, 2, 1); plot(w/pi, abs(X)); grid; axis([-1, 1,

0, 60]);

xlabel('frequency in pi units'); ylabel ('|X|');

title ('Magnitude de X');

subplot (2, 2, 2); plot(w/pi, angle(X)); grid; axis([-1, 1,

-1, 1]);

xlabel('frequency in pi units'); ylabel ('radianos/pi');

title ('Angulo de X');

subplot (2, 2, 3); plot(w/pi, abs(Y)); grid; axis([-1, 1,

0, 60]);

xlabel('frequency in pi units'); ylabel ('|Y|');

title ('Magnitude de Y');

Page 25: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 25

subplot (2, 2, 4); plot(w/pi, angle(Y)); grid; axis([-1, 1,

-1, 1]);

xlabel('frequency in pi units'); ylabel ('radianos/pi');

title ('Angulo de Y');

1.7 Códigos do MatLab (Sinais e Operações)

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);

Page 26: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 26

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]');

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);

Page 27: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 27

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]');

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);

Page 28: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 28

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; Deslocamento y[n] = x[n – k]

function [y,n] = sigshift(x, m, n0) n = m + n0; y = x;

Inversão y[n] = x[-n]

Page 29: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 29

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)’);

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)');

Page 30: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 30

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]

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

Page 31: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 31

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).

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,.., 120. Como vimos anteriormente, uma equação de diferenças é da forma:

Page 32: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 32

∑ ∑= =

−=−N

k

M

k

kk knxbknya0 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]');

Page 33: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 33

b) Calcule e plote sua resposta ao degrau s[n] para n = -20,.., 120. 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.

Page 34: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 34

1.8 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]) = Σnk=n0 x[k]

c. T(x[n]) = x[n – n0]

d. T(x[n]) = exp(x[n])

e. T(x[n]) = a.x[n] + b, 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.

Page 35: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 35

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?

Page 36: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 36

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!!

Page 37: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 37

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

Page 38: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 38

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 sequência dada por:

∑∞

−∞=

−=n

jwnjwenxeX ][)(

Seja z = ejw. Temos então, a TZ definida como:

∑∞

−∞=

−=n

nznxzX ][)(

Essa é chamada também de TZ bilateral. A transformada unilateral é dada por:

∑∞

=

−=0

][)(n

nznxzX

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

nznx

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.

Page 39: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 39

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 sequência deve ser absolutamente

somável, i.e., uma sequê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

zPzX =

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.

Page 40: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 40

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

nznxzX ][)(

Considere que x[n] = ax1[n] + bx2[n]. Logo:

=+=+= ∑∑∞

−∞=

−−∞

−∞=

n

nn

n

nznbxznaxznbxnaxzX ][][])[][()( 2121

∑∑∑∑∞

−∞=

−∞

−∞=

−∞

−∞=

−∞

−∞=

− +=+=n

n

n

n

n

n

n

nznxbznxaznbxznax ][][][][ 2121

= aX1(z) + bX2(z)

b) Deslocamento no tempo: x[n + n0] ↔ zn0.X(z), ROC = ROCx (cuidado deve ser

tomado observando o que acontece para z = 0 ou z = ∞).

Comentários:

Suponha que y[n] = x[n – n0]. Logo:

∑∞

−∞=

−−=n

nznnxzY ][)( 0

Fazendo m = n – n0:

∑∑∑∞

−∞=

−−∞

−∞=

−−∞

−∞=

+− ===m

mn

m

nm

m

nmzmxzzzmxzmxzY ][..][][)( 000 )(

)(.)( 0 zXzzYn−=

Page 41: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 41

c) Multiplicação por uma exponencial discreta: anx[n] ↔ X(z/a), ROC = |a|ROCX

Comentários:

Essa propriedade é observável substituindo anx[n] na definição de TZ:

∑∑∞

−∞=

−∞

−∞=

− ==n

nn

n

nznxaznxzX ][][)(

Como consequê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-1z) 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

nznyzY ][)(

∑ ∑∞

−∞=

−∞

−∞=

−=n

n

k

zknxkx ][][ 21

Se mudarmos a ordem dos somatórios:

∑ ∑∞

−∞=

−∞=

−−=k n

nzknxkxzY ][][)( 21

Fazendo no segundo somatório m = n – k, temos:

Page 42: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 42

∑ ∑∞

−∞=

−∞

−∞=

=k

k

m

mzzmxkxzY ][][)( 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

nznxzX ][)(

∑∞

−∞=

−−−=n

nznxn

zd

zdX 1][)(

)(

)( . (-z)

∑∞

−∞=

−−−−=−n

nznxnz

zd

zdXz

1][)(

)(

)(

∑∞

−∞=

− ==−n

nnnxZznnx

zd

zdXz ][][

)(

)(

f) Reverso no tempo: x[-n] ↔ X(z-1), ROC = 1/ROCX

Comentários:

Novamente, a definição de TZ prova esta propriedade:

∑∞

−∞=

−−=n

nznxzX ][)(

Fazendo m = -n, temos:

Page 43: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 43

)()]([][)(11 −

−∞=

−−∞

−∞=

=== ∑∑ zXzmxzmxzXm

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.

Page 44: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 44

Exemplo 1: x[n] = anu[n]

∑ ∑ ∑ ∑∞

−∞=

−∞=

=

=

−−−− ====n n n n

nnnnnnazzaznuaznxzX

0 0

1 )(][][)(

ROC:

|az-1| < 1 ⇒ |z| > |a|

||||,1

1)()(

10

1az

az

z

azazzX

n

n >−

=−

== −

=

−∑

Para a = 1:

1||,1

1)(][][

1>

−=→←=

−z

zzXnunx

Z

Observamos que, para a = 1, a ROC não contém o círculo unitário. Logo, a TF

para essa sequência não converge.

Page 45: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 45

Exemplo 2: x[n] = -anu[-n – 1]

∑∑∑∞

−∞=

−∞

−∞=

−∞

−∞=

− −−−=−−−==n

nn

n

nn

n

nznuaznuaznxzX ]1[]1[][)(

∑∑∑∞

=

−∞

=

−−

−∞=

− −=−=−=0

1

1

1

)(1)(n

n

n

nn

n

nn zazazazX

ROC:

|a-1z|<1 ⇒ |z|<|a|

||||,1

11)(1)(

10

1az

az

z

zazazX

n

n <−

=−

−=−=−

=

−∑

Page 46: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 46

Exemplo 3: x[n] = (1/2)nu[n] + (-1/3)nu[n]

∑∑∞

−∞=

−∞

−∞=

−+

==n

n

nn

n

nznunuznxzX ][

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

11

1

2

11

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.

Page 47: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 47

Exemplo 4: x[n] = (-1/3)nu[n] – (1/2)nu[-n – 1]

∑∑∞

−∞=

−∞

−∞=

−−

−==n

n

nn

n

nznunuznxzX ]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

11

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

Page 48: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 48

ROC(i)

ROC(ii)

ROC:

z

z

zz

z

zX21

2

3

11

1

21

11

3

11

1)(

11 −−

+=

−−+

+=

−−

Page 49: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 49

Exemplo 5:

Função delta δ[n]: δ[n] = 0, n ≠ 0, e δ[n] = 1, n = 0

Transformada Z:

∑∞

−∞=

− ===n

nzznxzX 1.1][)(

0

ROC = Todo o Plano Z

Exemplo 6: x[n] = δ[n – n0]

∑∑∞

−∞=

−−∞

−∞=

− =−==n

nn

n

nzznnznxzX 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] ↔ zn0.X(z)),

temos:

X(z) = Zx[n] = z-2.Zn(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) = Zx[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:

Page 50: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 50

21

1

25,0)3

cos.5,0(21

)3

cos.5,0(1

]][)3

cos()5,0[(−−

+−

−=

zz

z

nun

zn

π

ππ

21

1

25,05,01

25,01]][)

3cos()5,0[( −−

+−−

=zz

znu

nz

n π, ROC = |z| > 0,5

Assim:

+−−

−=−−

−−

21

11

25,05,01

25,01)(

zz

z

dz

dzzX

4321

543

0625,025,075,01

0625,05,025,0)( −−−−

−−−

+−+−+−

=zzzz

zzzzX 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.

Page 51: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 51

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 sequê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 sequê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.

Page 52: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 52

7) Se x[n] é uma sequê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

nznxzX ][)(

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

nkkdzznxdzzzX

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:

Page 53: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 53

∫ ∑ ∫∞

−∞=

−−− =C n C

nkkdzznxdzzzX

11 ][)( (2)

Pelo teorema de integração de Cauchy:

==∫

−−

kn

kndzz

jC

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 dzzzXj

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 sequê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

Page 54: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 54

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

11

1)(

−−=

z

zX, |z|> ½

Por observação, sabemos que:

x[n] = -(½)nu[-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

kNM

r

r

rzd

AzBzX

11

0 1)(

Page 55: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 55

Exemplo 8: Suponha:

)1)(2

11(

21

2

1

2

31

21)(

11

21

21

21

−−

−−

−−

−−

−−

++=

+−

++=

zz

zz

zz

zzzX

Vamos considerar que:

=−

+−

+=−

−1

2

1

10

1

2

11

)(z

A

z

ABzX

)1)(2

11(

)2

11()1()1)(

2

11(

11

1

2

1

1

11

0

−−

−−−−

−−

−+−+−−=

zz

zAzAzzB

)1)(2

11(

)2

11()1()

2

1

2

11(

11

1

2

1

1

211

0

−−

−−−−−

−−

−+−++−−=

zz

zAzAzzzB

Logo:

=−−

+−−−+++=

−−

−−

)1)(2

11(

)2

1()

2

1

2

3()(

)(11

0

2

210

1

210

zz

BzAABzAAB

zX

)1)(2

11(

21

11

21

−−

−−

−−

++=

zz

zz

Assim, temos:

Page 56: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 56

1210 =++ AAB

22

1

2

3210 =−−− AAB

212

100 =⇒= BB

Com isso, ficamos com:

−=+

−=+⇒

=−−−

=++

52

1

1

22

13

12

21

21

21

21

AA

AA

AA

AA

Resolvendo, temos:

A1 = -9 e A2 = 8

Logo:

11 1

8

2

11

92)(

−− −

+−

−+=

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

nznxzX ][)(

Isso ocorre, principalmente, se a TZ é uma sequência finita.

Por exemplo, considere que a TZ de uma sequência x[n] é da forma:

Page 57: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 57

)1)(1)(2

11()( 1112 −−− −+−= zzzzzX

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

11

2

1)( −+−−= zzzzX

que equivale à sequência:

x[n] = δ[n + 2] – ½.δ[n + 1] - δ[n] + ½.δ[n – 1]

Exemplo 9: Considere a função:

143)(

2 +−=

zz

zzX

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

zzX

Usando o MatLab, temos1:

>> b = [0 1];

>> a = [3 -4 1];

>> [R, p, C] = residuez(b, a)

R =

0.5000

-0.5000

p =

1.0000

0.3333

1 Para mais informação sobre a função residuez, digite help residuez no MatLab.

Page 58: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 58

C = [ ]

que corresponde a:

11

3

11

5,0

1

5,0)(

−−

−−

−=

zz

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

41

3

10

)(−−

−−

−−

+−+

=+−

=+−

+=

zz

z

zz

z

zz

z

zX

como antes.

Exemplo 10: Calcule a transformada Z inversa de:

)9,01()9,01(

1)(

121 −− +−=

zzzX , |z|>0,9

Podemos calcular o polinômio no denominador assim como os resíduos usando

MatLab:

>> b = 1;

Page 59: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 59

>> 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

>> [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)(

−−− ++

−+

−=

zzzzX , |z| > 0,9

121

1

1 9,01

25,0

)9,01(

9,0

9,0

5,0

9,01

25,0)( −−

− ++

−+

−=

zz

zz

zzX , |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

nununnunxnnn −++++= +

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:

Page 60: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 60

][)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 11nunnun

nn ++ +=++

][)9,0)(1(5,0][)9,0.(9,0).1(9

5nunnun

nn +=+=

][)9,0(5,0][)9,0(5,0 nununnn +=

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

Page 61: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 61

2.6 Exercícios

1. Calcule a transformada Z das sequências:

a. x[n] = -(1/2)nu[-n – 1]

b. y[n] = (-1/2)nu[n] + (1/3)nu[-n – 1]

c. y[n] =2δ[n – 3] + (-1/4)nu[-n - 1] + (1/2)nu[n]

2. Calcule a transformada Z das seguintes 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)nu[n – 2] + (0,9)n-3u[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

11

1)(

−+=

z

zX , ROC = |z| > ½

b. 1

2

11

1)(

−+=

z

zX , ROC = |z| < 1/2

c. 21

1

8

1

4

31

2

11

)(−−

++

−=

zz

z

zX , ROC = |z| > 1/2

5. Determine a transformada inversa usando o método de expansão em frações

parciais de:

Page 62: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 62

321

321

1

4

1

8

13

4

111

441)(

−−−

−−−

−+−

+−−=

zzz

zzzzX

sabendo que a sequência é causal.

6. Suponha que X(z) é:

21

1

181,01

32)( −−

+−+

=zz

zzX , |z| > 0,9

Encontre as primeiras 20 amostras de x[n], usando o MatLab.

Page 63: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 63

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

Page 64: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 64

3. Teorema 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 sequê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

sequê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

frequê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

Page 65: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 65

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

sequência x[n], não é possível reconstruir o sinal original xc(t). Muitos sinais

diferentes podem gerar a mesma sequê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 sequê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.

Page 66: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 66

Fig. 3.2. Amostragem com um trem de impulsos periódicos seguida de uma

conversão para uma sequência discreta no tempo. a) Visão geral do sistema; b)

xc(t) (sinal original no tempo contínuo) e xs(t); c) a sequê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).

Page 67: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 67

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.

Page 68: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 68

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 frequência acima

de uma dada frequência (Fig. 3.3).

Fig. 3.3. Exemplo de um sinal banda limitado.

Page 69: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 69

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.

Page 70: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 70

Fig. 3.4. (topo) Exemplo de um sinal e sua transformada banda limitada em wm.

(centro) Trem de impulsos e sua transformada e (embaixo) o resultado da

amostragem do sinal; sua transformada é analisada a seguir.

O espectro do sinal amostrado fs(t) pode ser determinado com o auxílio do

teorema da convolução na frequê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:

Page 71: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 71

∑∑∞

−∞=

−∞=

−=−=n

Ss

n

Sss nwwwFw

nwwwwFwF )()(2

)(*)(2

1)( δ

πδ

π

∑∞

−∞=

−=n

S

s

s nwwwFT

wF )()(1

)( δ , com ws = 2π/Ts

e, finalmente,

∑∞

−∞=

−=n

S

s

s nwwFT

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 frequência. A fig. 3.5 apresenta três

casos onde o valor de ws é maior, igual ou menor a wm (frequê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.

Page 72: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 72

a)

b)

c)

d)

Fig. 3.5. a) Sinal original banda limitado em wm; resultado no domínio da

frequências de amostragens com: b) ws > 2wm, c) ws = 2wm, d) ws < 2wm

(sobreposição de sinais – aliasing).

Page 73: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 73

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 frequências

• Perda nas altas frequências

• Modulação das frequê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).

Page 74: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 74

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)

Page 75: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 75

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

)(*)()()( twSanTtnTfwT

tf m

n

ss

ms

−= ∑

−∞=

δπ

∑∞

−∞=

−=n

mssms twSanTtnTf

wTtf )](*)()[()( δ

π

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

ntwSaf

nftf )()

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).

Page 76: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 76

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.

Page 77: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 77

4. Filtros Digitais Um sistema discreto no tempo é definido matematicamente como uma

transformação que mapeia uma sequência de entrada x[n] em uma sequência

de saída y[n]. Isso pode ser denotado por:

y[n]=Tx[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 sequê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).

Page 78: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 78

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 consequê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 knxbknya0 0

][][ (Eq. 4.3)

Um exemplo de um tal sistema é um acumulador definido pela sequência cujo

diagrama de blocos pode ser visto na figura abaixo:

Page 79: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 79

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

sequências discretas. Retardos são unidades que processam elementos

anteriores de uma sequência (Fig. 4.2).

Page 80: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 80

Fig. 4.2. Retardo (delay) aplicado a uma sequê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 sequências, b)

multiplicador de duas sequências, c) multiplicador de uma sequê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]

Page 81: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 81

cuja transformada Z (ou função de sistema) é dada por:

2

2

1

11)(

−− −−=

zaza

bzH

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 knxbknyany1 0

][][][

com função de sistema correspondente:

)(

)(

1

)(

1

0

zX

zY

za

zb

zHN

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:

Page 82: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 82

∑ ∑= =

−+−=N

k

M

k

kk knxbknyany1 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 knxbnv0

][][

∑=

−+=N

k

k knyanvny1

][][][

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).

Page 83: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 83

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.

Page 84: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 84

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]

Page 85: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 85

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 knxbny0

][][

com função de transferência:

∑=

−=M

k

k

k zbzH0

)(

A resposta ao impulso h[n] é dada por:

−≤≤

=senão

Mnbnh

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:

Page 86: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 86

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:

Ta.x1[n] + b.x2[n] = a.Tx1[n] + b.Tx2[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] = Tx[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 frequê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.

Page 87: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 87

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 frequê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).

Page 88: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 88

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]

Page 89: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 89

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 sequê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) Sequência [0,5 0,5] e sua transformada de Fourier (um

FPB) e (direita) a sequê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

Page 90: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 90

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);

Page 91: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 91

>> 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

Page 92: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 92

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:

Page 93: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 93

∫∫ −

−−

− ==π

π

αωπ

π

ωωα ωπ

ωπ

dedeenhnjnjj

id

)(

2

1

2

1][

=−

=−

=−

−−

−− π

π

αωπ

π

αω

απαπ)()(

)(

1

2

1

)(

1

2

1 njjnje

nje

nj

][)(

1

2

1 )()( njnjee

nj

−−− −−

= απαπ

απ

Sabendo que 2/)( ααα jjeesen

−−= , temos:

)]([)(

1][

)(

1

2

1 )()( απαπαπ

απαπ −−

=−−

−−−nsen

nee

nj

njnj

)(

)]([][

απαπ

−=

n

nsennhid , -∞< n < ∞ (Eq. 1)

Assim

)(

)]([*][][*][][

απαπ

−==

n

nsennxnhnxny id

∑∞

−∞= −−

−−=

k kn

knsenkxny

)(

)]([][][

απαπ

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 sequência de entrada apenas deslocada de nd amostras.

Page 94: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 94

De forma geral, o sistema é de fase linear se

∠Hid(ejω) = β - ωα, -π < ω < π

Por exemplo, considere uma resposta em frequê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

eeH

cuja resposta ao impulso é, como vimos:

)(

)]([][

απαω

−=

n

nsennh c

LP

Se ωc = π, temos a Eq. 1. Quando α é um inteiro, digamos α = nd:

=−−

−−=−

)2(

)]2([]2[

dd

ddcdLP

nnn

nnnsennnh

πω

][)(

)]([]2[ nh

nn

nnsennnh LP

d

dcdLP =

−=−⇒

πω

Nesse caso, temos um sistema de fase zero (zero phase system). Se α = -nd:

][][|)(|)()(^^^

nhnheHeeHeH LPLPj

LP

njj

LP

jLP

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.

Page 95: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 95

Fase Linear Generalizada

Um sistema é dito de fase linear generalizada se sua resposta em frequê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(()( ωαβωαβωω −+−= jseneAeHjj

ou

)()()cos()()( ωαβωαβ ωωω −+−= senejAeAeHjjj

Equivalentemente, por definição:

∑∑∑∞

−∞=

−∞=

−∞=

− −==nnn

njjnsennhjnnhenheH ωωωω ][cos][][)(

com h[n] real.

Assim:

)()()cos()()( ωαβωαβ ωωω −+−= senejAeAeHjjj

e

Page 96: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 96

∑∑∑∞

−∞=

−∞=

−∞=

− −==nnn

njjnsennhjnnhenheH ωωωω ][cos][][)(

Logo, podemos considerar:

∑∞

−∞=

=−n

jnnheA ωωαβω cos][)cos()(

e

∑∞

−∞=

−=−n

jnsennhseneA ωωαβω ][)()(

Com isso:

∑∞

−∞=

−∞=

−=

−−

=−

n

n

nnh

nsennhsen

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 ωωαβ

Page 97: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 97

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:

Page 98: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 98

i)

β = 0 ou π

2α = M inteiro

h[2α - n] = h[n]

ii)

β = π/2 ou 3π/2

2α = M inteiro

h[2α - n] = -h[n]

Sistemas Causais de Fase Linear Generalizada

Se o sistema for causal, a Eq.3 torna-se:

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

nsennh =

−−

−=−

−=

−−−−

=−απ

απαπ

απααπ

ααπα

O segundo caso acontece para β = π/2 ou 3π/2.

Especificamente, se

Page 99: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 99

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 ω. 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(e

jω)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

njjenheH

0

][)(ωω

Considerando a condição de similaridade, essa resposta em frequência pode ser

expressa como:

∑=

−=2/

0

2/)cos(][)(

M

k

MjjkkaeeH ωωω

onde a[0] = h[M/2],

a[k] = 2h[(M/2) – k], k = 1, 2, 3, ..., M/2

Page 100: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 100

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

MjjkkcjeeH ωωω

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

MjjkkdjeeH ωωω

Page 101: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 101

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

we

e

eeeH 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

Page 102: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 102

h[n] = h[M – n]

A resposta em frequência é:

)2/sin(

)3sin()( )2/5(

w

weeH

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:

Page 103: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 103

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:

Page 104: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 104

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')

Page 105: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 105

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')

Page 106: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 106

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:

Page 107: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 107

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

.... ....

Page 108: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 108

De uma maneira geral, os filtros IIR são expressos como:

∑ ∑= =

−=−−N

k

M

k

kk knxbknyany1 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

Page 109: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 109

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

zzzH

A forma direta I e II podem ser desenhadas como:

Forma direta I:

e

Forma direta II:

Page 110: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 110

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

zzzH

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

878

125.075.01

21)(

−−

−−

−−

+−+−

+=+−

++=

zz

z

zz

zzzH

Page 111: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 111

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

188

125.075.01

878)(

−−−−

−−

−+=

+−+−

+=zzzz

zzH

que gera o diagrama abaixo apenas com seções de primeira ordem:

Page 112: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 112

4.4 Exercícios

1. Um filtro IIR é definido por:

2

32

25.01

5.05.210)(

−−

−+=

z

zzzH

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

31

21)(

−−

−−

+−

++=

zz

zzzH

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.

Page 113: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 113

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

Page 114: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 114

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

Page 115: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 115

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.

Page 116: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 116

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:

01

1log20

1

1

10 >+

−−=

δδ

PR

e 0

1log20

1

210 >

+−=

δδ

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).

Page 117: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 117

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

Page 118: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 118

• Método da amostragem em frequê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

eeH

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:

∫−

− =ℑ=π

π

ωωω ωπ

deeHeHnhnjj

d

j

dd )(2

1)]([][ 1

)(

)]([.1

2

1][

απαω

ωπ

ω

ω

ωαω

−−

== ∫−

n

nsendeenh 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:

Page 119: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 119

−≤≤

=senão

Mnnhnh

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

Mnnw

,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):

∫−

−==π

π

λλ λπ

deHeWeWeHeHwj

d

jjwjw

d

jw )()(2

1)(*)()( )(

Podemos ver essa convolução na Fig. 5.3 para uma janela comum.

Page 120: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 120

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.

Page 121: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 121

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

Mnnw

,0

0,1][

sendo sua resposta em frequência:

)2/(

]2/)1([

1

1)( 2/

0

)1(

wsen

Mwsene

e

eeeW jwM

M

njw

Mjwjwnjw +

=−

−== −

=−

+−−∑

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).

Page 122: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 122

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

Msen

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.

Page 123: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 123

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

MnMM

n

MnM

n

nw

,0

2/,2

2

2/0,2

][

Essa janela e sua resposta em frequência podem ser vistas na Fig. 5.6

Page 124: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 124

Fig. 5.6. Janela triangular.

3) Janela de Hanning (homenagem a Julius von Hann, meteorologista

austríaco)

≤≤−

=senão

MnMnnw

,0

0),/2cos(5,05,0][

π

Fig. 5.7. Janela de Hanning

4) Janela de Hamming (Richard Hamming, matemático americano)

≤≤−

=senão

MnMnnw

,0

0),/2cos(46,054,0][

π

Tem uma quantidade menor de descontinuidades em relação à janela de

Hanning.

Page 125: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 125

Fig. 5.8. Janela de Hamming.

5) Janela de Blackman

≤≤+−

=senão

MnMnMnnw

,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

Page 126: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 126

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

MnI

M

nI

nw

,0

0,][

211

][

0

2

0

β

β

I0(.) é a função de Bessel modificada de ordem zero:

∑∞

=

+=

1

2

0!

)2/(1)(

n

n

n

xxI

Page 127: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 127

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:

Page 128: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 128

<

≤≤−+−

>−

=

21,0

5021,)21(07886,0)21(5842,0

50,)7,8(112,04,0

A

AAA

AA

β (Eq. 5.1)

Além disso, dados ∆w e A, M é aproximadamente:

w

AM

∆−

=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

Page 129: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 129

M = (A - 8)/(2,285∆w) ≅ 36,219 ⇒ M = 37 (M inteiro)

A resposta ao impulso é:

][)2/(

)]2/([][][][ nw

Mn

Mnwsennwnhnh 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);

Page 130: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 130

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]');

Page 131: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 131

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

Page 132: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 132

Exemplo 2:

Resolva o exemplo anterior usando uma janela de Kaiser.

wp = 0.2*pi; ws = 0.3*pi; As = 50;

tr_width = ws - wp;

M = ceil((As - 7.95)/(14.36*tr_width/(2*pi))+1) + 1

n = [0:M-1];

beta = 0.1102*(As - 8.7)

wc = (ws + wp)/2;

hd = ideal_lp (wc, M);

w_kai = (kaiser(M, beta))';

h = hd.*w_kai;

[db, mag, pha, w] = freqz_m(h, [1]);

delta_w = 2*pi/1000;

As = -round(max(db(ws/delta_w+1:501)))

subplot(1, 1, 1)

subplot (2, 2, 1); stem(n, hd); title('Resposta ao Impulso Ideal');

axis([0 M-1 -0.1 0.3]);xlabel('n');ylabel('hd[n]');

subplot (2, 2, 2); stem(n, w_kai); title('Janela de Kaiser');

axis([0 M-1 0 1.1]);xlabel('n');ylabel('w[n]');

subplot (2, 2, 3); stem(n, h); title('Resposta ao Impulso Atual');

axis([0 M-1 -0.1 0.3]);xlabel('n');ylabel('h[n]');

subplot (2, 2, 4); plot(w/pi, db); title('Magnitude em dB');grid

axis([0 1 -100 10]);xlabel('frequencia em pi unidades');ylabel('Decibeis');

M = 61

beta = 4,5513

alpha = 30

As = 52

Page 133: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 133

Page 134: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 134

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:

Page 135: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 135

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]');

Page 136: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 136

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

Page 137: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 137

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

eHjw

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

Page 138: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 138

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))';

Page 139: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 139

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

Page 140: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 140

Exemplo 5:

A resposta em frequência de um filtro diferenciador digital ideal é dada por:

<<−−

≤<=

0,

0,)(

wjw

wjweH 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

1dweejwdweejw

jwnwjjwnwj

=

≠−

−=

α

αα

απ

n

nn

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)

Page 141: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 141

coef = [h(L+1) 2*h(L:-1:1)]; 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]');

Page 142: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 142

subplot (2, 2, 3); stem(n, h); title('Resposta ao Impulso Atual');

axis([0 M-1 -1.2 1.2]);xlabel('n');ylabel('h[n]');

subplot (2, 2, 4); plot(w/pi, Hr/pi); title('Magnitude em dB');grid

axis([0 1 0 1]);xlabel('frequencia em pi unidades');ylabel('Slope in pi units');

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

wjeeH

wj

wj

jw

d π

πα

α

A resposta ao impulso ideal é dada por:

Page 143: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 143

=

≠−

−=

α

αα

αππ

n

nn

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');

Page 144: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 144

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

kMkj

MM

n

n

ez

kH

M

zznhzH π

e

∑−

=−

−−

=1

0/21

][1)(

M

kMkjjw

jwMjw

ee

kH

M

eeH π (Eq. 5.2)

com

Page 145: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 145

−=−

===

1,...,1,][*

0,]0[)(][ /2

MkkMH

kHeHkH 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 eM

kHkH

onde

−=

−=

=

1,...,1,

)(2

0,]0[2

MkM

kMH

kH

M

kH

r

r

rππ

e

−+

−=−

−+

−=

−−

=∠1,...,1

2

1,)(

2

2

1

2

1,...,0,

2

2

1

][

MM

kkMM

M

Mk

M

kM

kHπ

π

(para tipos 1 e 2)

ou

−+

−=−

−+

±−

−=

−−

±=∠

1,...,12

1,)(

2

2

1

2

2

1,...,0,

2

2

1

2][

MM

kkMM

M

Mk

M

kM

kHππ

ππ

(para tipos 3 e 4)

Page 146: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 146

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 frequê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 frequências amostradas.

2) O erro de aproximação nas outras frequê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.

Page 147: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 147

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)

Page 148: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 148

M = M + 1;

h = remez(M - 1, f, m, weights);

[db, mag, pha, w] = freqz_m(h, [1]);

delta_w = 2*pi/1000;

wsi = ws/delta_w + 1;

Asd = -max(db(wsi:501))

end

subplot (2, 1, 1); stem(h); title('Resposta ao Impulso Atual');

axis([0 M-1 -0.1 0.3]);xlabel('n');ylabel('h[n]');

subplot (2, 1, 2); plot(w/pi, db); title('Magnitude em dB');grid

axis([0 1 -100 10]);xlabel('frequencia em pi unidades');ylabel('Decibeis');

M = 43

Asd = 47.8404

M = 44

Asd = 48.2131

M = 45

Asd = 48.8689

M = 46

Asd = 49.8241

M = 47

Asd = 51.0857

Page 149: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 149

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.

Page 150: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 150

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≤Ω≤

+jH aε , |Ω| ≤ ΩP

2

2 1|)(|0

AjH a ≤Ω≤ , Ω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|)(|

ε+=ΩjH a em Ω = ΩP

2

2 1|)(|

AjHa =Ω

em Ω = ΩS

Page 151: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 151

Os parâmetros ε e A estão relacionados aos parâmetros RP e AS na escala dB

como:

1101

1log10

10/

210 −=⇒+

−= PR

PR εε (Eq. 5.3)

e

20/

210 101

log10 SA

S AA

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 δδ

δδ +

=⇒=+

AA

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

Page 152: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 152

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:

∫∞

∞−

−= dtetftfLst

)()(

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

nsTenxsX, 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.

Page 153: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 153

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 jH2

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.

Page 154: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 154

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

sjHsHsH

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

1log10

e

ii) em Ω = ΩS, Sa AjH =Ω− 2

10 |)(|log10 ou

SN

cS

A=

ΩΩ+−

210)/(1

1log10

Page 155: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 155

Resolvendo as equações para N e Ω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

PC

P2 10/110 −

Ω=Ω

ou para satisfazer exatamente as especificações em ΩS:

N A

SC

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,0110

2,03.2 7,0

=−

=Ωπ

C

Page 156: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 156

Para satisfazer exatamente as especificações em ΩS temos:

5122,0110

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,01

1|)(|

Ω+

=ΩjHa

Como Ω = s/j, temos:

6666

2

641

1

21

1

5,01

1|)(|

ss

j

SsHa −

=−

=

+

=

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

Page 157: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 157

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)(

jsjsssH a −++++

=

)25,05,0)(5,0(

1)(

2 +++=

ssssH a

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 +++=

+++=

sssssssH a

Para transformar o filtro em digital, podemos usar o método de transformação

bilinear. Nele, consideramos:

2/1

2/1

1

121

1

sT

sTz

z

z

Ts

−+

=⇒+

−=

(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 consequê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

121

1

)()(1

12

z

zsaa sHzH

z

zs

Page 158: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 158

+

+−

+

+−

+

+−

=

25,01

125,0

1

125,0

1

12

125,0)(

1

12

1

1

1

1

z

z

z

z

z

z

zH a

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

bsH

+=)(

(Eq. 5.6)

Esse sistema pode ser caracterizado também pela equação de diferenças:

)(.)(.)(

txbtyadt

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

)( TnTyTnTynTyT

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:

Page 159: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 159

( ))1()(2

)1(2

1)(2

1 −+=−

−−

+ nxnxbT

nyaT

nyaT

cuja transformada Z é

( ) )(12

)(2

1)(2

1 11 zXzbT

zYzaT

zYaT −− +=

−−

+

Consequentemente, a função de transferência do filtro digital equivalente é:

1

1

)2/1(2/1

)1)(2/(

)(

)()(

−−+

+==

zaTaT

zbT

zX

zYzH

ou, equivalentemente:

az

z

T

bzH

+

+−

=

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

Ts

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

Page 160: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 160

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

jH22

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

xxNxT

N1,))(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 ε2TN2(x) também.

Page 161: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 161

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.

Page 162: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 162

A resposta quadrática de magnitude é dada por:

ΩΩ

+

c

N

a

U

jH22

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

kKkKN

−=

onde

S

PkΩΩ

= , 12 −

=A

e ∫−

=2/

0221

1)(

π

θθ

dsenx

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

Page 163: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 163

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:

)( jwjeGe

−− =θ

)(|)(|jweGjjwj 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

zzGZ

11

111

1)(

αα

onde |αk| < 1. Dependendo da escolha de N e αk, diversos mapeamentos podem

ser obtidos. O mais simples é (N = 1, α1 = α):

1

111

1)( −

−−−

−−

==z

zzGZ

αα

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.

Page 164: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 164

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

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.

Page 165: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 165

Tabela 5.1. Transformações em frequência para filtros digitais (filtro passa-baixa

protótipo tem frequência de corte em wc’).

Page 166: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 166

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

eHjw

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

eHjw

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.

Page 167: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 167

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.

Page 168: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 168

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 frequê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 frequência). Uma mudança de estação de

rádio nada mais é que uma mudança de frequê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:

∫∞

∞−

−=ℑ≡ dtetftfwFwtj π2)()()(

onde e-jwπ é o kernel da transformada de Fourier.

A transformada inversa de Fourier é definida como:

∫∞

∞−

− ≡ℑ≡ dwewFwFtfwtj π

π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πwt0.F(w)

Page 169: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 169

3) Deslocamento na frequência: f(t)ej2πw0t → 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 frequê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 sequê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 frequê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

knN

j

ekXN

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

knN

j

enxkX

π

, k = 0, ±1, .... (Eq.

6.2)

Page 170: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 170

onde x[n] é a sequê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 sequência

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

NWkXN

nx

Tanto x[n] quanto X[k] são sequê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

knWnxkX

Assim:

Page 171: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 171

∑∑==

=+++===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

23

0

.2

4 2)]([][]2[n

n

n

n jnxWnxX

∑∑==

−−=−==3

0

33

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:

Page 172: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 172

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:

Page 173: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 173

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:

Page 174: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 174

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 equidistantes 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 chamadas

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

Page 175: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 175

são claras na seguinte definição. A Transformada Discreta de Fourier de uma

sequência de N-pontos é dada por:

−≤≤

==senão

NkkXnxDFTkX

,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

NWkXN

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,

respectivamente, então temos:

X = WNx

e

x = (1/N)W*NX

Page 176: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 176

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

22cos][][

N

n N

mnjsen

N

mnnxmX

ππ

lembrando que j = √−1. Este é um conceito abstrato conveniente para nos ajudar

a comparar a relação de fase entre várias componentes senoidais do sinal.

A DFT apresenta algumas propriedades que são muito úteis no processamento

digital de sinais, como: simetria, linearidade, deslocamento no tempo e

frequê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 sequê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 sequência

Seja x[n] uma sequência periódica com coeficientes de Fourier X[m]. Assim:

Page 177: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 177

x[n – m] ↔ WNkmX[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 sequê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

knN

j

enxkX

π

Logo

*1

0

22*

1

0

)(2

* ][][][

=

=− ∑∑−

=

−−

=

−− N

n

nmN

jnNN

jN

n

mNnN

j

eenxenxmNX

πππ

*1

0

2

2* ][][

=− ∑−

=

−N

n

nmN

jnjeenxmNX

ππ

onde e-j2πk = cos(2πn) - jsen(2πn) = 1 – j.0 = 1. Assim:

*1

0

2

* ][][

=− ∑−

=

N

n

nmN

j

enxmNX

π

Se x[n] for real:

][][][1

0

2

*mXenxmNX

N

n

nmN

j

==− ∑−

=

−π

5) Convolução Periódica

∑−

=

↔−1

0

2121 ][][][][N

m

kXkXmnxmx

Page 178: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 178

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');

Page 179: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 179

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 frequê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:

Page 180: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 180

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:

Page 181: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 181

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

Page 182: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 182

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.

Page 183: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 183

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.

Page 184: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 184

Page 185: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 185

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

1n

nnenx

n

e seja x2[n] periódica com período fundamental N = 100, onde um período é

dado por:

≤≤

≤≤=

9926,0

250,][

3,0

21n

nnenx

n

a) Encontre DFTx1[n] e plote (usando a função stem) os gráficos de sua

magnitude e de sua fase.

b) Encontre DFTx2[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?

Page 186: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 186

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

Page 187: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 187

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

Page 188: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 188

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 sequê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

sequê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 sequência. O que difere

esses algoritmos é o tempo de resposta deles ou a chamada complexidade do

Page 189: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 189

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:

Page 190: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 190

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 sequência x[n] em duas

sequências: uma com os coeficientes de índice par e outra com os coeficientes

de índice ímpar. Como a quebra é em duas sequências, o algoritmo é conhecido

também como Radix-2. Algoritmos no qual a sequência é decomposta

sucessivamente em sequê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

Page 191: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 191

par, podemos considerar calcular X(k), separando x[n] em duas sequê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

212/

0

2 )](12[)](2[)(N

r

rk

N

k

N

N

r

rk

N WrxWWrxkX (Eq. 7.3)

Mas WN2 = WN/2 já que:

WN2 = e-2j(2π/N) = e-2j(π/(N/2)) = WN/2

Consequentemente, a Eq. 7.3 pode ser escrita como:

∑∑−

=

=

++=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)

Page 192: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 192

Cada parcela na Eq. 7.4 é reconhecida como uma DFT de N/2 pontos, sendo a

primeira parcela uma DFT de N/2 pontos dos pontos de índice par da sequência

original e o segundo termos uma DFT de N/2 pontos dos pontos de índice ímpar

da sequê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 WN0 e

somando o produto com G[0]. X[1] é obtido multiplicando H[1] por WN1 e

somando o resultado com G[1]. Para calcular X[4] deveríamos multiplicar H[4]

por WN4 e somar o resultado com G[4]. Contudo, como G[k] e H[k] são

Page 193: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 193

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 WN4 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)

Page 194: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 194

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 = WN2.

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).

Page 195: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 195

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

Page 196: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 196

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 WNr. 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:

WNN/2 = e-j(2π/N)N/2 = e-jπ = -1

o fator WNr+N/2 pode ser escrito como:

WNr+N/2 = WN

N/2.WNr = -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.

Page 197: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 197

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 sequê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]

Page 198: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 198

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 sequê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.

Page 199: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 199

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 sequência x[n], então o

valor da sequê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 subsequê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 sequência de saída. Esses algoritmos são chamados de

algoritmos de decimação em frequência. Todo o processo é bem semelhante à

decimação em tempo.

Page 200: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 200

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

Page 201: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 201

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 frequê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 frequê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

Page 202: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 202

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.

Page 203: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 203

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

knnxkwky

1 2

)1)(12(cos)()()(

π, k = 1, ...., N

Onde:

≤≤

==

NkN

kk

kw

22

11

)(

Page 204: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 204

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

Page 205: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 205

8. Análise Wavelet Em 1807, Joseph Fourier propôs sua análise de frequência em sinais. Através

dessa análise, um sinal no domínio do tempo poderia ser convertido para o

domínio da frequência e vice-versa. Dessa forma, características do sinal podem

ser observadas de uma maneira mais apropriadas.

A transformada de Fourier é definida como:

∫∞

∞−

−= dtetfFtj πωω 2)()(

(Eq. 8.1)

sendo a transformada inversa:

∫∞

∞−

= ωωπ

πωdeFtf

tj 2)(

2

1)( (Eq. 8.2)

A Transformada de Fourier representa no domínio da frequê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 frequência especifica as amplitudes relativas das componentes de frequê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).

Page 206: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 206

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 frequência no sinal. Assim, ela é apropriada para os chamados sinais

estacionários: sinais cuja frequê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).

Page 207: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 207

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,

Page 208: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 208

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 frequências

ou em intervalos menores quando queremos informações mais precisas sobre

altas frequê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.

Page 209: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 209

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 frequências do sinal, usamos uma alta escala para ter

uma visão global não detalhada do sinal. Para análise de altas frequê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.

Page 210: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 210

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 frequência.

Page 211: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 211

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.

Page 212: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 212

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

frequência) sejam deslocadas por passos pequenos, e wavelets largas (de baixa

frequê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

frequências. No entanto, na maioria dos casos práticos, as informações de baixa

frequência são as mais importantes. Assim, um sinal pode ser dividido em duas

partes:

• Aproximações: componentes de alta escala e baixa frequência do sinal

Page 213: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 213

• Detalhes: componentes de pequena escala e alta frequência do sinal.

Essa divisão nada mais é do que a divisão de um sinal em baixas e altas

frequê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) frequê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 frequê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).

Page 214: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 214

Todo esse processo pode ser repetido em cascata, tratando, como sugerido,

apenas os componentes de baixa frequê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 frequências com o mesmo

processo se repetindo para as componentes de baixa frequê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.

Page 215: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 215

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

frequê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

Page 216: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 216

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 frequê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]

Page 217: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 217

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.

Page 218: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 218

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

Page 219: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 219

“mirror” vem do fato de que a magnitude da resposta em frequência do filtro HPF

é uma imagem espelhada da magnitude da resposta em frequê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 frequê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]

Page 220: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 220

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.

Page 221: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 221

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');

Page 222: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 222

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);

Page 223: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 223

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:

Page 224: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 224

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.

Page 225: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 225

Page 226: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 226

Imagem original Imagem sintetizada

Page 227: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 227

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

Page 228: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 228

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.

Page 229: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 229

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.

Page 230: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 230

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.

Page 231: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 231

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.

Page 232: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 232

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

Page 233: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 233

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

Page 234: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 234

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.

Page 235: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 235

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

Page 236: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 236

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.

Page 237: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 237

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 frequê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 frequê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 frequências

Page 238: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 238

de forma separada, mas, sim, à composição delas. Seja L a componente de

baixa frequência, M a média frequência e H a alta frequência, temos células

fotossensíveis às combinações:

L - M

H – (L + M)

L + M

As altas frequências (baixo comprimento de onda) correspondem ao tom de azul

(B), as médias aos tons de verde (G) e as altas frequê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.

Page 239: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 239

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.

Page 240: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 240

No sistema RGB, o branco corresponde à cor (255, 255, 255) e o preto à cor (0,

0, 0). Por exemplo, o vermelho puro seria (255, 0, 0), o verde puro é (0, 255, 0) e

o azul é (0, 0, 255). 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)

Page 241: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 241

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 consequê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.

Page 242: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 242

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

frequê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.

Page 243: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 243

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.9. 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.

Page 244: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 244

No caso de imagens, o pixel a ser processado de deve ser casado com o centro

da matriz do filtro (Fig. 9.10). O resultado da filtragem para esse pixel será o

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

Page 245: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 245

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).

Page 246: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 246

Fig. 9.11. A imagem original (em cinza) é estendida (parte em branco) para

poder ser processada pelo filtro (em destaque no canto superior esquerdo).

Dentre os filtros baseados em 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 frequê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 frequências (frequências entre –w e w) e eliminar as altas frequê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 frequências, mas as atenua.

Page 247: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 247

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 frequê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 frequê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

Page 248: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 248

filtro Laplaciano é um exemplo de um filtro passa-alta (Fig 9.14b). Como um filtro

passa-alta, sua função é deixar passar as altas frequências e eliminar as baixas

frequê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 frequê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 frequê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.

Page 249: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 249

3) Filtro Passa-Faixa

Esse filtro permite a passagem de frequências dentro de um intervalo e cortam

as frequê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 frequê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.

Page 250: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 250

É 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.

Page 251: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 251

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.

Page 252: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 252

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.

Page 253: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 253

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:

Page 254: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 254

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)));

Page 255: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 255

>> 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.

Page 256: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 256

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.

Page 257: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 257

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.

Page 258: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 258

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 sequê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 sequê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

Page 259: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 259

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 sequência “01”, ela pode ser decodificada em AB

ou C.

Page 260: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 260

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 sequência de bits, precisamos ler o

próximo bit para saber se ele é zero ou um, denotando o encerramento ou não

da sequê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.

Page 261: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 261

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,

Page 262: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 262

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

OriginalArquivodooComprimentC

___

___=

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.

Page 263: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 263

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:

Page 264: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 264

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)

Page 265: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 265

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.

Page 266: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 266

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 sequência. Por

exemplo, para a sequê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.

Page 267: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 267

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.

Page 268: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 268

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

Page 269: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 269

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.

Page 270: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 270

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:

Page 271: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 271

• 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

Page 272: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 272

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 frequê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 sequência. A DCT, no entanto, tem

Page 273: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 273

propriedades de compactação de energia, com apenas uns poucos

coeficientes da transformada representando a maior parte da

energia da sequê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

Page 274: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 274

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

Page 275: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 275

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);

Page 276: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 276

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.

Page 277: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 277

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 sequê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.

Page 278: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 278

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:

Page 279: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 279

• 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.

Page 280: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 280

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.

Page 281: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 281

Existem diferentes formas de se detectar movimento de objetos numa sequê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

12

,...,1,0)),12](2

12[2

cos(n

kki

nii

nk

nxS

π

E a sua inversa, conhecida como IMDCT é dada por:

1,...,1,0,))12](2

12[2

cos(12/

0

−=+++= ∑−

=

nkin

kn

Sxn

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

Page 282: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 282

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

Page 283: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 283

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.

Page 284: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 284

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:

Page 285: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 285

• Faixa de frequência audível dos seres humanos;

Faixa de frequência audível humana: O ouvido humano, devido às suas

limitações físicas, é capaz de detectar sons em uma faixa de frequê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 frequências mais altas). Assim, não faz

sentido armazenar dados referentes a sons fora desta faixa de

frequê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 frequência máxima. Ou seja, neste caso, como a frequê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 frequência fora da faixa de interesse, neste caso, acima

de 20 Khz.

• Limiar de audição na faixa de frequência audível;

Limiar de audição na faixa de frequência audível: Outro fator utilizado pela

codificação MP3 é a curva de percepção da audição humana dentro da

faixa de frequê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 frequê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.

Page 286: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 286

• Mascaramento em frequência e mascaramento temporal.

Mascaramento em frequê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 frequência ou no

tempo. O mascaramento em frequência ocorre quando um som que

normalmente poderia ser ouvido é mascarado por outro, de maior

intensidade, que se encontra em uma frequência próxima. Ou seja, o

limiar de audição é modificado (aumentado) na região próxima à

frequência do som que causa a ocorrência do mascaramento, sendo que

isto se deve à limitação da percepção de frequências do ouvido humano.

O mascaramento em frequência depende da frequê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 frequência e descartar sinais que não serão

audíveis devido a este fenômeno. Além do mascaramento em frequê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

frequê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.

Page 287: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 287

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)

Page 288: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 288

• 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:\MATLABR2008b\work\video1.avi'

FileSize: 2997760

FileModDate: '03-mai-2010 19:53:44'

NumFrames: 13

FramesPerSecond: 15

Width: 320

Height: 240

ImageType: 'truecolor'

VideoCompression: 'none'

Quality: 4.2950e+007

NumColormapEntries: 0

Para acessar as 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:

Page 289: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 289

>> 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);

Page 290: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 290

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).

Page 291: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 291

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).

Page 292: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 292

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

Page 293: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 293

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:

Page 294: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 294

>> 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).

Page 295: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 295

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 frequências

centralizadas:

>> plot (abs(fftshift(som_spec)));

Page 296: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 296

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:

Page 297: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 297

Fig. 10.13. (coluna da esquerda) Sinal original e sua transformada e (coluna da

direita) sinal filtrado e sua transformada.

Page 298: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 298

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 frequências mudam pelo tempo.

>> s = spectrogram(z, 1024);

>> waterfall(abs(s)');

Page 299: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 299

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)');

Page 300: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 300

>> s = spectrogram(z, 8192);

>> figure, waterfall(abs(s)');

Page 301: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 301

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.

Page 302: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 302

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().

Page 303: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 303

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.

Page 304: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 304

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.

Page 305: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 305

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 frequê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 sequência de gestos os quais resultam em uma

forma de onda acústica que contém a informação da mensagem original.

Page 306: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 306

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 frequência) e

transformações. Por fim, o sinal transformado é utilizado novamente pelo

homem ou por algum dispositivo.

Page 307: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 307

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;

Page 308: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 308

- 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);

Page 309: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 309

plot(f, abs(spect(1:128)))/max(abs(spect(1:128)));

xlabel ('frequencia');

subplot(2,1,2);

filt_spect=fft(filt_sp, 256);

plot(f, abs(filt_spect(1:128))/max(abs(filt_spect(1:128))));

wavwrite (filt_sp, fs, 'casa1_firfilt.wav');

Gerando como resposta o seguinte sinal:

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:

Page 310: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 310

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).

Page 311: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 311

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.

Page 312: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 312

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 sequência de números: x(n). Esta sequência pode ser vista

como uma sequê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.

Page 313: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 313

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. Sequê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.

Page 314: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 314

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 frequências mais altas. Uma

representação fiel da voz exige uma taxa de amostragem de, pelo menos, 20

kHz. As frequê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

Page 315: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 315

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

Page 316: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 316

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 sequê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.

Page 317: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 317

a)

b)

Fig. 11.11. Quantizadores de 3 bits: a) mid-riser e b) mid-tread.

Page 318: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 318

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.

Page 319: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 319

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 frequê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.

Page 320: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 320

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 frequê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 frequê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 sequê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.

Page 321: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 321

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 sequê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:

Page 322: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 322

∑∞

−∞=

−=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 frequê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.

Page 323: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 323

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) = anu(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:

11

1)(

−−=

azzH , ROC = |z|>|a|

Page 324: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 324

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 frequê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 frequê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

Page 325: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 325

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-frequência: altas frequências implicam uma taxa alta de

passagem pelo zero e baixas frequências implicam numa taxa baixa de

passagem pelo zero. Assim, há uma correlação forte entre taxa de passagem

Page 326: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 326

pelo zero e a distribuição de energia com a frequê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 frequê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 )()()(

Page 327: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 327

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');

Page 328: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 328

xlabel('Time (s)');

ylabel('Amplitude');

%

% calculate autocorrelation

r=xcorr(x,ms20,'coeff');

%

% plot autocorrelation

d=(-ms20:ms20)/fs; % times of delays

subplot(2,1,2);

plot(d,r);

legend('Autocorrelation');

xlabel('Delay (s)');

ylabel('Correlation coeff.');

% Estimativa da frequencia fundamental

ms2=fs/1000; % 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=%gHz\n',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

Page 329: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 329

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,

Page 330: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 330

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);

Page 331: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 331

subplot(3,1,2);

plot(f,20*log10(abs(Y(1:length(f)))+eps));

legend('Spectrum');

xlabel('Frequency (Hz)');

ylabel('Magnitude (dB)');

% cepstrum

C=fft(log(abs(Y)+eps));

% plotagem entre 1ms (=1000Hz) e 20ms (=50Hz)

q=(ms1:ms20)/fs;

subplot(3,1,3);

plot(q,abs(C(ms1:ms20)));

legend('Cepstrum');

xlabel('Quefrency (s)');

ylabel('Amplitude');

[c,fx]=max(abs(C(ms1:ms20)));

fprintf('Fx=%gHz\n',fs/(ms1+fx-1));

Frequência estimada: 667.171Hz

Page 332: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 332

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).

Page 333: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 333

Page 334: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 334

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?

Page 335: Processamento Digital de Sinais

Processamento Digital de Sinais – Prof. Carlos Alexandre Barros de Mello Página 335

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