A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Fundamentos de Codificação de Sinais

Apresentações semelhantes


Apresentação em tema: "Fundamentos de Codificação de Sinais"— Transcrição da apresentação:

1 Fundamentos de Codificação de Sinais
Prof. Marcus Vinicius Lamar

2 TE073 – Processamento Digital de Sinais II
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 ou explorando características do usuário final. Objetivo: Transmissão ou Armazenamento eficiente. TE073 – Processamento Digital de Sinais II

3 TE073 – Processamento Digital de Sinais II
Ex.: 3 minutos de música qualidade de CD – estéreo necessita: 10 Fotos 10x15cm com resolução de 600dpi(240dpc) coloridas: TE073 – Processamento Digital de Sinais II

4 TE073 – Processamento Digital de Sinais II
2 horas de vídeo tamanho VGA true color necessita: Ou TE073 – Processamento Digital de Sinais II

5 TE073 – Processamento Digital de Sinais II
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ído Armazenamento: limites físicos (átomo, elétron, sub-atômicas) TE073 – Processamento Digital de Sinais II

6 TE073 – Processamento Digital de Sinais II
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 letras Braille 2 usa os 38 restantes para codificar números e palavras freqüentemente usadas. TE073 – Processamento Digital de Sinais II

7 TE073 – Processamento Digital de Sinais II
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á uma estrutura 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 final do sinal. Ex.: Humanos: não conseguem ouvir altas frequência. que cães podem. Visão humana também é limitada em resolução espacial, temporal e de crominâncias. Se algo não é perceptível para que preservá-lo? TE073 – Processamento Digital de Sinais II

8 TE073 – Processamento Digital de Sinais II
1.1. Técnicas de Compressão 2 algoritmos: Codificador/Compressor e Decodificador/Descompressor Xc Y X coder decoder Canal s/ ruído X=Y Codificação sem perdas (lossless compression) XY Codificação com perdas (lossy compression) TE073 – Processamento Digital de Sinais II

9 TE073 – Processamento Digital de Sinais II
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édicas Vidas em risco TE073 – Processamento Digital de Sinais II

10 TE073 – Processamento Digital de Sinais II
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 ser recuperado. O ganho de ter distorção no dado recuperado é um ganho de codificaçã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 TE073 – Processamento Digital de Sinais II
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 TE073 – Processamento Digital de Sinais II
Ganho de codificação (taxa de compressão) Ex.: imagem 256x256 pixels a 8 bits/pixel (gray) necessita bytes comprimido resultou um arquivo de 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és de EMQ, SNR, PSNR, distâncias: Euclidiana, Mahalanobis, etc. TE073 – Processamento Digital de Sinais II

13 TE073 – Processamento Digital de Sinais II
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 TE073 – Processamento Digital de Sinais II
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 um usando 5 bits por amostra. Totalizando: 12x5=60 bits TE073 – Processamento Digital de Sinais II

15 TE073 – Processamento Digital de Sinais II
Observando sua representação gráfica: Nota-se que podemos modelar estes dados como: TE073 – Processamento Digital de Sinais II

16 TE073 – Processamento Digital de Sinais II
Logo a estrutura dos dados pode ser caracterizada por uma eq. O resíduo do dado real e o modelo pode ser calculado como: 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 bits Compressão de 2,22:1 ou 2,25 bits/amostra TE073 – Processamento Digital de Sinais II

17 TE073 – Processamento Digital de Sinais II
Ex. 2: Considere a sequência 27 , 28 , 29, 28 , 26 , 27, 29 , 28 , 30 , 32 , 34 , 36 , 38 Requerendo: 13 x 6 = 78 bits 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: TE073 – Processamento Digital de Sinais II

18 TE073 – Processamento Digital de Sinais II
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: x 12=41 bits Técnica chamada: Codificação Preditiva TE073 – Processamento Digital de Sinais II

19 TE073 – Processamento Digital de Sinais II
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ção Resultando em 41x3=123 bits Porém, se utilizarmos a tabela: a 1 _ 001 b 01100 f 0100 n 0111 r 000 w 01101 y 0101 Necessitamos 106 bits p/ representar a sequência, O que gera uma taxa de 2.58 bits/símbolo TE073 – Processamento Digital de Sinais II

