Algoritmos de Compressão sem Perdas

Documentos relacionados
Compressão Sem Perdas: Codificações Huffman e Aritmética. Adelar da Silva Queiróz Marcelo Teixeira Thiago da Silva Sodré

Teoria da Informação

TÉCNICAS DE CODIFICAÇÃO DE SINAIS

Tipos de códigos de fonte

Técnicas de Compactação e Compressão. Compressão. Técnicas de Compactação e Compressão. Compactação x Compressão

COMUNICAÇÃO DIGITAL INTRODUÇÃO À TEORIA DE INFORMAÇÃO

Strings (Compressão) Estrutura de Dados II Jairo Francisco de Souza

Compressão de Dados. Prof. Flávio Humberto Cabral Nunes

Módulo 5 Codificação Sistemas Multimédia Ana Tomé José Vieira

Motivação Por que estudar?

Processamento digital de imagens

ELEMENTOS MULTIMÍDIA Compressão de dados. Prof. Fabiano Taguchi 06/11/2014.

Fundamentos da Compressão de Vídeo

Segundo Exame e Repescagem de Testes. Mestrado em Engenharia Electrotécnica e de Computadores, IST 25 de Janeiro de 2014

Compressão e Codificação de Dados. Primeiro Exame e Segundo Teste

Algoritmos e Estruturas de Dados! Alexandre Souza Francisco Mesqui5a Simoni Krüger Carla Pires Fabrício Ferreira

INTRODUÇÃO À TEORIA DA INFORMAÇÃO

SM - Sistemas Multimédia CODIFICAÇÃO DE FONTE (parte 2) 4.º / 6.º semestre LEIC (verão 2016/2017)

Algoritmos em Strings (compressão de texto)

Princípios Básicos de Teoria da Informação

AULA A 6 ESTRUTURA DE DADOS. Compressão de dados

Árvores. Thiago Martins, Fabio Gagliardi Cozman. PMR2300 / PMR3201 Escola Politécnica da Universidade de São Paulo

Sistemas discretos sem memória e codificação da fonte

Padrões de Compressão de Imagens

universidade federal de pernambuco departamento de estatística

Estrutura de Dados. Compressão de Dados Lempel, Ziv e Welch - LZW. Prof. Othon M. N. Batista Mestre em Informática

Compressão de Textos

Codecs de Imagem SMU

Compressão de Imagem DCC 066. Prof. Rodrigo Luis de Souza da Silva

TÉCNICAS DE CODIFICAÇÃO DE SINAIS

Compressão de Textos. Introdução. Introdução. Introdução. O volume de informação textual disponível on-line é imenso:

Curso de Engenharia de Computação - UTFPR Teoria da Computação - Prof. Celso Kaestner Lista de exercícios

Aplicação de Árvores: Código de Huffman

Árvores. Fabio Gagliardi Cozman. PMR2300 Escola Politécnica da Universidade de São Paulo

4 C odigos de Huffman 4.1 Arvores de c odigo folhas os internos n ıvel altura Arvore bin aria arvore bin aria ordenada

Estudo de caso: codificação de Huffman (parte II)

Teoria da Informação ( ) Exame de Recurso ( ) Resolução ( ) ( ) 2log2. log log

Árvores. Thiago Martins, Fabio Gagliardi Cozman. PMR2300 / PMR3201 Escola Politécnica da Universidade de São Paulo

Codificação de Huffman

Processamento de Imagem. Prof. MSc. André Yoshimi Kusumoto

Fundamentos de Telecomunicações

FACULDADE DE TALENTOS HUMANOS DEPARTAMENTO DE ENGENHARIA ELÉTRICA PROCEDIMENTOS EXPERIMENTAIS DE COMUNICAÇÃO DIGITAL II PARA TELECOMUNICAÇÃO

Compactação de Dados. Fonte de consulta: Szwarcfiter, J.; Markezon, L. Estruturas de Dados e seus Algoritmos, 3a. ed. LTC. Seção 12.5 em diante.

Paradigmas de Linguagens

Estrutura de dados 1. Processamento de Cadeias de Caracteres

Compressão de Imagens. Lilian Nogueira de Faria (Bolsista)...DPI/INPE Leila Maria Garcia Fonseca (Coordenadora)...DPI/INPE

UFSM-CTISM. Comunicação de Dados Aula-17

2 Teoria da Informação

Alfabeto, Cadeias, Operações e Linguagens

Universidade de Pernambuco Escola Politécnica de Pernambuco

Teoria de distorção da taxa

Formatos de Áudio e Vídeo Digital Compactação de Vídeo

Problemas de Fundamentos de Telecomunicações 1ª Parte: Codificação de Fonte e Codificação de Canal

Códigos de Permutação para Compressão de Dados e Modulação 13. Codificador de fonte. Decodificador. Figura 1.1: Modelo de um sistema de comunicações.

