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

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

TÉCNICAS DE CODIFICAÇÃO DE SINAIS COMPRESSÃO SEM PERDAS Evelio M. G. Fernández - 2010.

Apresentações semelhantes


Apresentação em tema: "TÉCNICAS DE CODIFICAÇÃO DE SINAIS COMPRESSÃO SEM PERDAS Evelio M. G. Fernández - 2010."— Transcrição da apresentação:

1 TÉCNICAS DE CODIFICAÇÃO DE SINAIS COMPRESSÃO SEM PERDAS Evelio M. G. Fernández

2 Exemplo SímboloProbIIIIIIIV A1/ B1/ C1/ D1/

3 Entropia de uma Fonte Binária sem Memória

4 Códigos Prefixos Nenhuma palavra código é prefixo de qualquer outra palavra-código Todo código prefixo é instantâneo (o final das palavras- código é bem definido) Um código prefixo é sempre U.D. (a recíproca não é sempre verdadeira) Existe um código prefixo binário se e somente se Desigualdade de Kraft-McMillan

5 Códigos Prefixos Dado um conjunto de códigos que satisfaz a desigualdade de Kraft-McMillan, SEMPRE será possível encontrar um código prefixo com esses comprimentos para as suas palavras-código. O comprimento médio das palavras do código estará limitado pela entropia da fonte de informação

6 Teorema da Codificação de Fonte Dada uma fonte discreta sem memória com entropia H(S), o comprimento médio de um código U.D. para a codificação desta fonte é limitado por: com igualdade se e somente se:

7 Códigos de Huffmann Binários 1.Ordenar em uma coluna os símbolos do mais provável ao menos provável. 2.Associar 0 e 1 aos dois símbolos menos prováveis e combiná-los (soma das probabilidades individuais). 3.Repetir 1 e 2 até a última coluna que terá apenas dois símbolos; associa-se 0 e 1.

8 Códigos Ótimos r-ários Método de Huffmann: aplica-se o método com o seguinte artifício: Adicionam-se ao alfabeto original símbolos fictícios com probabilidade zero de ocorrência, até o número de símbolos assim gerado ser congruente a 1 mod (r – 1). Aplica-se o método de Huffmann agrupando-se r símbolos de cada vez. O código gerado é um código r-ário ótimo para o alfabeto original.

9 Fonte com Alfabeto Pequeno SímboloCódigo a1a1 0 a2a2 11 a3a3 10 bits/símbolo H(A) = 0,335 bits/simbolo Redundância = 0,715 bits/símbolo (213% da entropia) São necessários duas vezes mais bits do que o prometido pela entropia!

10 Segunda Extensão da Fonte Símb.Prob.Cod. a1a1a1a1 0,90250 a1a2a1a2 0, a1a3a1a3 0, a2a1a2a1 0, a2a2a2a2 0, a2a3a2a3 0, a3a1a3a a3a2a3a2 0, a3a3a3a3 0, bits/símbolo bits/símbolo (ainda 72% acima da entropia!) extensão de ordem n = 8 fonte com 6561 símbolos! Huffman: precisa criar todas as palavras-código!

11 Codificação Aritmética É mais eficiente designar uma palavra-código para uma seqüência de tamanho m do que gerar as palavras-código para todas as seqüências de tamanho m. Um único identificador ou tag é gerado para toda a seqüência a ser codificada. Esta tag corresponde a uma fração binária que tornar-se-á num código binário para a seqüência.

12 Um conjunto possível de tags para representar seqüências de símbolos são os números no intervalo [0, 1). É necessário então uma função que mapeie seqüências neste intervalo unitário. Utiliza-se a função de distribuição acumulativa (cdf) das variáveis aleatórias associadas com a fonte. Esta é a função que será utilizada na codificação aritmética. Codificação Aritmética

13

14 Algoritmo para Decifrar o Identificador 1.Inicializar l (0) = 0 e u (0) = Para cada valor de k, determinar: t * = (tag – l (k–1) )/(u (k–1) – l (k–1) ). 3.Determinar o valor de x k para o qual F X (x k – 1) t * F X (x k ). 4.Atualizar os valores de l (k) e u (k). 5.Continuar até o fim da seqüência.