20 TE073 – Processamento Digital de Sinais II
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 TE073 – Processamento Digital de Sinais II
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 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: , , 1948 TE073 – Processamento Digital de Sinais II

22 TE073 – Processamento Digital de Sinais II
Quantidade de Informação: 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)=0 P(A)=0 (evento nunca ocorre) i(A)=infinito Dado 2 eventos independentes A e B: P(A,B)=P(A).P(B) TE073 – Processamento Digital de Sinais II

23 TE073 – Processamento Digital de Sinais II
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: Logo: Ex.2: Lançamento de uma moeda viciada: Maior informação Logo: TE073 – Processamento Digital de Sinais II

24 TE073 – Processamento Digital de Sinais II
Considere um conjunto de eventos independentes Ai que são Resultados de um experimento S A média da quantidade de informação associada com este experimento aleatório é dado por: 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 TE073 – Processamento Digital de Sinais II
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 TE073 – Processamento Digital de Sinais II
Para uma fonte S com alfabeto A={1,2,...,m} que gera uma sequência {X1,X2,...} a entropia é dado por: 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: TE073 – Processamento Digital de Sinais II

27 TE073 – Processamento Digital de Sinais II
Logo a expressão para a entropia da fonte torna-se: Entropia de primeira-ordem TE073 – Processamento Digital de Sinais II

28 TE073 – Processamento Digital de Sinais II
Ex.: Estimando a entropia Considere a sequência: Assumindo que a frequência de ocorrência de cada número é refletido pelo número que o mesmo aparece na sequência, podemos estimar a probabilidade de cada símbolo como: Assumindo que a sequência é iid, a entropia da sequência é a dada pela entropia de primeira-ordem: TE073 – Processamento Digital de Sinais II

29 TE073 – Processamento Digital de Sinais II
Entretanto, supondo que exista uma correlação entre uma amostra e a anterior, pode-se remover esta correlação fazendo a diferença entre a atual e a anterior obtendo o sinal residual: 1 1 1 – – –1 1 1 Esta sequência tem apenas 2 símbolos com probabilidades: Resultando em uma entropia: Obviamente o receptor deve conhecer o modelo utilizado. TE073 – Processamento Digital de Sinais II

30 TE073 – Processamento Digital de Sinais II
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 dados pode 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 ajuda a estimar a real entropia da fonte. ninfinito TE073 – Processamento Digital de Sinais II

31 TE073 – Processamento Digital de Sinais II
Ex.2: Considere a sequência: Qual a estrutura? Resultando em 1.5 bits/símbolo de entropia Como temos 20 símbolos, necessitamos de 30 bits p/ representa-la. Se considerarmos blocos de 2 teremos apenas 2 blocos: Resultando em uma entropia de 1 bit/símbolo Como temos 10 símbolos, logo necessitamos 10 bits p/ representa-la. TE073 – Processamento Digital de Sinais II

32 TE073 – Processamento Digital de Sinais II
A teoria diz que podemos sempre extrair a estrutura dos dados 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 codificar a fonte com respeito a este modelo. TE073 – Processamento Digital de Sinais II

33 TE073 – Processamento Digital de Sinais II
2.3. Modelos Quanto mais o modelo se aproxima do real modelo para a 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 TE073 – Processamento Digital de Sinais II
Modelo de Markov Andrei Andrevich Markov ( ) 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: 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 TE073 – Processamento Digital de Sinais II
O modelo mais popularmente usado é o Modelo de Markov de primeira ordem, isto é: O modelo diz que a amostra atual depende de alguma forma apenas da amostra anterior, sem especificar essa dependência. TE073 – Processamento Digital de Sinais II

36 TE073 – Processamento Digital de Sinais II
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 TE073 – Processamento Digital de Sinais II
A entropia de um processo de estados finitos é dada pela média da entropia de cada estado: TE073 – Processamento Digital de Sinais II

38 TE073 – Processamento Digital de Sinais II
No exemplo da imagem binária: Onde: Analogamente: Onde: TE073 – Processamento Digital de Sinais II