PCS 3115 Sistemas Digitais I Códigos Prof. Dr. Marcos A. Simplicio Jr.

Problema de escalonamento

Douglas Antoniazi Kleberson Hayashi Angelossi

Estruturas de Dados 2

Processamento de Imagem. Compressão de Imagens Professora Sheila Cáceres

Televisão Digital. Codificação de Entropia Códigos de Huffman. Hélio Manuel Gonçalves Jaco

Compressão de Imagens: Padrão JPEG

Organização de arquivos para desempenho. Manutenção de Arquivos. Compressão de dados. Compressão. Notação diferenciada. Técnicas

Strings (Compressão) Estrutura de Dados II Jairo Francisco de Souza

Projeto e Análise de Algoritmos Aula 8: Algoritmos Gulosos (DPV 5; CLRS 4)

Formatos Imagem. Licenciatura em Engenharia Informática e de Computadores Computação Gráfica. Apontamentos CG Edward Angel, Sec. 8.

COMUNICAÇÕES DIGITAIS. Livro Texto: Communication Systems, 4 TH Edition Simon Haykin John Wiley & Sons, Inc.

COM29008 LISTA DE EXERCÍCIOS #

Aplicações de árvores/ Exercícios. 30/11 e 2/12 QuadTrees para representação de imagens e Algoritmo de Huffman para transmissão/compressão de dados

Introdução à. Teoria da Informação

Um Esquema de Codificação Homofônica Universal Utilizando o Algoritmo LZW

SCC-502 Algoritmos e Estruturas de Dados 1 M. Cristina/Jorge. Trabalho Rec Codificação de Huffman

Linguagens Formais e Autômatos 02/2015. LFA Aula 02. introdução 28/09/2015. Celso Olivete Júnior.

Transcrição:

Algoritmos de Compressão sem Perdas (continuação) Aula 08 Diogo Pinheiro Fernandes Pedrosa Universidade Federal Rural do Semiárido Departamento de Ciências Exatas e Naturais Curso de Ciência da Computação 13 de outubro de 2009

Na aula anterior... Compressão redução do volume de bits necessários para representar uma informação; Compressão sem perdas (lossless compression); Compressão com perdas (loss compression) Razão de compressão: razão = B 0 B 1 onde B 0 é número de bits antes da compressão e B 1 é o número de bits após a compressão.

Conceitos da Teoria da Informação Entropia: η = n i=1 p i log 2 1 p i onde p i é a probabilidade de ocorrência de um símbolo s i (de um alfabeto S) na informação. Entropia desordem! Indica a quantidade média de bits para representar uma informação; Quanto maior a entropia, menor será a compressão. Com base na entropia, há uma família de métodos de codificação que é conhecida como Codificação de Comprimento Variável.

Algoritmos de Compressão sem Perdas Algoritmo de Shannon Fano; Algoritmo de Huffman; Ambos os algoritmos montam seus códigos através da criação de uma árvore binária; O código é mínimo; Se um símbolo si tem grande frequência de ocorrência na informação, então o comprimento do seu código será menor. Caso contrário, será maior; O número médio de bits será o menor inteiro maior que a entropia η; η l O algoritmo de Huffman tem, usualmente, melhores resultados que o algoritmo de Shannon Fano;

Algoritmo de Shannon Fano Exemplo Considere uma informação que contem o alfabeto S = {A, B, C, D, E} com as seguintes ocorrências: A = 15 B = 7 C = 6 D = 6 E = 5

Algoritmo de Shannon Fano Exemplo As probabilidades são: p A = 15 39 p D = 6 39 p B = 7 39 p E = 5 39 p C = 6 39 Calculando a entropia tem-se: η = 2, 19 3 bits

Algoritmo de Shannon Fano Exemplo

Algoritmo de Shannon Fano Exemplo Símbolo Ocorrência Código Tamanho do Código N o de bits A 15 00 2 30 B 7 01 2 14 C 6 10 2 12 D 6 110 3 18 E 5 111 3 15 Total de bits 89 Média de bits por símbolo 2,28

Algoritmo de Huffman Exemplo

Algoritmo de Huffman Exemplo Símbolo Ocorrência Código Tamanho do Código N o de bits A 15 1 1 15 B 7 000 3 21 C 6 001 3 18 D 6 010 3 18 E 5 011 3 15 Total de bits 87 Média de bits por símbolo 2,23

Codificação Adaptativa de Huffman O algoritmo de Huffman requer o conhecimento das frequências relativas dos símbolos utilizados na informação; Problema real esse tipo de informação não é frequentemente disponibilizada; Exemplo: streaming de áudio ou vídeo; Solução utilizar um algoritmo adaptativo, onde as informações estatísticas são obtidas e uma atualização dinâmica do código ocorre enquanto a informação está sendo recebida;

Codificação Adaptativa de Huffman Procedimento para o codificador: 1: Obter código inicial; 2: Enquanto não chegar fim de arquivo fazer 3: Obter símbolo s; 4: Codificar símbolo s; 5: Atualizar árvore binária; 6: Fim Enquanto

