Fundamentos de Sistemas Multimdia Fundamentos de Sistemas Multimdia
Tcnicas de Compactao e Compresso Profa. Dbora Christina Muchaluat Saade deborams@telecom.uff.br Tcnicas Tcnicas de de Compactao Compactao e e Compresso Compresso Profa. Dbora Christina Muchaluat Saade deborams@telecom.uff.br Departamento de Engenharia de Telecomunicaes Departamento de Engenharia de Telecomunicaes - - UFF UFF 2 Fundamentos de Sistemas Multimdia Fundamentos de Sistemas Multimdia Tcnicas de Compactao e Compresso Tcnicas de Compactao e Compresso Compactao X Compresso Classificao das tcnicas de compresso Codificao por Entropia, na Origem e Hbrida Tcnicas de Compactao Codificao por carreira Codificao por Shannon-Fano Codificao de Huffman Codificao de Lempel-Ziv-Welch (LZW) Codificao aritmtica 3 Fundamentos de Sistemas Multimdia Fundamentos de Sistemas Multimdia Tcnicas de Compactao e Compresso Tcnicas de Compactao e Compresso Tcnicas de Compresso Reduo do domnio Reduo do espao de quantizao Codificao preditiva Codificao por sub-bandas Codificao por transformadas Quantizao vetorial 4 Fundamentos de Sistemas Multimdia Fundamentos de Sistemas Multimdia Compactao x Compresso Compactao x Compresso Compactao: Quando eliminamos apenas a redundncia de um sinal No h perda de informao Compresso sem perdas Podem ser usadas para qualquer sinal (mdia) Compresso: Quando, na reduo dos dados, h perda de informao Compresso com perdas Algumas tcnicas so usadas em sinais especficos Compresso perceptualmente sem perdas humanos no percebem Ex.: MP3 para udio 5 Fundamentos de Sistemas Multimdia Fundamentos de Sistemas Multimdia Classificao das Tcnicas de Compresso Classificao das Tcnicas de Compresso Codificao por Entropia trata cadeias de bits sem levar em conta seu significado tcnica genrica, sem perda e totalmente reversvel Ex.: tcnicas de compactao: codificao por carreira, codificao de Huffman, codificao aritmtica Codificao na Origem leva em considerao a semntica dos dados processa o dado original distinguindo o dado relevante e o irrelevante removendo dados irrelevantes comprime o dado original Ex.: tcnicas de compresso: codificao preditiva, codificao por sub-bandas, codificao por transformadas, quantizao vetorial Codificaes Hbridas Combinam tcnicas com e sem perdas (vrias tcnicas so agrupadas para formar uma nova tcnica de codagem) Ex.: J PEG, MPEG, H.263, ... 6 Fundamentos de Sistemas Multimdia Fundamentos de Sistemas Multimdia Compactao Compactao Codificao por carreira (Run Length Coding) Tcnica boa quando informao se repete OBS.: Toda tcnica de compactao pode diminuir ou aumentar o volume de dados 7 Fundamentos de Sistemas Multimdia Fundamentos de Sistemas Multimdia Codificao por Shannon Codificao por Shannon- -Fano Fano A seqncia a ser compactada deve ser analisada previamente, identificando-se os caracteres e suas respectivas freqncias/probabilidades Ordene os smbolos de acordo com suas freqncias. Ex.: ABCDE Divida recursivamente em 2 partes, cada uma com aproximadamente o mesmo nmero de contagem 8 Fundamentos de Sistemas Multimdia Fundamentos de Sistemas Multimdia Codificao por Shannon Codificao por Shannon- -Fano Fano Seqncia ABDEACD... 00 01 110 111 00 10 110 ... Envia: smbolos rvore seqncia 9 Fundamentos de Sistemas Multimdia Fundamentos de Sistemas Multimdia Codificao de Huffman Codificao de Huffman Codificao Estatstica A seqncia a ser compactada deve ser analisada previamente, identificando-se os caracteres e suas respectivas freqncias/probabilidades Atribui menos bits a smbolos que aparecem mais freqentemente e mais bits para smbolos que aparecem menos 10 Fundamentos de Sistemas Multimdia Fundamentos de Sistemas Multimdia Codificao de Huffman Codificao de Huffman Algoritmo: Insira os ns (smbolos/freqncias) em uma lista Repita at que a lista contenha apenas um n: Selecione os dois ns de mais baixa freqncia e crie um n pai para ambos Atribua ao n pai a soma das freqncias e insira-o na lista Atribua os cdigos 0 e 1 aos dois ramos da rvore e retire os filhos da lista 11 Fundamentos de Sistemas Multimdia Fundamentos de Sistemas Multimdia Exemplo Exemplo - - Huffman Huffman 15 111 5 E 18 110 6 D 18 101 6 C 21 100 7 B 15 0 15 A Subtotal (# de bits) Cdigo Freqncia Smbolo Total (# de bits) = 87 Compactao = 117 : 87 Seqncia ABDEACD... 0 100 110 111 0 101 110 ... 13 Fundamentos de Sistemas Multimdia Fundamentos de Sistemas Multimdia Huffman Huffman - - Decodificao Decodificao 14 Fundamentos de Sistemas Multimdia Fundamentos de Sistemas Multimdia Codificao de Huffman Codificao de Huffman Nem todos os caracteres precisam ter uma representao codificada na tabela de Huffman apenas os caracteres com alta probabilidade de ocorrncia demais so codificados diretamente e marcados com flag especial Tcnica til quando o nmero de caracteres diferentes muito grande mas apenas alguns deles tm uma alta probabilidade de ocorrncia 15 Fundamentos de Sistemas Multimdia Fundamentos de Sistemas Multimdia Codificao Aritmtica Codificao Aritmtica Utiliza um nico cdigo por string de caracteres codificada A seqncia a ser compactada deve ser analisada previamente, identificando-se os caracteres e suas respectivas freqncias/probabilidades Ex.: e=0.3; n=0.3; t=0.2; w=0.1; .=0.1 Precisa de um caracter marcando o fim de cada seqncia (.) Algoritmo: Dividir o intervalo de [0, 1] de acordo com a probabilidade de ocorrncia de cada caracter na seqncia Repita at o caracter de fim de seqncia Escolha o intervalo correspondente ao prximo caracter e divida-o novamente de acordo com as probabilidades iniciais O cdigo pode ser qualquer nmero dentro do ltimo intervalo encontrado (ValorInicial <= cdigo < ValorFinal) 16 Fundamentos de Sistemas Multimdia Fundamentos de Sistemas Multimdia Exemplo Exemplo Codificao Aritmtica Codificao Aritmtica 17 Fundamentos de Sistemas Multimdia Fundamentos de Sistemas Multimdia Codificao Aritmtica Codificao Aritmtica O nmero de dgitos decimais no cdigo aumenta linearmente com o nmero de caracteres na string O nmero mximo de caracteres em uma string determinado pela preciso com a qual nmeros de ponto flutuante so representados nos computadores de origem e destino Por essa razo, mensagens completas devem ser fragmentadas em vrias strings menores e cada string deve ser codificada separadamente 18 Fundamentos de Sistemas Multimdia Fundamentos de Sistemas Multimdia Codificao de Lempel Codificao de Lempel- -Ziv Ziv Codificao de Lempel-Ziv (LZ) Ao invs de utilizar caracteres como a base da codificao, utiliza strings de caracteres baseada na construo de um dicionrio de frases (grupos de um ou mais caracteres) a partir do fluxo de entrada Quando uma nova frase encontrada Ela adicionada ao dicionrio Se a frase encontrada j foi registrada ela substituda pelo cdigo no dicionrio Esta tcnica boa para compresso de arquivos textos, onde temos uma grande repetio de frases exemplo em portugus: "ela", "Contudo", "onde" 19 Fundamentos de Sistemas Multimdia Fundamentos de Sistemas Multimdia Codificao de Lempel Codificao de Lempel- -Ziv Ziv Codificao Lempel-Ziv (LZ) Exemplo de taxa de compactao suponha que temos um arquivo de 10000 caracteres se ns representarmos o arquivo usando 8 bits por caracter, o arquivo requer 80000 bits para represent-lo assumindo que o arquivo tenha 2000 palavras ou frases das quais 500 so diferentes necessitamos de 9 bits como token para identificar cada palavra ou frase precisamos de 9*2000 bits para codificar o arquivo obtemos uma taxa de compresso de 80000:18000 (4,4) na prtica, o dicionrio tambm deve ser mantido/enviado baixando a taxa de compresso obtida 20 Fundamentos de Sistemas Multimdia Fundamentos de Sistemas Multimdia Algoritmo Lempel Algoritmo Lempel- -Ziv Ziv Primeiro passo: inicializar uma tabela de cdigos com todos os caracteres existentes na string que pretendemos compactar A codificao se inicia definindo a seqncia de smbolos corrente S como o primeiro smbolo a codificar 1. Se no existem mais smbolos para codificar, d como sada o cdigo de S. Em caso contrrio, 2. Pegue o prximo smbolo P e concatene a S, obtendo a nova seqncia SP 3. Se SP j estiver no dicionrio, faa S = SP e volte para o passo 1. Em caso contrrio, 4. D como sada o cdigo de S 5. Adicione SP ao dicionrio, se ainda houver espao 6. Faa S = P e volte para o passo 1 21 Fundamentos de Sistemas Multimdia Fundamentos de Sistemas Multimdia Exemplo de Lempel Exemplo de Lempel- -Ziv Ziv Exemplo de compactao LZW Compresso da cadeia de caracteres ABACABA Primeiro passo: inicializar uma tabela de cdigos com todos os caracteres existentes na string que pretendemos compactar: #0 =A, #1 =B, #2 =C Caracter A (existe na tabela) representamos A por #0 AB recebe #3 Caracter B (existe na tabela) representamos AB por #0#1 BA recebe #4 Caracter A (existe na tabela) representamos ABA por #0#1#0 junta AC na tabela com ndice #5 22 Fundamentos de Sistemas Multimdia Fundamentos de Sistemas Multimdia Exemplo de Lempel Exemplo de Lempel- -Ziv Ziv Exemplo de compresso LZW Compresso da cadeia de caracteres ABACABA Tabela atual: #0 =A, #1 =B, #2 =C, #3 =AB, #4 =BA, #5 =AC Caracter C (existe na tabela) representamos ABAC por #0#1#0#2 CA recebe #6 Caracter AB (existe na tabela) representamos ABACAB por #0#1#0#2#3 ABA recebe #7 Caracter A (existe na tabela) representamos ABACABA por #0 #1 #0 #2 #3 #0 23 Fundamentos de Sistemas Multimdia Fundamentos de Sistemas Multimdia Codificao de Lempel Codificao de Lempel- -Ziv Ziv- -Welch (LZW) Welch (LZW) Codificador e decodificador constroem o contedo do dicionrio dinamicamente enquanto o texto processado Inicialmente, o dicionrio contm somente o conjunto de caracteres que foi usado na construo do texto (ex. ASCII 7 bits) As entradas restantes so utilizadas para codificar palavras que ocorrem no texto Exemplo: This is simple as it is ... 24 Fundamentos de Sistemas Multimdia Fundamentos de Sistemas Multimdia Exemplo de Lempel Exemplo de Lempel- -Ziv Ziv- -Welch Welch 25 Fundamentos de Sistemas Multimdia Fundamentos de Sistemas Multimdia Exemplo de Lempel Exemplo de Lempel- -Ziv Ziv- -Welch Welch 26 Fundamentos de Sistemas Multimdia Fundamentos de Sistemas Multimdia Algoritmo Algoritmo LZ77 LZ77 Variao do LZW usado em vrios compactadores comerciais PKZIP/PKUNZIP (para o DOS) ARJ GZIP/GUNZIP Compress/Uncompress (para o UNIX) Princpio de funcionamento: Em uma seqncia de caracteres, o algoritmo procura na janela corrente a maior sub-seqncia que casa com o incio do lookahead buffer e d como sada um ponteiro para o incio da sub-seqncia na janela e o primeiro caracter no lookahead buffer que no casa com a seqncia. Se no houver sub-seqncia, a sada um ponteiro nulo e o caracter na posio atual da seqncia original. 27 Fundamentos de Sistemas Multimdia Fundamentos de Sistemas Multimdia Algoritmo Algoritmo LZ77 LZ77 Termos utilizados no algoritmo: Seqncia de entrada Seqncia de caracteres a ser comprimida Caracter: Elemento bsico da seqnciade entrada Posio atual: Posio do caracter na seqnciade entrada que est sendo codificado no momento (incio do lookaheadbuffer) Lookahead buffer: Seqncia de caracteres a partir da posio atual at o fim da seqnciade entrada 28 Fundamentos de Sistemas Multimdia Fundamentos de Sistemas Multimdia Algoritmo Algoritmo LZ77 LZ77 Termos utilizados no algoritmo: Janela: J anela de tamanho W contm W caracteres a partir da posio atual em direo ao incio da seqnciade entrada, i.e. os ltimos W caracteres processados Ponteiro: Um ponteiro aponta para a seqncia que casa na janela e tambm indica seu comprimento (L) 29 Fundamentos de Sistemas Multimdia Fundamentos de Sistemas Multimdia Algoritmo Algoritmo LZ77 LZ77 Algoritmo: 1. Faa posio atual igual ao incio da seqncia de entrada 2. Encontre a maior sub-seqncia (longest match) na janela que casa como contedo do lookahead buffer 3. D como sada o par (P,C), onde: P o ponteiro para a sub-seqncia na janela C o primeiro caracter no lookahead buffer que nocasa com a sub-seqncia 4. Se o lookahead buffer no estiver vazio, mova a posio atual (e a janela) L+1 caracteres para frente e volte para o passo 2 (L o comprimento da sub-seqncia). 30 Fundamentos de Sistemas Multimdia Fundamentos de Sistemas Multimdia Algoritmo Algoritmo LZ77 LZ77 Exemplo: seqncia AABCBBABC Processo de Codificao C B A B B C B A A Char 9 8 7 6 5 4 3 2 1 Pos (5,2) C C AB 7 5 (2,1) B B B 5 4 (0,0) C C -- 4 3 (1,1) B B A 2 2 (0,0) A A -- 1 1 Sada Char Match Pos Step 31 Fundamentos de Sistemas Multimdia Fundamentos de Sistemas Multimdia Algoritmo Algoritmo LZ77 LZ77 Decodificao: A janela mantida da mesma forma que na codificao. Em cada passo, o algoritmo l o par (P,C) da entrada e d como sada a seqncia da janela a partir de P seguida do caracter C Exemplo: (0,0)A (1,1)B (0,0)C (2,1)B (5,2)C 1. (0,0)A => W = nula, sada = A 2. (1,1)B => W = A, sada = AAB 3. (0,0)C => W = AAB, sada = AABC 4. (2,1)B => W = AABC, sada = AABCBB 5. (5,2)C = > W = AABCBB, sada = AABCBBABC 32 Fundamentos de Sistemas Multimdia Fundamentos de Sistemas Multimdia Algoritmo Algoritmo LZ77 LZ77 Consideraes principais: Boa taxa de compresso para vrios tipos de dados Codificao pode ser lenta, j que vrias comparaes so feitas entre o lookahead buffer a a janela Decodificao muito simples e rpida Requisitos de memria so poucos tanto para codificao quanto para decodificao A nica estrutura mantida em memria a janela, que normalmente tem tamanho entre 4 e 64 KB. 33 Fundamentos de Sistemas Multimdia Fundamentos de Sistemas Multimdia Tcnicas de Compresso Tcnicas de Compresso Compresso: Quando, na reduo dos dados, h perda de informao Compresso com perdas Algumas tcnicas so usadas em sinais especficos Compresso perceptualmente sem perdas humanos no percebem Ex.: MP3 para udio Tcnicas Reduo do domnio Reduo do espao de quantizao Codificao preditiva Codificao por sub-bandas Codificao por transformadas Quantizao vetorial 34 Fundamentos de Sistemas Multimdia Fundamentos de Sistemas Multimdia Reduo do Domnio Reduo do Domnio Idia bsica Simplesmente descarta algumas amostras Ex.: padres para vdeo digital Formatos 4:2:2, 4:2:0 Informaes de luminncia so mais importantes que crominncia, ento o nmero de amostras de crominncia pode ser menor Ex.: compresso em imagens diminui a resoluo geomtrica aumenta o tamanho do pixel 35 Fundamentos de Sistemas Multimdia Fundamentos de Sistemas Multimdia Reduo do domnio em imagens Reduo do domnio em imagens 36 Fundamentos de Sistemas Multimdia Fundamentos de Sistemas Multimdia Reduo do Espao de Quantizao Reduo do Espao de Quantizao Idia bsica Diminuir a quantidade de bits por amostra Ex.: compresso de imagens Imagem original com 24 bits por pixel (16 milhes de cores) Imagem comprimida com 8 bits por pixel (256 cores) fazendo uma correspondncia entre os cdigos 37 Fundamentos de Sistemas Multimdia Fundamentos de Sistemas Multimdia Codificao Preditiva Codificao Preditiva Codificao diferencial ou codificao relativa Idia bsica Amplitude de uma amostra grande, mas a diferena de amplitude entre amostras sucessivas relativamente pequena Ao invs de codificar o valor de cada amostra, codifica a diferena entre seu valor e o anterior Utiliza menos bits e obtm o mesmo erro Ex.: DPCM (Differential Pulse Code Modulation) ADPCM (Adaptive Differential Pulse Code Modulation) 38 Fundamentos de Sistemas Multimdia Fundamentos de Sistemas Multimdia Codificao por Sub Codificao por Sub- -Bandas Bandas Idia bsica Diviso da banda passante do sinal em vrias sub-bandas codificadas de forma distinta Trata com maior preciso as sub-bandas mais importantes do sinal Por exemplo, sinal de voz: 300-800Hz qualidade e timbre 8 bits por amostra 800-1400Hz pouca informao 2 bits por amostra 1400-2400Hz reconhecimento e intelegibilidade 8 bits por amostra Maior informao de contedo (ex.: voz metlica) 2400-3400Hz pouca informao 3 bits por amostra 40 Fundamentos de Sistemas Multimdia Fundamentos de Sistemas Multimdia Codificao por Transformadas Codificao por Transformadas Idia bsica Transformar os dados para outro domnio matemtico onde uma tcnica de compresso seja melhor aplicada Ex.: Transformada de Fourier =>transforma sinais no domnio do tempo para o domnio da freqncia Deve existir uma transformada inversa Transformadas eficazes para reduo de dados so: DCT Discrete Cosine Transform (J PEG) FFT Fast Fourier Transform (MPEG-udio) 42 Fundamentos de Sistemas Multimdia Fundamentos de Sistemas Multimdia Transformadas em Imagens Transformadas em Imagens Existem vrias similaridades entre amostras (no tempo) e pixels. Na verdade, podemos considerar os pixels como se fossem amostras do sinal imagem, s que amostras obtidas no no tempo, mas no espao. exatamente por isso que podemos aplicar todas as tcnicas aplicadas em sinais contnuos nas imagens estticas. 43 Fundamentos de Sistemas Multimdia Fundamentos de Sistemas Multimdia Codificao por Transformadas Codificao por Transformadas 44 Fundamentos de Sistemas Multimdia Fundamentos de Sistemas Multimdia Codificao por Transformadas Codificao por Transformadas 45 Fundamentos de Sistemas Multimdia Fundamentos de Sistemas Multimdia Quantizao Vetorial Quantizao Vetorial Fluxo de dados divido em blocos Constri uma tabela (ou usa uma predefinida) contendo o conjunto de valores que mais aparecem (valores padres) Para cada bloco, a tabela consultada para achar o padro mais parecido Ento cada bloco codificado com o ndice do vetor O decodificador deve conhecer a mesma tabela e usa os ndices para gerar uma aproximao do fluxo de dados original 46 Fundamentos de Sistemas Multimdia Fundamentos de Sistemas Multimdia Mdia Texto Profa. Dbora Christina Muchaluat Saade deborams@telecom.uff.br Mdia Texto Mdia Texto Profa. Dbora Christina Muchaluat Saade deborams@telecom.uff.br Departamento de Engenharia de Telecomunicaes Departamento de Engenharia de Telecomunicaes - - UFF UFF 47 Fundamentos de Sistemas Multimdia Fundamentos de Sistemas Multimdia Compresso de Texto Compresso de Texto Texto no tolera erros Compactao = Compresso sem perdas Classificao das tcnicas de compactao: Tcnicas que usam caracteres nicos como base X Tcnicas que usam strings de caracteres como base Codificao esttica X Codificao dinmica 48 Fundamentos de Sistemas Multimdia Fundamentos de Sistemas Multimdia Compresso de Texto Compresso de Texto Tcnicas que usam caracteres nicos como base Codificao por carreira S usa se repetir no mnimo 4 vezes (caracter, smbolo (!), nmero de vezes) entrada: ABCCCCCCCCDEFGGG sada: ABC!4DEFGGG Codificao de Shannon-Fano Codificao aritmtica Codificao de Huffman 49 Fundamentos de Sistemas Multimdia Fundamentos de Sistemas Multimdia Compresso de Texto Compresso de Texto Tcnicas que usam strings de caracteres como base Codificao por carreira pode-se substituir seqncias maiores que um requer que o tamanho da seqncia seja codificado ou pode-se usar um caracter especial de fim (smbolo (!), nmero de vezes, seqncia, delimitador de fim ($)) entrada: UFYUGDUFHUFHUFHUFHUFHBFD sada: UFYUGD!5UFH$BFD Se smbolos especiais aparecerem nos dados (character stuffing) entrada: U!HIIIIID sada: U!!HI!1D Codificao de Lempel-Ziv-Welch 50 Fundamentos de Sistemas Multimdia Fundamentos de Sistemas Multimdia Compresso de Texto Compresso de Texto Codificao esttica Tabelas de cdigos so conhecidas a priori (padronizadas) Tabelas de cdigos so enviadas junto com a seqncia codificada Exemplos: Codificao de Shannon-Fano Codificao aritmtica Codificao de Huffman Codificao de Lempel-Ziv Codificao dinmica Tabelas de cdigos so calculadas dinamicamente no momento da decodificao Exemplos: Codificao de Lempel-Ziv-Welch Codificao de Huffman dinmica 51 Fundamentos de Sistemas Multimdia Fundamentos de Sistemas Multimdia Codificao de Huffman Dinmica Codificao de Huffman Dinmica A rvore de Huffman construda dinamicamente na codificao e na decodificao No necessrio saber a freqncia dos smbolos a priori Se o caracter no estiver presente na rvore ainda (da primeira vez que aparece), ele no compactado Usa o conceito de uma folha vazia que representa o local onde o prximo caracter ser inserido na rvore 52 Fundamentos de Sistemas Multimdia Fundamentos de Sistemas Multimdia Codificao de Huffman Dinmica Codificao de Huffman Dinmica