39 TE073 – Processamento Digital de Sinais II
Numericamente, dados: Calculo da Entropia usando o modelo Probabilístico: Calculo da Entropia usando o modelo de Markov: Logo: Logo modelo de Markov modelou melhor a entropia da fonte TE073 – Processamento Digital de Sinais II

40 TE073 – Processamento Digital de Sinais II
Modelo de fonte composta Em muitas aplicações é difícil usar um único modelo para descrever 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 TE073 – Processamento Digital de Sinais II
2.4. Codificação Alocaçã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ímbolos mais frequentes, de modo a diminuir a taxa. Problema: Unicidade da decodificação TE073 – Processamento Digital de Sinais II

42 TE073 – Processamento Digital de Sinais II
Ex.: Símbolo Probabilidade Código 1 Código 2 Código 3 Código 4 a1 0.5 a2 0.25 1 10 01 a3 0.125 00 110 011 a4 11 111 0111 Comprimento Médio(l) 1.125 1.25 1.75 1.875 TE073 – Processamento Digital de Sinais II

43 Codificação de Huffman

44 TE073 – Processamento Digital de Sinais II
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. A primeira afirmação é fácil observar, aquele símbolo que possui uma maior probabilidade de ocorrer vamos designar um código menor. A segunda afirmação pode ser mostrada como: se o código de a=0001 (penúltimo código) então b=0000 (último código). Mudando apenas o último bit. TE073 – Processamento Digital de Sinais II

45 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ódigo a2 0.4 c(a2) a1 0.2 c(a1) a3 c(a3) a4 0.1 c(a4) a5 c(a5) A entropia desta fonte é H= bits/símbolos (é a taxa mínima que podemos chegar na codificação). Para implementar o código de Huffman, primeiro distribuimos as letras ordenando da maior probabilidade para a menor. Exercício será feito no quadro ou mostrado pelo livro. Após o exercício, encontramos uma entropia de H=2.2 bits/símbolo. Uma medida da eficiência do código é a redundância que é H(obtido)-H(ótimo). Portanto: =0.78bits/símbolo. Entropia: bits/símbolo TE073 – Processamento Digital de Sinais II

46 TE073 – Processamento Digital de Sinais II
Huffman coder 1 1 TE073 – Processamento Digital de Sinais II

47 Mínima Variância no Código de Huffman
Forma 1 Forma 2 Letra Probabilidade Código a2 0.4 1 a1 0.2 01 a3 000 a4 0.1 0010 a5 0011 Letra Probabilidade Código a2 0.4 10 a1 0.2 00 a3 11 a4 0.1 010 a5 011 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! Para os mesmos símbolos do alfabeto podemos obter 2 formas de implementação. Se ao invés de colocarmos a4` como sendo o último da lista colocarmos ele como sendo primeiro e assim com os outros (a3`... etc...) então obteremos o código mostrado na tabela 2 (forma 2). Neste caso há uma menor variância no código. O tamanho médio do código também permanece o mesmo: l=2.2bits/símbolo. A grande vantagem da forma 2 é respondida no exemplo: Se transmitirmos a5 na forma 1 teremos um utilização de bits/segundo e teremos que armazenar em buffer bits. Na forma 2 será necessário armazenar apenas 8.000bits. Se desejarmos transmitir a1, terei bits/s e terei que gerar mais bits/s para preencher o canal. Na forma 2 terei que completar apenas com bits/s Exemplo: Qual a melhor forma de codificação para se transmitir símbolos/s do alfabeto em um canal de bits/s? TE073 – Processamento Digital de Sinais II

48 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. Mostrar como encontrar os códigos através do diagrama de árvore. TE073 – Processamento Digital de Sinais II

49 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. A codificação Huffman requer que a probabilidade da seqüência da fonte seja conhecida. Se não for possível, o código de Huffman procede de 2 formas... Para não funcionar do modo 1 Faller e Gallagher... Para o modo 1: Teoricamente se eu quero codificar o(k+1)-ésimo símbolo usando a estatística dos k símbolos, nós precisamos recomputar o código usando a codificação Huffman cada vez que o símbolo é transmitido. Isto não é praticado pelo elevado custo computacional. TE073 – Processamento Digital de Sinais II