15 Exemplo: Unicidade e Eficiência do Código Aritmético

16 Implementação com Inteiros Para a implementação com números inteiros, nas equações para a atualização dos limites dos sub- intervalos, será necessário substituir F X (x). Seja n j o número de vezes que o símbolo j ocorre em uma seqüência de tamanho Total_Count. Então, F X (k) pode ser estimado por,

17 Implementação com Inteiros Se definirmos, As equações de atualização podem ser re-escritas como, Onde x n é o n-ésimo símbolo a ser codificado.

18 Implementação com Inteiros Devemos mapear o intervalo da tag de forma que os limites inferior e superior permaneçam na parte superior e inferior do intervalo. Exemplo: Suponha m = 6, u (n) = 54 e l (n) = 33. A representação binária é: u (n) = e l (n) = Note que ambos tem o MSB igual a 1. Seguindo o procedimento de shiftingt, deslocar o MSB (e transmiti-lo ou armazená-lo) e adicionar 1 no código binário de u (n) e 0 no código binário de l (n), obtendo-se u (n) = (ou 45) e l (n) = (ou 2). Isto é equivalente a executar o mapeamento E 2. O mapeamento E 1 pode ser feito de forma similar. Para o procedimento E 3 monitoramos o segundo MSB e se para u (n) for 0 e para l (n) for 1 então (1) complementar o segundo MSB, (2) deslocar para a esquerda e (3) incluir um 1 em u(n) e um 0 em l(n). O número de mapeamentos E 3 realizados será armazenado (Scale3).

19 Algoritmo de Codificação com Inteiros Inicializar l e u. while (MSB de u e l sejam ambos iguais a b ou condição E 3 mantida) if (MSB de u e l são ambos iguais a b) { deslocar l à esquerda de um bit e incluir 0 no LSB deslocar u à esquerda de um bit e incluir 1 no LSB while (Scale3 > 0) { enviar o complemento de b Scale3 = Scale3 – 1 } }

20 Algoritmo de Codificação com Inteiros if (condição E 3 mantida) { deslocar l à esquerda de um bit e incluir 0 no LSB deslocar u à esquerda de um bit e incluir 1 no LSB complementar o (novo) MSB de l e u Scale3 = Scale3 + 1 }

21 Algoritmo de Decodificação com Inteiros Inicializar l e u. Ler os primeiros m bits do identificador t. k = 0 k k + 1 decodificar símbolo x.

22 Algoritmo de Decodificação com Inteiros while (MSB de u e l sejam ambos iguais a b ou condição E 3 mantida) if (MSB de u e l são ambos iguais a b) { deslocar l à esquerda de um bit e incluir 0 no LSB deslocar u à esquerda de um bit e incluir 1 no LSB deslocar t à esquerda de um bit e incluir o próximo bit recebido no LSB } if (condição E 3 mantida) { deslocar l à esquerda de um bit e incluir 0 no LSB deslocar u à esquerda de um bit e incluir 1 no LSB deslocar t à esquerda de um bit e incluir o próximo bit recebido no LSB complementar o (novo) MSB de l, u e t }

23 Códigos Baseados em Dicionários Seqüências de comprimento variável de símbolos da fonte são codificadas em palavras-código de comprimento fixo, obtidas de um dicionário. Utilizam técnicas adaptativas que permitem uma utilização dinâmica do dicionário. São projetados independentemente da fonte de informação classe de algoritmos universais de codificação de fonte.

24 Códigos Baseados em Dicionários repita palavra = leia_palavra (entrada); index = busca (palavra,dicionário); se index = 0 então faça escreva (palavra, saída); inclua (palavra, dicionário); fim senão escreva (index, saída); até fim_da_mensagem

25 Seqüência Binária: Frases: 1, 0, 10, 11, 01, 00, 100, 111, 010, 1000, 011, 001, 110, 101, , 1011 Algoritmo de Lempel-Ziv

26


Carregar ppt "TÉCNICAS DE CODIFICAÇÃO DE SINAIS COMPRESSÃO SEM PERDAS Evelio M. G. Fernández - 2010."

Apresentações semelhantes


Anúncios Google