Codificação Adaptativa de Huffman Procedimento para o decodificador: 1: Obter código inicial; 2: Enquanto não chegar fim de arquivo fazer 3: Decodificar o código c; 4: Exibir o símbolo associado ao código c; 5: Atualizar árvore binária; 6: Fim Enquanto

Codificação Adaptativa de Huffman Observações Código inicial: Utiliza um código sem estar baseado na frequência de ocorrência dos símbolos; Exemplo: o código ASCII pode ser usado como código inicial para fluxo de caracteres. Atualização da árvore binária: Basicamente consiste no incremento da frequência de ocorrência para os símbolos, seguido da atualização da árvore. Ambos o codificador e o decodificador tem que usar os mesmos código inicial e algoritmo de atualização da árvore.

Codificação Baseada em Dicionário Tipo de codificação que utiliza códigos de comprimento fixo, contudo eles não representam apenas os símbolos de um alfabeto mas também strings formador desses símbolos; O algoritmo mais comum é o LZW (Lempel Ziv Welch) variações dessa técnica é usada em imagens GIF, por exemplo; A codificação/decodificação inicia-se a partir de uma tabela simples que relaciona símbolos com códigos (dicionário). Essa tabela é enriquecida com a leitura dos símbolos em avanço.

Algoritmo LZW Compressão 1: s próximo caractere de entrada; 2: Enquanto não chegar no fim do arquivo fazer 3: c próximo caractere de entrada; 4: Se a string s + c existe no dicionário então 5: s s + c; 6: Senão 7: Apresentar código para s; 8: Adicionar s + c ao dicionário com um novo código; 9: s c; 10: Fim Se 11: Fim Enquanto 12: Apresentar código para s;

Exemplo Exemplo: compressão de ABABBABCABABBA. Dicionário inicial: código string --------------- 1 A 2 B 3 C

Exemplo s c saída código string ------------------------------------------- 1 A 2 B 3 C ------------------------------------------- A B 1 4 AB B A 2 5 BA A B * * * AB B 4 6 ABB B A * * * BA B 5 7 BAB B C 2 8 BC C A 3 9 CA A B * * * AB A 4 10 ABA A B * * * AB B * * * ABB A 6 11 ABBA A EOF 1 * * Código de saída: 1 2 4 5 2 3 4 6 1 Relação de Compressão = 14 9 = 1, 56

OBSERVAÇÕES Como, para este algoritmo apresentado, não há critério de otimização, a tabela de strings cresce rapidamente; Implementações LZW típicas para informações textuais usam código com comprimento de 12 bits os primeiros 256 códigos do dicionário correspondem ao código ASCII. Relação de Compressão = 14 8 bits = 1, 04 9 12 bits

Algoritmo de Descompressão 1: s NULL; 2: Enquanto não chegar fim do arquivo fazer 3: k próximo código da entrada; 4: entry símbolo associado ao código k; 5: Exibir entry; 6: Se s NULL então 7: Adicione a string s + entry[0] no dicionário com um novo código; 8: Fim Se 9: s entry 10: Fim Enquanto

Exemplo O algoritmo de descompressão constrói o dicionário a partir de uma tabela simplificada; EXEMPLO: realizar a descompressão do código 124523461. s k entry código string ------------------------------------------- 1 A 2 B 3 C ------------------------------------------- NULL 1 A * * A 2 B 4 AB B 4 AB 5 BA AB 5 BA 6 ABB BA 2 B 7 BAB B 3 C 8 BC C 4 AB 9 CA AB 6 ABB 10 ABA ABB 1 A 11 ABBA A EOF * * * Informação: ABABBABCABABBA

PROBLEMA Durante a construção do dicionário pelo compressor, pode ocorrer a criação de uma string para um código que, na construção da tabela pelo descompressor, este código/string ainda não aparece definido ou seja, um código lido do arquivo ainda não tem correspondência na tabela do descompressor; Tratamento da exceção:. entry símbolo associado ao código k; Se entry == NULL então entry s + s[0]; Fim Se Exibir entry;.

Compressão de Imagens sem Perdas Codificação Diferencial A codificação diferencial é utilizada em sinais de áudio porque eles são sinais unidimensionais; Uma abordagem similar pode ser aplicada às imagens (sinais bidimensionais). Operador diferencial: (x, y) (x 1, y)

Compressão de Imagens sem Perdas Codificação Diferencial Operador diferencial: d(x, y) = I (x, y) I (x 1, y) d(x, y) = 4I (x, y) I (x, y 1) I (x, y+1) I (x 1, y) I (x+1, y) Com uma imagem de diferenças, a codificação de Huffman poderia ser facilmente aplicada e uma compressão eficiente seria obtida redução do histograma da imagem aumento na quantidade de símbolos com maior frequência relativa.