50 3.8.1 - Aplicações – Compressão de Imagens sem perdas
Compressão usando codificação Huffman sobre os valores do pixel Imagem bits/pixel Tamanho (bytes) Razão de Compressã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 Nesta seção será descrito algumas aplicações da codificação Huffman. Uma simples aplicação da codificação de Huffman para compressão de imagens poderia ser gerar um código de Huffman para um conjuntos de valores que o pixel pode ter. Para imagens monocromáticas, este conjunto consiste de inteiros de 0 a 255. Utilizando programas em anexo conseguimos o resultado mostrado na tabela deste slide. A imagem consistem de 256x256 pixels com 8bits/pixel gerando portanto arquivos de 65536bytes. Note que a razão de compressão é diferente para diferentes imagens. Isto pode causar problemas quando é necessário saber com antecedência quantos bytes são necessários para representar um particular conjunto de dados. Os resultados da tabela foram decepcionanetes pois conseguimos de 1/2 a 1 bit/pixel somente após compressão. Para algumas aplicações isso é aceitável. TE073 – Processamento Digital de Sinais II

51 Compressão de Imagens sem perdas (Continuação)
Imagem bits/pixel Tamanho (bytes) Razão de Compressã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 Compressão usando codificação Huffman sobre a diferença nos valores de pixel Imagem bits/pixel Tamanho (bytes) Razão de Compressã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 adaptativa sobre a diferença nos valores de pixel Veja que utilizando a codificação, levando-se em conta os pixels vizinhos, houve um incremento considerável na razão de compressão. O resultado das tabelas 3.23 (slide anterior) e 3.24 foram obtidas com um sistema de 2 passos, onde a estatística é coletada num primeiro passo e a tabela de huffman é gerada. Ao invés disso, na tabela 3.25 foi usado um codificador adaptadivo de Huffman de 1 passo. Note que há uma pequena diferença na razão de compressão. Adicionalmente, o fato que o codificador de Huffman adaptativo pode ser usado como um codificador de tempo-real faz com que o codificador de Huffman adaptativo torne-se mais atrativo em muitas aplicações. No entanto o codificador adaptativo é mais vulnerável a erros e pode também ser mais difícil de implementar. Finalmente, uma particular aplicação irá determinar qual aproximação é mais adequada. TE073 – Processamento Digital de Sinais II

52 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. A N B O C P D Q E R F S G T H U I V J W K X L Y M Z Foi codificado o capítulo e obteve-se uma redução de bytes para Isto poderia ainda ser menor se levassemos em conta a correlação (ex. Huf+fman). Isto é mais complexo e será melhor visto no capítulo 5 e 6. TE073 – Processamento Digital de Sinais II

53 Aplicação: Compressão de Áudio
Utilizando codificação Huffman Nome do Arquivo Tamanho Original (bytes) Entropia (bits) Tamanho estimado do arquivo compactado (bytes) Razão de Compressão Mozart 12.8 1.30 Cohn 13.8 1.15 Mir 13.7 1.16 Utilizando codificação Huffman com diferença entre amostras Nome do Arquivo Tamanho Original (bytes) Entropia (bits) Tamanho estimado do arquivo compactado (bytes) Razão de Compressão Mozart 9.7 1.65 Cohn 10.4 1.54 Mir 10.9 1.47 O sinal de áudio para cada canal estereo é amostrada em 44.1kHz e cada amostra é representada em 16bits. Se fossemos transmitir todos esses dados!!! Existem outras formas de tratar alfabetos longos (será visto no capítulo 8). TE073 – Processamento Digital de Sinais II

54 Codificação Aritmética

55 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 10 H=0.335 bits/símbolo Tamanho médio=1.05 bits/símbolo Para a codificação Huffman quando o alfabeto é grande e a probabilidade dos símbolos é bem distribuida, o código de Huffman não tornava-se tão ineficiente mas em determinados casos como o mostrado abaixo... Diferença de bits/símbolo que é 213 % da entropia!!! TE073 – Processamento Digital de Sinais II

56 Codificação Aritmética Idé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. Na ultima observação, faz referencia ao Huffman. No Huffman.... Para gerar um código Huffman para uma sequencia de tamanho m, onde o código não é uma concatenação de palavras de códigos para um símbolo individual, nós necessitamos obter o código de Huffman para toda a sequencia de comprimento m. TE073 – Processamento Digital de Sinais II

