1 Prof. Marcus Vinicius Lamar Fundamentos de Codificação de Sinais.
Transcript of 1 Prof. Marcus Vinicius Lamar Fundamentos de Codificação de Sinais.
1
Prof. Marcus Vinicius Lamar
Fundamentos de Fundamentos de Codificação de SinaisCodificação de Sinais
TE073 – Processamento Digital de Sinais II 2
Setor de TecnologiaUniversidade Federal do ParanáDep. Engenharia Elétrica
1. Introdução
-Importância da codificação nos dias de hoje:-Internet, TV, telefone, celular, modem, ...
Compressão de Dados: Arte ou Ciência de representar a informação de uma forma
compacta.Identificando e usando estruturas presentes nos dados ouexplorando características do usuário final.
Objetivo: Transmissão ou Armazenamento eficiente.
TE073 – Processamento Digital de Sinais II 3
Setor de TecnologiaUniversidade Federal do ParanáDep. Engenharia Elétrica
Ex.:3 minutos de música qualidade de CD – estéreo necessita:
Mibytesbytescanaisseg amostrabytes
segamostras 28,30000.752.312244100603
10 Fotos 10x15cm com resolução de 600dpi(240dpc) coloridas:
10 10 240 15 240 3 247,19pixel pixel bytescm cm pixelfotos cm cm Mibytes
TE073 – Processamento Digital de Sinais II 4
Setor de TecnologiaUniversidade Federal do ParanáDep. Engenharia Elétrica
2 horas de vídeo tamanho VGA true color necessita:
Gibytessegsegquadros
quadropixel
pixelbits 32,148606022448064024
Ou
segMibitssegquadros
quadropixel
pixelbits /75,1682448064024
TE073 – Processamento Digital de Sinais II 5
Setor de TecnologiaUniversidade Federal do ParanáDep. Engenharia Elétrica
A tecnologia que define a capacidade de armazenamento e/ou transmissão está em constante crescimento, porém a necessidade humana cresce 2 vezes mais rápido. Lei de Parkinson: “O trabalho se expande de modo a ocupar todo tempo disponível”
Além do mais, existem limites a serem atingidos.Transmissão: propriedades do canal (banda) e ruídoArmazenamento: limites físicos (átomo, elétron, sub-atômicas)
TE073 – Processamento Digital de Sinais II 6
Setor de TecnologiaUniversidade Federal do ParanáDep. Engenharia Elétrica
Primeira forma de codificação/compressão de sinais:Código Morse (Samuel Morse, metade século XIX)-A cada letra é alocado um símbolo (pontos e linhas) cujo comprimento é inversamente proporcional à sua probabilidade de ocorrência. Aumentando assim a velocidade média da transmissão
Ex: e: a: – q: – – – j: – – – >Inspirou o código de Huffman
Outros: Alfabeto Braille (array 2x3)Logo posso representar 26=64 símbolos, 26 letrasBraille 2 usa os 38 restantes para codificar números e palavras freqüentemente
usadas.
TE073 – Processamento Digital de Sinais II 7
Setor de TecnologiaUniversidade Federal do ParanáDep. Engenharia Elétrica
Usou-se nesses exemplos a estrutura estatística para fazer a compressão.Outros tipos de estruturas:-Voz: produzida pelo aparelho vocal humano é limitada, logo há umaestrutura que pode ser utilizada. Vocoder LPC (1936/39, Bell Labs.) Ex.:Spelling&Spell (E.T.)
Outra forma de compressão explora as limitações do consumidor finaldo sinal.Ex.: Humanos: não conseguem ouvir altas frequência. que cães podem.Visão humana também é limitada em resolução espacial, temporale de crominâncias.
Se algo não é perceptível para que preservá-lo?
TE073 – Processamento Digital de Sinais II 8
Setor de TecnologiaUniversidade Federal do ParanáDep. Engenharia Elétrica
1.1. Técnicas de Compressão
2 algoritmos: Codificador/Compressor e Decodificador/Descompressor
coder decoderX Xc YCanals/ ruído
X=Y
XY
Codificação sem perdas (lossless compression)
Codificação com perdas (lossy compression)
TE073 – Processamento Digital de Sinais II 9
Setor de TecnologiaUniversidade Federal do ParanáDep. Engenharia Elétrica
1.1.1. Codificação sem Perdas
Não há perda de informação durante o processo de Codificação/Decodificação.
Usado em sistemas onde erros não são tolerados: - Compressão de arquivos de texto, executáveis, dados
“Alteraxão da enforcação não é bolerada”
- Compressão de imagens médicasVidas em risco
TE073 – Processamento Digital de Sinais II 10
Setor de TecnologiaUniversidade Federal do ParanáDep. Engenharia Elétrica
1.1.2. Codificação com Perdas
Há algum tipo de perda de informação durante o processo de Codificação/Decodificação. O dado original dificilmente pode serrecuperado.
O ganho de ter distorção no dado recuperado é um ganho decodificação muito maior (maior compressão).
Ex.: Voz, não necessita ser exatamente igual, basta ser inteligível. Imagem, basta ter qualidade aceitável
Necessitamos de meios para medir o desempenho.
TE073 – Processamento Digital de Sinais II 11
Setor de TecnologiaUniversidade Federal do ParanáDep. Engenharia Elétrica
1.1.3. Medidas do desempenho
Medidas de desempenho de um algoritmo de codificação:
-Complexidade computacional
-Aplicabilidade em tempo-real (ex:celular, HDTV,etc)
-Medida pelo tempo gasto em uma determinada máquina
-Medida pelo número e tipo de operações matemáticas e lógicas (,,,log,raiz, sen, if, etc) e memória requerida.
TE073 – Processamento Digital de Sinais II 12
Setor de TecnologiaUniversidade Federal do ParanáDep. Engenharia Elétrica
-Ganho de codificação (taxa de compressão)
Ex.: imagem 256x256 pixels a 8 bits/pixel (gray) necessita 65536 bytes comprimido resultou um arquivo de 16384 bytes
-Porcentagem do resultante em relação ao original: 75%-Proporção 4:1-Taxa de bits: 2 bits/pixel
-Qualidade da Reconstrução: Sem Perdas: Qualidade total Com perdas: Há distorção do sinal recuperado, medida atravésde EMQ, SNR, PSNR, distâncias: Euclidiana, Mahalanobis, etc.
TE073 – Processamento Digital de Sinais II 13
Setor de TecnologiaUniversidade Federal do ParanáDep. Engenharia Elétrica
1.2. Modelagem e Codificação
Um sistema de codificação pode ser dividido em 2 partes:-Modelagem-Codificação
Criar um modelo para o dado e uma descrição sobre como o dado real difere do modelo.
TE073 – Processamento Digital de Sinais II 14
Setor de TecnologiaUniversidade Federal do ParanáDep. Engenharia Elétrica
Exemplo 1:
Considere a seguinte seqüência de números {x1,x2,x3,...}:9 , 11 , 11 , 11 , 14 , 13 , 15 , 17 , 16 , 17 , 20 , 21
Para transmitir esta sequência necessitamos representar cada umusando 5 bits por amostra. Totalizando: 12x5=60 bits
TE073 – Processamento Digital de Sinais II 15
Setor de TecnologiaUniversidade Federal do ParanáDep. Engenharia Elétrica
0
5
10
15
20
25
0 2 4 6 8 10 12 14
Observando sua representação gráfica:
Nota-se que podemos modelar estes dados como: 8ˆ nxn
TE073 – Processamento Digital de Sinais II 16
Setor de TecnologiaUniversidade Federal do ParanáDep. Engenharia Elétrica
Logo a estrutura dos dados pode ser caracterizada por uma eq.O resíduo do dado real e o modelo pode ser calculado como:
nnn xxe ˆ Que resulta na sequência:
0 , 1 , 0 , –1 , 1 , –1 , 0 , 1 , –1 , –1 , 1 , 1
Que pode ser representada com apenas 2 bits / amostra
Assim, codificamos o sinal através do armazenamento/transmissão do modelo e do resíduo.
Resultado: 3 bits modelo + 12x2 resíduo: total: 27 bitsCompressão de 2,22:1 ou 2,25 bits/amostra
TE073 – Processamento Digital de Sinais II 17
Setor de TecnologiaUniversidade Federal do ParanáDep. Engenharia Elétrica
Ex. 2: Considere a sequência27 , 28 , 29, 28 , 26 , 27, 29 , 28 , 30 , 32 , 34 , 36 , 38
Não há um modelo simples para representar.Porém observa-se pelo gráfico que os valores seguintes são próximos dos anteriores:
0
5
10
15
20
25
30
35
40
0 2 4 6 8 10 12 14
Requerendo: 13 x 6 = 78 bits
TE073 – Processamento Digital de Sinais II 18
Setor de TecnologiaUniversidade Federal do ParanáDep. Engenharia Elétrica
Enviando o primeiro valor e depois as diferenças entre o atual e o seguinte obtemos a sequência:27, 1, 1, -1, -2, 1, 2, -1, 2, 2, 2, 2, 2
Que pode ser enviada usando: 5 + 3 x 12=41 bits
Técnica chamada: Codificação Preditiva
TE073 – Processamento Digital de Sinais II 19
Setor de TecnologiaUniversidade Federal do ParanáDep. Engenharia Elétrica
Ex.3: Modelo estatístico
Considere a seguinte sequência:a_barayaran_array_ran_far_faar_faaar_away
Há 8 diferentes símbolos, que requerem 3 bits p/ representaçãoResultando em 41x3=123 bits
a 1
_ 001
b 01100
f 0100
n 0111
r 000
w 01101
y 0101
Porém, se utilizarmos a tabela:
Necessitamos 106 bits p/ representar asequência,O que gera uma taxa de 2.58 bits/símbolo
TE073 – Processamento Digital de Sinais II 20
Setor de TecnologiaUniversidade Federal do ParanáDep. Engenharia Elétrica
Em textos é comum encontrarmos palavras que se repetem com frequência, que podem ser agrupadas em um dicionário e representadas apenas pelo índice neste dicionário. (LZ77, LZW)
Decompor os dados em diversas componentes, analisando os modelos para cada componente, é outra alternativa (Subbandas,Transformadas, Wavelets)
Padrões internacionais foram criados de modo a permitir que diferentes pudessem implementações de codificadores comunicar-se entre si. JPEG, MPEG, H.261, H.263, etc...
TE073 – Processamento Digital de Sinais II 21
Setor de TecnologiaUniversidade Federal do ParanáDep. Engenharia Elétrica
2. Conceitos Matemáticos Importantes
- Pré-requisito: Conhecimentos de Probabilidade e Estatística
2.1. Introdução à Teoria da Informação:
Claude Elwood Shannon (Bell Labs) criou esta área do conhecimento em 1948 com a publicação de um artigo que define os conceitos mais básicos da Teoria da Informação.
C.E.Shannon. A Mathematical Theory of Communication. Bell System Technical Journal. 27:379-423, 623-656, 1948
TE073 – Processamento Digital de Sinais II 22
Setor de TecnologiaUniversidade Federal do ParanáDep. Engenharia Elétrica
Quantidade de Informação: )(log)(
1log)( AP
APAi bb
Indicando que dado um evento A com probabilidade de ocorrência P(A). A quantidade de informação que ele carrega é inversamente proporcional à sua probabilidade:P(A)=1 (evento sempre ocorre) i(A)=0P(A)=0 (evento nunca ocorre) i(A)=infinito
Dado 2 eventos independentes A e B: P(A,B)=P(A).P(B)
)()()(
)(log)(log)(
))()((log)()(
1log)(
BiAiABi
BPAPABi
BPAPBPAP
ABi
bb
bb
TE073 – Processamento Digital de Sinais II 23
Setor de TecnologiaUniversidade Federal do ParanáDep. Engenharia Elétrica
A unidade de informação depende da base do log:
base 2 bits base e nats base 10 hartleys
Ex.1: Lançamento de uma moeda:2
1)()( KPCP
Logo: bitKiCi 1)(log)()( 21
2
Ex.2: Lançamento de uma moeda viciada:8
7)(
8
1)( KPCP
Logo:bitsKi
bitsCi
193.0)(log)(
3)(log)(
87
2
81
2
Maior informação
TE073 – Processamento Digital de Sinais II 24
Setor de TecnologiaUniversidade Federal do ParanáDep. Engenharia Elétrica
Considere um conjunto de eventos independentes Ai que sãoResultados de um experimento S iAS
A média da quantidade de informação associada com este experimento aleatório é dado por:
)(log).()().( ibiii APAPAiAPH
H é chamada de Entropia associada ao experimento.
Shannon demonstrou que se o experimento é uma fonte que gera como saídas símbolos Ai a partir de um conjunto A, então a entropia é uma medida da média do número de símbolos binários necessários para codificar a saída desta fonte.
TE073 – Processamento Digital de Sinais II 25
Setor de TecnologiaUniversidade Federal do ParanáDep. Engenharia Elétrica
Shannon mostrou, ainda, que o melhor que um sistema de compressão sem perdas pode fazer é codificar a saída de uma fonte com o número de bits médio igual a entropia da fonte.
O conjunto de símbolos A é chamado alfabeto da fonte e os símbolos são chamados letras.
TE073 – Processamento Digital de Sinais II 26
Setor de TecnologiaUniversidade Federal do ParanáDep. Engenharia Elétrica
Para uma fonte S com alfabeto A={1,2,...,m} que gera umasequência {X1,X2,...} a entropia é dado por:
nn
Gn
SH1
lim)(
mi
i
mi
i
mi
innbnnn
n
n
iXiXiXPiXiXiXPG1
1
2
21 1 122112211 ,...,log.,...,...
Onde:
e {X1,X2,...,Xn} é uma sequência de tamanho n gerada pela fonte.
Se cada elemento for independente e identicamente distribuído (iid), prova-se:
mi
ibn iXPiXPnG
1
1 11111 log.
TE073 – Processamento Digital de Sinais II 27
Setor de TecnologiaUniversidade Federal do ParanáDep. Engenharia Elétrica
Logo a expressão para a entropia da fonte torna-se:
)(log).()( 11 XPXPsH b Entropia de primeira-ordem
TE073 – Processamento Digital de Sinais II 28
Setor de TecnologiaUniversidade Federal do ParanáDep. Engenharia Elétrica
Assumindo que a sequência é iid, a entropia da sequência é adada pela entropia de primeira-ordem:
símbolobitsiPiPHi
/25.3)(log).(10
12
Ex.: Estimando a entropiaConsidere a sequência: 1 2 3 2 3 4 5 4 5 6 7 8 9 8 9 10
Assumindo que a frequência de ocorrência de cada número érefletido pelo número que o mesmo aparece na sequência, podemosestimar a probabilidade de cada símbolo como:
16
2)9()8()5()4()3()2(
16
1)10()7()6()1(
PPPPPP
PPPP
TE073 – Processamento Digital de Sinais II 29
Setor de TecnologiaUniversidade Federal do ParanáDep. Engenharia Elétrica
Entretanto, supondo que exista uma correlação entre uma amostra e a anterior, pode-se remover esta correlação fazendo adiferença entre a atual e a anterior obtendo o sinal residual:
1 1 1 –1 1 1 1 –1 1 1 1 1 1 –1 1 1
Esta sequência tem apenas 2 símbolos com probabilidades:
16
3)1(
16
13)1( PP
Resultando em uma entropia:
simbolobitsH /69621.016
3log.
16
3
16
13log.
16
1322
Obviamente o receptor deve conhecer o modelo utilizado.
TE073 – Processamento Digital de Sinais II 30
Setor de TecnologiaUniversidade Federal do ParanáDep. Engenharia Elétrica
Um modelo pode ser:-Estático: quando não varia com n-Adaptativo: quando variar com n
Logo: conhecendo alguma coisa sobre a estrutura dos dadospode ajudar a “reduzir a entropia”.
Na verdade a Entropia não é alterada, pois ela é uma medida da quantidade de informação gerada pela fonte, que não é conhecível.
O que se reduz é a nossa estimativa da entropia, uma vez que qualquer pista que se tenha sobre a estrutura dos dados nos ajudaa estimar a real entropia da fonte. ninfinito
TE073 – Processamento Digital de Sinais II 31
Setor de TecnologiaUniversidade Federal do ParanáDep. Engenharia Elétrica
Ex.2: Considere a sequência: 1 2 1 2 3 3 3 3 1 2 3 3 3 3 1 2 3 3 1 2
Qual a estrutura?
2
1)3(
4
1)2()1( PPP Resultando em 1.5 bits/símbolo de entropia
Se considerarmos blocos de 2 teremos apenas 2 blocos:
2
1)33(
2
1)21( PP Resultando em uma entropia de 1 bit/símbolo
Como temos 20 símbolos, necessitamos de 30 bits p/ representa-la.
Como temos 10 símbolos, logo necessitamos 10 bits p/ representa-la.
TE073 – Processamento Digital de Sinais II 32
Setor de TecnologiaUniversidade Federal do ParanáDep. Engenharia Elétrica
A teoria diz que podemos sempre extrair a estrutura dosdados considerando blocos de tamanho cada vez maiores.Na prática há limitações.
Na prática, podemos tentar superar estas limitações obtendo um modelo preciso para os dados e codificara fonte com respeito a este modelo.
TE073 – Processamento Digital de Sinais II 33
Setor de TecnologiaUniversidade Federal do ParanáDep. Engenharia Elétrica
2.3. Modelos
Quanto mais o modelo se aproxima do real modelo paraa fonte dos dados, melhor será a codificação.
•Modelos Físicos: •Baseados em características físicas da fonte.•Difíceis de serem extraídos•Ex.: Modelo do trato vocal
•Modelos Probabilísticos:•Baseados na observação das características estatísticas dos dados•Pode ser complexo se fontes forem não independentes e formas de correlacionar as amostras forem necessárias
TE073 – Processamento Digital de Sinais II 34
Setor de TecnologiaUniversidade Federal do ParanáDep. Engenharia Elétrica
• Modelo de Markov•Andrei Andrevich Markov (1856-1922)•Tipo específico de processo de Markov:
Cadeia de Markov a tempo discreto
Seja {xn} uma sequência de observações.
Esta sequência é dita seguir o modelo de Markov de k-ésima ordem, se:
,....),...|(),...|( 11 knnnknnn xxxPxxxP
Isto é, o conhecimento das últimos k símbolos é equivalente ao conhecimento de todo o passado do processo.
Os valores tirados do conjunto {xn-1,...,xn-k} são os estados do processo
Se o alfabeto tem tamanho l, então teremos lk estados.
TE073 – Processamento Digital de Sinais II 35
Setor de TecnologiaUniversidade Federal do ParanáDep. Engenharia Elétrica
O modelo mais popularmente usado é o Modelo de Markovde primeira ordem, isto é:
...),,|()|( 3211 nnnnnn xxxxPxxP
O modelo diz que a amostra atual depende de alguma formaapenas da amostra anterior, sem especificar essa dependência.
TE073 – Processamento Digital de Sinais II 36
Setor de TecnologiaUniversidade Federal do ParanáDep. Engenharia Elétrica
Ex.: Codificação de imagem binária (preto e branco) (1 bit/pixel)Sabemos que a ocorrência de um pixel branco depende, em algum grau, se o pixel atual é branco ou preto.Então podemos modelar o processo como uma cadeia de Markov Discreta,Definindo:
2 estados Sw e Sb para designar que o pixel atual é branco ou preto.Probabilidades de transição de estados: P(w|b) P(b|w)Probabilidade de cada estado: P(Sb) e P(Sw)
Sw Sb
P(w|w) P(w|b)
P(b|w)
P(b|b)
TE073 – Processamento Digital de Sinais II 37
Setor de TecnologiaUniversidade Federal do ParanáDep. Engenharia Elétrica
A entropia de um processo de estados finitos é dada pelamédia da entropia de cada estado:
M
iii SHSPH
1
)().(
TE073 – Processamento Digital de Sinais II 38
Setor de TecnologiaUniversidade Federal do ParanáDep. Engenharia Elétrica
No exemplo da imagem binária:
)|(log).|()|(log).|()( 22 wwPwwPwbPwbPSH w
Onde: )|(1)|( wbPwwP
Analogamente:
)|(log).|()|(log).|()( 22 bbPbbPbwPbwPSH b
Onde: )|(1)|( bwPbbP
TE073 – Processamento Digital de Sinais II 39
Setor de TecnologiaUniversidade Federal do ParanáDep. Engenharia Elétrica
Numericamente, dados:31
1)(
31
30)( bw SPSP
3.0)|(7.0)|(01.0)|(99.0)|( bwPbbPwbPwwP
Calculo da Entropia usando o modelo Probabilístico:
simbolobitsH /20559.031
1log.
31
1
31
30log.
31
3022
Calculo da Entropia usando o modelo de Markov:
08079.001.0log01.099.0log99.0)(
88129.07.0log7.03.0log3.0)(
22
22
w
b
SH
SH
Logo:
símbolobitsH /10661.088129.031
108079.0
31
30
Logo modelo de Markov modelou melhor a entropia da fonte
TE073 – Processamento Digital de Sinais II 40
Setor de TecnologiaUniversidade Federal do ParanáDep. Engenharia Elétrica
2.3.4. Modelo de fonte composta
Em muitas aplicações é difícil usar um único modelo paradescrever a fonte. Pode-se usar então a composição de vários modelos de fontes de modo a representar uma fonte mais complexa
Fonte 1
Fonte 2
Fonte n
TE073 – Processamento Digital de Sinais II 41
Setor de TecnologiaUniversidade Federal do ParanáDep. Engenharia Elétrica
2.4. CodificaçãoAlocação de um código binário a um símbolo de um alfabeto.
Idéia do código Morse, alocar menores códigos para símbolosmais frequentes, de modo a diminuir a taxa.
Problema: Unicidade da decodificação
TE073 – Processamento Digital de Sinais II 42
Setor de TecnologiaUniversidade Federal do ParanáDep. Engenharia Elétrica
Ex.:
Símbolo Probabilidade
Código 1
Código 2
Código 3
Código 4
a1 0.5 0 0 0 0
a2 0.25 0 1 10 01
a3 0.125 1 00 110 011
a4 0.125 10 11 111 0111Comprimento Médio(l) 1.125 1.25 1.75 1.875
4
1
)().(i
ii anaPl
43
Codificação de HuffmanCodificação de Huffman
TE073 – Processamento Digital de Sinais II 44
Setor de TecnologiaUniversidade Federal do ParanáDep. Engenharia Elétrica
Codificação Huffman
O processo de Huffman é baseado em 2 observações:
Símbolos que ocorrem mais freqüentemente terão um código menor que os símbolos que ocorrem menos freqüentemente.
Os dois símbolos que ocorrem com menor freqüência terão o mesmo tamanho.
TE073 – Processamento Digital de Sinais II 45
Setor de TecnologiaUniversidade Federal do ParanáDep. Engenharia Elétrica
Codificação Huffman com Probabilidade da Fonte Conhecida
Exemplo 3.2.1: Dado um alfabeto A com as seguintes letras {a1, a2, a3, a4, a5} com a distribuição de probabilidade mostrada na tabela abaixo:
Letra Probabilidade Códigoa2 0.4 c(a2)a1 0.2 c(a1)a3 0.2 c(a3)a4 0.1 c(a4)a5 0.1 c(a5)
Entropia: 2.122 bits/símbolo
TE073 – Processamento Digital de Sinais II 46
Setor de TecnologiaUniversidade Federal do ParanáDep. Engenharia Elétrica
2
1
3
4
5
(0.4)
(0.2)
(0.2)
(0.1)
(0.1)
a
a
a
a
a
2
1
3
4
(0.4)
(0.2)
(0.2)
(0.2)
a
a
a
a
3
2
(0.6)
(0.4)
a
a
2
3
1
(0.4)
(0.4)
(0.2)
a
a
a
1
2
1
3
4
5
(0.4)
(0.2)
(0.2)
(0.1)
(0.1)
a
a
a
a
a
2
1
3
4
(0.4)
(0.2)
(0.2)
(0.2)
a
a
a
a
3
2
(0.6)
(0.4)
a
a
2
3
1
(0.4)
(0.4)
(0.2)
a
a
a
0
1
10
0
01
Huffman coder
TE073 – Processamento Digital de Sinais II 47
Setor de TecnologiaUniversidade Federal do ParanáDep. Engenharia Elétrica
Mínima Variância no Código de Huffman
Letra Probabilidade Código
a2 0.4 1
a1 0.2 01
a3 0.2 000
a4 0.1 0010
a5 0.1 0011
Letra Probabilidade Código
a2 0.4 10
a1 0.2 00
a3 0.2 11
a4 0.1 010
a5 0.1 011
Forma 1 Forma 2
Exemplo: Qual a melhor forma de codificação para se transmitir 10.000 símbolos/s do alfabeto em um canal de 22.000 bits/s?
Redundância: Diferença entre a entropia e o tamanho médio do código.Se a redundância é zero -> as probabilidades são potência de 2!
TE073 – Processamento Digital de Sinais II 48
Setor de TecnologiaUniversidade Federal do ParanáDep. Engenharia Elétrica
Diagrama em Forma de Árvore - Decoder
Diagrama em forma de árvore das 2 formas de implementação. Através dele podemos encontrar qual código representa cada símbolo.
TE073 – Processamento Digital de Sinais II 49
Setor de TecnologiaUniversidade Federal do ParanáDep. Engenharia Elétrica
Codificação Huffman com Probabilidade da Fonte desconhecida
Modo 1: Dois passos A estatística dos dados é coletada num primeiro passo e
depois a fonte é codificada.
Modo 2: Um passo Faller e Gallagher desenvolveram um algoritmo
adaptativo para construir o código de Huffman baseado em estatísticas de símbolos previamente encontrados.
TE073 – Processamento Digital de Sinais II 50
Setor de TecnologiaUniversidade Federal do ParanáDep. Engenharia Elétrica
3.8.1 - Aplicações – Compressão de Imagens sem perdas
Imagem
bits/pixel Tamanho(bytes)
Razão deCompressão
Sena 7.01 57.504 1.14
Sensin 7.49 61.430 1.07
Terra 4.94 40.534 1.62
Omaha 7.12 58.374 1.12
Compressão usando codificação Huffman sobre os valores do pixel
TE073 – Processamento Digital de Sinais II 51
Setor de TecnologiaUniversidade Federal do ParanáDep. Engenharia Elétrica
Compressão de Imagens sem perdas (Continuação)
Imagem
bits/pixel Tamanho(bytes)
Razão deCompressão
Sena 4.02 32.968 1.99
Sensin 4.70 38.541 1.70
Terra 4.13 33.880 1.93
Omaha 6.42 52.643 1.24
Imagem bits/pixel Tamanho(bytes)
Razão deCompressão
Sena 3.93 32.261 2.03
Sensin 4.63 37.896 1.73
Terra 4.82 39.504 1.66
Omaha 6.39 52.321 1.25
Compressão usando codificação Huffman sobre a diferença nos valores de pixel
Compressão usando codificação Huffman adaptativa sobre a diferença nos valores de pixel
TE073 – Processamento Digital de Sinais II 52
Setor de TecnologiaUniversidade Federal do ParanáDep. Engenharia Elétrica
Aplicação: Compressão de Texto
Através da tabela ao lado
podemos ver a probabilidade
de ocorrência das letras na
constituição dos EUA.
Note que a probabilidade a
letra E é a maior dentre as
outras.
Letra Prob. Letra Prob.
A 0.057305
N 0.056035
B 0.014876
O 0.058215
C 0.025775
P 0.021034
D 0.026811
Q 0.000973
E 0.112578
R 0.048819
F 0.022875
S 0.060289
G 0.009523
T 0.078085
H 0.042915
U 0.018474
I 0.053475
V 0.009882
J 0.002031
W 0.007576
K 0.001016
X 0.002264
L 0.031403
Y 0.011702
M 0.015892
Z 0.001502
TE073 – Processamento Digital de Sinais II 53
Setor de TecnologiaUniversidade Federal do ParanáDep. Engenharia Elétrica
Aplicação: Compressão de Áudio
Nome doArquivo
Tamanho Original(bytes)
Entropia(bits)
Tamanho estimado do arquivo
compactado (bytes)
Razão deCompress
ão
Mozart 939.862 12.8 725.420 1.30
Cohn 402.442 13.8 349.300 1.15
Mir 884.020 13.7 759.540 1.16
Nome doArquivo
Tamanho Original(bytes)
Entropia(bits)
Tamanho estimado do arquivo
compactado (bytes)
Razão deCompress
ão
Mozart 939.862 9.7 569.792 1.65
Cohn 402.442 10.4 261.590 1.54
Mir 884.020 10.9 602.240 1.47
3.28 - Utilizando codificação Huffman
3.29 - Utilizando codificação Huffman com diferença entre amostras
54
Codificação AritméticaCodificação Aritmética
TE073 – Processamento Digital de Sinais II 55
Setor de TecnologiaUniversidade Federal do ParanáDep. Engenharia Elétrica
Por que Codificação Aritmética?
Exemplo 4.2.1: Considere uma fonte com alfabeto A={a1, a2, a3)
com P(a1)=0.95, P(a2)=0.02 e P(a3)=0.03. Encontre a entropia, o
código de huffman e o tamanho médio do código.
Letra Probabilidade
Código
a1 0.95 1
a2 0.02 11
a3 0.03 10Diferença de 0.715 bits/símbolo que é 213 % da
entropia!!!
H=0.335 bits/símbolo
Tamanho médio=1.05 bits/símbolo
TE073 – Processamento Digital de Sinais II 56
Setor de TecnologiaUniversidade Federal do ParanáDep. Engenharia Elétrica
Codificação AritméticaIdéia
Vamos ver que é mais eficiente designar uma palavra de código para uma seqüência em particular do que ter que gerar palavra de código para cada símbolo na seqüências.
Um único identificador ou tag é gerada para toda a seqüência a ser codificada. Esta tag corresponde a uma fração binária, que torna-se um código binário para a seqüência.
Um único código aritmético pode ser gerado para uma seqüência de tamanho m sem a necessidade de gerar palavras de código para todas as seqüências de tamanho m.
TE073 – Processamento Digital de Sinais II 57
Setor de TecnologiaUniversidade Federal do ParanáDep. Engenharia Elétrica
Codificando uma seqüência Para distinguir uma seqüência de símbolos, é necessário criar uma tag com um
único identificador. Uma tag para representar uma seqüência de símbolos pode
ser qualquer número no intervalo unitário de [0,1).
É necessário então uma função que mapeie seqüências neste intervalo
unitário. A função chama-se função de distribuição acumulativa (cdf) de
variáveis randômicas associadas com a fonte. Esta é a função que será utilizada
na codificação aritmética.
Exemplo: Lançamento de uma moeda: Podemos designar cara=1 e coroa=0,
como também podemos designar cara=2367.5 e coroa=-190.2).
TE073 – Processamento Digital de Sinais II 58
Setor de TecnologiaUniversidade Federal do ParanáDep. Engenharia Elétrica
Formulação MatemáticaPrecisamos mapear os símbolos da fonte ou letras para
números. Por conveniência, iremos usar o mapeamento:
iaX i )( Aai
Onde A={a1, a2,..., am} é o alfabeto para uma fonte discreta e X
é a variável randômica. Este mapeamento significa que dada
um modelo de probabilidade P para a fonte, nós temos uma
função densidade de probabilidade para a variável randômica)()( iaPiXP
e a função de densidade acumulativa pode ser definida como:
i
kx kXPiF
1
)()( Note que para cada símbolo ai nós teremos um distinto valor de Fx(i).
TE073 – Processamento Digital de Sinais II 59
Setor de TecnologiaUniversidade Federal do ParanáDep. Engenharia Elétrica
Gerando uma Tag
Exemplo 4.3.1: Considere um alfabeto de 3 letras A={a1, a2, a3} com
P(a1)=0.7, P(a2)=0.1 e P(a3)=0.2. Usando a função de densidade
acumulativa obtemos Fx(1)=0.7, Fx(2)=0.8 e Fx(3)=1. Isto particiona o
intervalo unitário como mostrado na figura abaixo:
TE073 – Processamento Digital de Sinais II 60
Setor de TecnologiaUniversidade Federal do ParanáDep. Engenharia ElétricaProcedimento Matemático para
Geração de uma Tag
Para entendermos como a geração de uma tag funciona
matematicamente, começaremos com uma seqüência de comprimento
unitário. Suponha uma alfabeto A= {a1, a2, a3}. Podemos mapear os
símbolos {ai} para números reais {i}. Definimos )(_
ix aT como:
)(2
1)()(
1
1
_
iXPkXPaTi
kix
)(
2
1)1()(
_
iXPiFaT xix Portanto:
Para cada valor de ai, )(_
ix aT tem um único valor. Esse valor pode ser
usado como a tag para ai.
TE073 – Processamento Digital de Sinais II 61
Setor de TecnologiaUniversidade Federal do ParanáDep. Engenharia Elétrica
Exemplo 4.3.2: Considere o experimento de jogar um dado. O resultado
pode ser mapeado nos números {1, 2, ..., 6}. Para um dado não viciado:
6
1)( kXP para k=1,2,...,6
Procedimento Matemático para Geração de uma Tag (continuação)
Então, por exemplo, podemos encontrar a tag para X=2 como sendo:
25.012
1
6
1)2(
2
1)1()2(
_
XPXPTx
E para X=5 como sendo:
75.0)5(2
1)1()5(
_4
1
XPXPTxk
As tags para os outros valores são:
Resultado
Tag
1 0.0833
3 0.4166
4 0.5833
6 0.9166
TE073 – Processamento Digital de Sinais II 62
Setor de TecnologiaUniversidade Federal do ParanáDep. Engenharia Elétrica
Procedimento Matemático para Geração de uma Tag (continuação)
Vamos ver agora o procedimento para a geração de uma tag de uma seqüência de
comprimento inteiro qualquer. Para uma particular seqüência xi temos:
)(2
1)()(
_)(
ixy
im
x xPyPxTi
Onde y<x significa que y procede x na ordem, e o sobrescrito
significa o tamanho da seqüência.
[4.4]
TE073 – Processamento Digital de Sinais II 63
Setor de TecnologiaUniversidade Federal do ParanáDep. Engenharia Elétrica
Procedimento Matemático para Geração de uma Tag (continuação)Exemplo 4.3.3: Uma derivação do ex. 4.3.2, agora a seqüência
consiste de 2 jogadas dos dados. O resultado (em ordem) pode ser
11 12 13 ... 66. Utilizando a eq. 4.4, a tag para a seqüência pode ser:
)13(2
1)12()11()13(
_
XPXPXPTx
)36/1(2/136/136/1
72/5
TE073 – Processamento Digital de Sinais II 64
Setor de TecnologiaUniversidade Federal do ParanáDep. Engenharia Elétrica
Codificação Aritmética é mais complicada que a Huffman porém
permite que sejam codificados seqüências de símbolos.
Quão bem um tipo trabalha melhor que o outro depende. Para a
codificação aritmética, quanto maior for a sequência, mais o código se
aproxima da entropia. Porém devemos escolher o tamanho da
seqüência de forma que torne-se viável.
A tamanho médio da codificação aritmética e Huffman é dado pelas
equações abaixo: onde m é o tamanho da seqüência.
Comparação entre aCodificação Huffman e Aritmética
mXHlXH
mXHlXH
H
A
1)()(
2)()(
No entanto: Sequência de 20 símbolos de um alfabeto de 16 símbolos requer tabela de Huffman de tamanho 1620!
TE073 – Processamento Digital de Sinais II 65
Setor de TecnologiaUniversidade Federal do ParanáDep. Engenharia Elétrica
Comparação entre aCodificação Huffman e Aritmética
Veja a seguinte equação: 086.0 máxmáx pHT
- A eq. acima diz qual é a taxa máxima que se pode obter com a codificação Huffman. Se o alfabeto for grande, a probabilidade máxima é baixa e portanto o código de Huffman se comporta melhor que o código aritmético.
- Uma grande vantagem da codificação aritmética é a facilidade de se implementar sistemas com múltiplos codificadores aritméticos.
– É muito mais simples adaptar o código aritmético para mudar a estatística. Somente o que precisamos é estimar a probabilidade do alfabeto de entrada. Não há necessidade de preservar a árvore como na codificação Huffman.
66
Codificação baseada em Codificação baseada em dicionáriodicionário
TE073 – Processamento Digital de Sinais II 67
Setor de TecnologiaUniversidade Federal do ParanáDep. Engenharia Elétrica
Técnicas Baseadas em Dicionários Até agora estudamos técnicas que assumem que a fonte
gera seqüências de símbolos independentes Porém a maioria das fontes possuem alto grau de
correlação entre os símbolos adjacentes. Portanto é comum usar técnicas de descorrelação em um passo anterior (ex. DPCM).
A idéia aqui é incorporar a estrutura dos dados ao codificador.
Duas metodologias: Estática Adaptativa (dinâmica)
Muito utilizados em fontes que repetem um pequeno número de sequências padrões muito frequentemente (ex. Texto, C).
Exemplos de utilização: UNIX compress , modem V.42, GIF
TE073 – Processamento Digital de Sinais II 68
Setor de TecnologiaUniversidade Federal do ParanáDep. Engenharia Elétrica
Introdução Em muitas aplicações temos padrões que se
repetem muito: “Dar fundamentos teóricos e práticos de forma
profundamente, completamente e razoavelmente condescendente com quem mente.”
Ou que são muito improváveis:
“Supercalifragilisticexpialidocious é improvável (2940)
porém VictorBenso é muito mais improvável (3). Dividido em duas classes:
Quando o padrão existe no dicionário é codificado com uma referência ao dicionário. (padrões que ocorrem muito)
Quando não existe no dicionário é codificado com uma forma menos eficiente. (padrões que ocorrem pouco)
TE073 – Processamento Digital de Sinais II 69
Setor de TecnologiaUniversidade Federal do ParanáDep. Engenharia Elétrica
Exemplo: Texto de 4 caracteres (26 letras + ; : , . ? !)
32 caracteres (5 bits) 32^4 = 1.048.576 combinações diferentes Selecionado as 256 sequências mais comuns (8 bits) O primeiro bit indica se a sequência é conhecida.
4x5=20 bits por sequência sem codificação 9 bits caso a sequência seja conhecida (2,25 bits) 21 bits caso não seja conhecida (5,25 bits)
P- probabilidade de encontrar sequência no dicionário
R=9.p + 21.(1 - p)= 21 - 12p (taxa de bits média) Será eficiente quando R<20 logo : P0,083333 Não parece tão grande. Porém: Caso a probabilidade
seja igualmente distribuída a probabilidade de 1 padrão no dicionário é: P<0,00025
Conhecer a fonte (estático) ou criar um dicionário específico (dinâmico)
TE073 – Processamento Digital de Sinais II 70
Setor de TecnologiaUniversidade Federal do ParanáDep. Engenharia Elétrica
Dicionário estático Fonte previamente conhecida Aplicações específicas:
Armazenar receitas: sal açúcar batata xícara colher de chá Mexa constantemente em banho maria até dissolver
bem. Se usar este esquema para codificação de um
livro de software não ajudaria muito, podendo até causar expansão no volume de dados.
TE073 – Processamento Digital de Sinais II 71
Setor de TecnologiaUniversidade Federal do ParanáDep. Engenharia Elétrica
Código de diagrama – Dic. Estático Alfabeto é formado por letras e completado por
sequências freqüentes. Ex: para ASCII caracteres poderíamos usar os 95
primeiros números para letras imprimíveis e os outros 161 para sequências, completando 256
Ex: Fonte A = {a,b,c,d,r}
000 – a 100 - r 001 – b 101 - ab 010 – c 110 - ac 011 – d 111 – ad
abracadabra : 101 100 110 111 010 101 100 000 Original: 3 bits/símbolo codificado:2,18 bits/símbolo (sem
dicionário!)
TE073 – Processamento Digital de Sinais II 72
Setor de TecnologiaUniversidade Federal do ParanáDep. Engenharia Elétrica
Dicionário Adaptativo Teoria baseada em dois artigos:
Jacob Ziv (LZ77 ou familia LZ1) Abraham Lempel (LZ78 ou família LZ2)
TE073 – Processamento Digital de Sinais II 73
Setor de TecnologiaUniversidade Federal do ParanáDep. Engenharia Elétrica
Dicionário Adaptativo – LZ77 Divide as amostras em duas janelas
Search buffer (amostra codificada atual) Look-Ahead buffer (amostra a ser codificada)
Procura sequências repetidas nas amostras Quando encontra substitui por <O,L,C> onde
O = offset L = length C = codeword do símbolo Envia <0,0,C> caso o símbolo não esteja presente
no buffer.
(7,4,p)
TE073 – Processamento Digital de Sinais II 74
Setor de TecnologiaUniversidade Federal do ParanáDep. Engenharia Elétrica
Dicionário Adaptativo – LZ77 S – tamanho do buffer W - tamanho da janela A – tamanho do alfabeto
Numero de bits necessários usando tamanho fixo
][log][log][log 222 AWS
TE073 – Processamento Digital de Sinais II 75
Setor de TecnologiaUniversidade Federal do ParanáDep. Engenharia Elétrica
Dicionário Adaptativo – LZ77 Variações do LZ77
Podemos usar tamanho de código variável Semi-Adaptativo (2 métodos)
PKZip Zip LHarc PNG Gzip ARJ
Adição de um bit flag para indicar quando existe o tripple
TE073 – Processamento Digital de Sinais II 76
Setor de TecnologiaUniversidade Federal do ParanáDep. Engenharia Elétrica
Aplicações Compressão de arquivos – UNIX Compress
LZW Tamanho do dicionário variável
Começa com 512 (9 bits) Dobra quando é completado Até Máximo
A partir deste momento o dicionário se torna estático Analisa a taxa de compressão, quando cai abaixo
de um threshold o processo é reiniciado
TE073 – Processamento Digital de Sinais II 77
Setor de TecnologiaUniversidade Federal do ParanáDep. Engenharia Elétrica
Aplicações GIF (Graphics Interchange Format)
LZW Semelhante ao UNIX-compress Tamanho máximo de 4096 2n Símbolos (bitmap)
Imagem GIF Cod. Aritmética Cod. Aritmética da diferença
Sena 51.085 53.431 31.847
Sensin 60.649 58.306 37.126
Earth 34.276 38.248 32.137
Omaha 61.580 56.061 51.393
TE073 – Processamento Digital de Sinais II 78
Setor de TecnologiaUniversidade Federal do ParanáDep. Engenharia Elétrica
Aplicações MODEM – V.42 bis
Não compactado Compactado – LZW
As vezes a fonte não repete dados, expandindo o arquivo já que o número de bits para o dicionário é maior que somente para um símbolo isolado.
Testes periódicos para verificar se não está expandindo
Tamanho Inicial de 512 máximo 2048 3 símbolos para controle