57 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= e coroa=-190.2). TE073 – Processamento Digital de Sinais II

58 Formulação Matemática
Precisamos mapear os símbolos da fonte ou letras para números. Por conveniência, iremos usar o mapeamento: 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 e a função de densidade acumulativa pode ser definida como: Note que para cada símbolo ai nós teremos um distinto valor de Fx(i). TE073 – Processamento Digital de Sinais II

59 TE073 – Processamento Digital de Sinais II
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 Procedimento 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 como: Portanto: Para cada valor de ai, tem um único valor. Esse valor pode ser usado como a tag para ai. TE073 – Processamento Digital de Sinais II

61 TE073 – Processamento Digital de Sinais II
Procedimento Matemático para Geração de uma Tag (continuação) 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: para k=1,2,...,6 Então, por exemplo, podemos encontrar a tag para X=2 como sendo: E para X=5 como sendo: Resultado Tag 1 0.0833 3 0.4166 4 0.5833 6 0.9166 As tags para os outros valores são: TE073 – Processamento Digital de Sinais II

62 TE073 – Processamento Digital de Sinais II
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: [4.4] Onde y<x significa que y procede x na ordem, e o sobrescrito significa o tamanho da seqüência. TE073 – Processamento Digital de Sinais II

63 TE073 – Processamento Digital de Sinais II
Procedimento Matemático para Geração de uma Tag (continuação) Exemplo 4.3.3: Uma derivação do ex , agora a seqüência consiste de 2 jogadas dos dados. O resultado (em ordem) pode ser Utilizando a eq. 4.4, a tag para a seqüência pode ser: Note que para gerar a tag 13 não foi necessário gerar a tag para todas as outras possíveis mensagens. Lembre-se que o intervalo contendo o valor da tag para uma dada sequencia é separado (em partes) do intervalo contendo o valor da tag de todas as outras sequencias. Então, para finalizar, é necessário apenas encontrar o valor superior e inferior e selecionar algum valor naquele intervalo (este será a tag). Como determinar o limite superior e inferior será mostrado em seguida. TE073 – Processamento Digital de Sinais II

64 TE073 – Processamento Digital de Sinais II
Comparação entre a Codificação Huffman e Aritmética 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. m=tamanho da seqüência a ser codificada H=entropia X=variável randômica Olhando as equações temos a falsa idéia que o código de Huffman é melhor para sequencias. Mas isso não é verdade, a vantagem diminui com o aumento da sequencia. Pois para o código de Huffman, é necessário construir todas as combinações dos símbolos o que requeriria um elevado custo computacional. Se o alfabeto original tem k simbolos, o código terá k^m. Para a codificação aritmética, não é necessário construir todo o codebook, em vez disso é pego uma tag para uma determinada sequencia. 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 Veja a seguinte equação:
Comparação entre a Codificação Huffman e Aritmética Veja a seguinte equação: - 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. TE073 – Processamento Digital de Sinais II

66 Codificação baseada em dicionário

67 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 TE073 – Processamento Digital de Sinais II
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 TE073 – Processamento Digital de Sinais II
Exemplo: Texto de 4 caracteres (26 letras + ; : , . ? !) 32 caracteres (5 bits) 32^4 = 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)= p (taxa de bits média) Será eficiente quando R<20 logo : P0,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 TE073 – Processamento Digital de Sinais II
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 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 r 001 – b ab 010 – c ac 011 – d 111 – ad abracadabra : Original: 3 bits/símbolo codificado:2,18 bits/símbolo (sem dicionário!) TE073 – Processamento Digital de Sinais II

72 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 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 Dicionário Adaptativo – LZ77
S – tamanho do buffer W - tamanho da janela A – tamanho do alfabeto Numero de bits necessários usando tamanho fixo TE073 – Processamento Digital de Sinais II

75 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 TE073 – Processamento Digital de Sinais II
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 Aplicações GIF (Graphics Interchange Format) Sena 51.085 53.431 31.847
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 TE073 – Processamento Digital de Sinais II
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 TE073 – Processamento Digital de Sinais II


Carregar ppt "Fundamentos de Codificação de Sinais"

Apresentações semelhantes


Anúncios Google