Representa - PowerPoint PPT Presentation

About This Presentation
Title:

Representa

Description:

Title: Aquisi o de Dados Multim dia Author: Joaquim Melo Henriques Macedo Last modified by: Joaquim Macedo Created Date: 4/3/2003 6:04:30 PM Document presentation ... – PowerPoint PPT presentation

Number of Views:47
Avg rating:3.0/5.0
Slides: 67
Provided by: Joaqu94
Category:

less

Transcript and Presenter's Notes

Title: Representa


1
Representação e Compressão de Texto
  • Joaquim Macedo
  • Departamento de Informática da Universidade do
    Minho Faculdade de Engenharia da Universidade
    Católica de Angola

2
Sumário
  • Introdução
  • Representação do Texto
  • Princípios de compressão de texto
  • Redundância Estatística
  • Função densidade de probablidade e entropia
  • Teorema de Shannon para codificação de fonte sem
    ruído
  • Codificação de Huffman
  • Codificação Aritmética
  • Compressão baseada em dicionário
  • Técnica LZ77
  • Técnica LZ782

3
Introdução
  • O texto é o media mais importante para
    representar informação
  • Media mais antigo para armazenar e transmitir
    informação
  • Maior parte da informação actual é mantida em
    texto
  • Objecto desta aula
  • Representação digital de texto e técnicas de
    compressão

4
Representação de Texto
ASCII (American National Standards Institute
ANSI) American Standard Code for Information
Interchange
O código ASCII é um código de 8 bits para
representação de caracteres. Por exemplo o
código para H é 01001000, para e é 01100101. A
mensagem Hello pode ser representada
como 01001000 01100101 01101100 01101100
01101111 00101110
5
Representação de Texto
ASCII table (starting from 32)
6
Tabela ASCII
7
Tabela ASCII extendida
8
Representação de Texto
Código bits Caracteres
ASCII 8 256
Unicode 16 65536
ISO International Organization for
Standardization
9
Representação de textoRequisitos de espaço de
armazenamento
  • Como o texto é usado extensivamente em muitos
    tipos de documentos como livros, jornais e outros
    periódicos
  • É necessário representá-lo eficientemente para
    reduzir os requisitos do espaço de armazenamento

10
Representação de textoRequisitos de espaço de
armazenamento
  • Exemplo 6.1
  • Considere um livro com 800 páginas. Cada página
    contém em média 40 linha e cada linha 80
    caracteres (incluindo espaços). Se o livro for
    armazenado em formato digital que espaço de
    armazenamento é necessário?
  • Resposta 2.44 Mbytes

11
Representação de textoRequisitos de espaço de
armazenamento
  • Um documento típico requer alguns Mbytes de
    espaço de armazenamento
  • É possível representar o mesmo documento usando
    menos espaço?
  • Isso é verdade
  • É possível compactar texto sem perder informação!
  • Muitos de nós já usaram o winzip (Windows) ou o
    gzip (Linux)

12
Princípios para Compressão de Texto
  • Os textos típicos têm informação redundante
  • As técnicas de compressão reduzem ou eliminam
    essa redundância
  • Tipos de redundância
  • Estatística
  • Probabilidade não uniforme de ocorrência de
    caracteres ou símbolos (menos bits ao símbolos de
    maior ocorrência)
  • Conhecimento
  • Quando o texto a codificar é limitado em termos
    de âmbito, pode ser associado conhecimento comum
    ao codificador e descodificador nesse caso é
    enviada a informação indispensável para
    reconstruir o texto original.

13
Redundância Estatística
  • Métodos de redução de redundância estatística
  • Baseados na teoria de codificação das fontes
  • Cada amostra de dados (caracter) tratado com
    símbolo gerado por uma fonte de informação
  • Conjunto de todos símbolos é o alfabeto
  • Lida com a compressão de dados gerados por uma
    fonte que emite uma sequência de símbolos
    escolhidos dum alfabeto finto.

14
Teoria de Codificação de Fontes
  • 2 conceitos fundamentais
  • Entropia
  • Medida da informação contida na fonte
  • Define a quantidade mínima do débito médio de
    bits para reconstrução perfeita dos símbolos da
    fonte
  • Taxa de distorção
  • Define um limite inferir no débito médio de bits
    para uma dada distorção nos símbolos
    reconstruídos.

15
Função densidade de probabilidade
16
Exemplo 6.2
  • Considere a string Xaaabbbbbbccaaabbcbbbb
  • Determine o alfabeto
  • Determine o histograma e a função densidade de
    probabilidade dos caracteres.
  • Mostre que a soma das probabilidades dos símbolos
    do alfabeto é 1.

17
Entropia
18
EntropiaBlocos de símbolos
19
Exemplo 6.3
  • Considere a fonte do exemplo anterior. Calcule a
    entropia de 1ª e 2ª ordem.

20
Teorema de ShannonCodificação de Fontes sem
Ruído
  • Considere uma fonte de texto com um alfabeto de
    tamanho K e entropia H(S) e a codificação de
    blocos de N símbolos da fonte
  • Para qualquer é possível, escolhendo N
    suficientemente grande, construir um código em
    que número médio de bits por símbolo
  • cumpra a seguinte relação

21
Teorema de ShannonCodificação de Fontes sem Ruído
  • Pode ser mostrado que a entropia é limitada por

22
Exemplo 6.4
  • Considere uma fonte de informação com alfabeto
    a,b,c,d. Os símbolos têm igual probabilidade de
    ocorrência.
  • Calcule a entropia e a redundância da fonte
  • Qual o débito de bits médio necessário para
    transmitir os símbolos gerados pela fonte?
  • Conceba um código adequado para os símbolos da
    fonte.

23
Exemplo 6.5
  • Qual a o débito de bits médio para uma fonte de
    três símbolos? Qual o débito necessário para a
    fonte do exemplo 6.2. Calcule a redundância da
    fonte. Quando é que redundância é zero?

24
Interpretação do Teorema de Shannon
  • O Teorema estabelece que o limite mínimo para o
    débito de bits
  • Mas não nos indica como fazê-lo. É muito difícil
    conseguir um débito igual à entropia.
  • Normalmente é superior de um valor inferior a
    delta

25
Métodos estatísticos de compressão
  • Duas estratégias de codificação
  • Huffman
  • Atribui um código de bits de comprimento variável
    a cada símbolo
  • Relativamente rápido e acesso aleatório
  • Semi-estático versus adaptativo
  • Aritmética
  • Texto de entrada representado por número reais
    entre 0 e 1
  • Símbolos de entrada com maiores probabilidades
    reduzem menos o intervalo que símbolos com menor
    probabilidade e portanto adicionam menos bits ao
    código de saída
  • Mais lento que o de Huffman e a decompressão não
    pode começar a meio do ficheiro

26
Código de Huffman
  • Inventado por Huffman a fazer um trabalho de casa
    em 1950..
  • Usados em muitos algoritmos de compressão
  • gzip, bzip, jpeg (como opção), fax,
  • Propriedades
  • Gera códigos de prefixo óptimos
  • Fácilidade na
  • Geração de códigos
  • Codificação e descodificação
  • Comprimento médioH se as propabilidades forem
    potências de 2

27
Codificação de Huffman
  • Uma frase é codificada substituindo cada um dos
    seus símbolos com o respectivo código dado por
    uma tabela
  • A codificação de Huffman gera códigos para um
    conjunto de símbolos, dada uma distribuição de
    probabilidade dos símbolos
  • O tipo de código é chamada código de prefixo
  • Nenhuma palavra de código é prefixo de outra
    palavra de código

28
Códigos de Prefixo
  • Um código de prefixo é um código de comprimento
    variável onde nenhuma palavra de código é prefixo
    de outra palavra de código
  • Exemplo a 0, b 110, c 111, d 10
  • Pode ser visto como uma árvore binária com
    valores de mensagens nos nós terminais e 0 e 1
    nos seus ramos

0
1
0
1
a
0
1
d
b
c
29
Códigos de descodificação única
  • Um código de comprimento variável atribui uma
    sequência de bits (palavra de código) de
    comprimento variável a todos valores de mensagem
  • i.e. a 1, b 01, c 101, d 011
  • A sequência de bits 10110 que significa ?
  • É aba, ca, ou, ad?
  • Um código de descodificação única é um código de
    comprimento variável em que as sequências de bits
    podem sempre ser decomposta de forma únoca nas
    suas palavras de código.

30
Codificação de Huffman
  • As palavras de código podem ser armazenadas numa
    árvore
  • Árvore de descodificação
  • O algoritmo de Huffman funciona construindo a
    árvore de descodificação de baixo para cima

31
Codificação de HuffmanAlgoritmo
  • Algoritmo
  • cria para cada símbolo um nó terminal contendo o
    símbolo e a sua propabibilidade.
  • Os dois nós com as probabilidades mais pequenas
    tornam-se irmãos sob um novo nó pai, cuja
    probabilidade é a soma da dos filhos
  • A operação de combinação é repetidad até haver um
    único nó raiz.
  • Todos os ramos de todos nós não terminais são
    então etiquetados com 0 1.

32
Codificação de Huffman
  • A codificação de Huffman é geralmente rápida quer
    na codificação como na descodificação desde que a
    probabilidade seja estática.
  • Codificação de Huffman adaptativa é possível mas
    ou precisa de muito memória ou é lenta
  • Acoplada com um modelo baseado em palavras (em
    vez dum baseado em caracter), fornece uma boa
    compressão.

33
Codificação de Huffman
  • Frequências de caracter
  • A 20 (.20)
  • B 9 (.09)
  • C 15
  • D 11
  • E 40
  • F 5
  • Não há mais caracteres no documento

34
Codificação de Huffman
C .15
A .20
D .15
BF .14
E .4
0
1
F .05
B .09
35
Codificação de Huffman
  • Códigos
  • A 010
  • B 0000
  • C 011
  • D 001
  • E 1
  • F 0001

36
Exemplo 6.4
  • Determine o código de Huffman para os símbolos da
    tabela
  • Codifique a tring baecedeac!
  • Descodifique
  • 00011000100110000010111

Símbolo Probabilidade
a 0.2
b 0.1
c 0.2
d 0.1
e 0.3
! 0.1
37
Exemplo
  • p(a) .1, p(b) .2, p(c ) .2, p(d) .5

a(.1)
b(.2)
d(.5)
c(.2)
(.3)
(.5)
(1.0)
1
0
(.5)
d(.5)
a(.1)
b(.2)
(.3)
c(.2)
1
0
Passo 1
(.3)
c(.2)
a(.1)
b(.2)
0
1
a(.1)
b(.2)
Passo 2
Passo 3
a000, b001, c01, d1
38
Codificação e Descodificação
  • Codificação Começar no nó terminal da árvore de
    huffman e seguir o percurso para a raiz. Inverter
    a ordem dos bits e enviar.
  • Descodificação Começar na raiz da árvore e
    seguir o ramo de acordo com o bit recebido.
    Quando chegar à um no terminal enviar o símbolo e
    regressar à raiz.

(1.0)
1
0
(.5)
d(.5)
Há metodos mais rápidos que podem processar 8 ou
32 bits de cada vez
1
0
(.3)
c(.2)
0
1
a(.1)
b(.2)
39
Limitações dos Códigos de Huffman
  • Precisa de pelo menos 1 bit para representar a
    ocorrência de cada símbolo
  • Não podemos arranjar um código de Huffman que
    gaste 0.5 bits/símbolo
  • Se a entropia da fonte for menor que 1
    bit/simbolo o código de Huffman não é eficiente!
  • Não se adapta eficientemente a um fonte com
    estatísticas variáveis.
  • Embora haja códigos de Huffman dinâmicos, são
    difíceis de concretizar

40
Codificação aritmética
  • Outra técnica baseada na entropia
  • Maior relação de compressão que a codificação de
    Huffman
  • Pode disponibilizar débito de bits infeiores a 1
  • O débito aproxima-se do limite teórico da
    entropia da fonte
  • Técnica de codificação diferente da de Huffman
  • Huffman codificação independente por símbolo
  • Resultado concatenação do código de cada símbolo
  • Aritmética uma palavra de código para toda a
    mensagem

41
Exemplo
  • Considere o alfabeto inglês com 26 letras.
    Calcule o número máximo de strings diferentes
    com comprimento
  • 1
  • 2
  • 100

42
Codificação Aritmética
  • O código é para todo o texto como um
    sub-intervalo da unidade.
  • Cada símbolo é representado por um sub-intervalo
    do intervalo que tem um comprimento proporcional
    à probabilidade do símbolo.
  • O comprimento do intervalo final é o produto das
    probabilidades de todos símbolos no texto.

43
Codificação Aritmética
Símbolo Probabilidade Gama (para o codificador aritmético)
a 0.2 0,0.2)
b 0.1 0.2,0.3)
c 0.2 0.3,0.5)
d 0.1 0.5,0.6)
e 0.3 0.6,0.9)
! 0.1 0.9,1.0)
44
Codificação Aritmética
Sub-intervalo Intervalo binário String de bits gerada
Começar 0,1.0)
b 0.2,0.3) 0.0,0.5) 0
Depois a 0.2,0.22) 0.0,0.25) 0
de a 0.2,0.204) 0.125,0.25) 1
ver d 0.2020,0.2024) 0.1875,0.25) 1
! 0.20236.0.2024) 0.1875,0.21875) 0

45
Codificação AritméticaOutro exemplo
_
_
_
.6667
1
.6667
.6667
c
c
1/3
1/4
c
_
.5834
_
c
3/6
2/5
2/3
_
.6334
1/3
b
_
b
.6501
2/4
b
_
1/3
2/6
b
2/5
_
_
.4167
_
.6001
a
1/3
.6390
a
a
a
1/4
1/6
_
_
_
0
1/5
.3333
.6334
.5834
Qualquer valor no intervalo .6334,.6390)
codifica bcca
46
Codificação Aritmética Adaptativa
  • Podemos assumir
  • Probabilidades iguais para todos símbolos no
    início
  • Fazer a contagem dos símbolos para nos
    aproximarmos das suas probabilidades reais no
    texto
  • Durante a descodificação
  • Usar as mesmas contagens e seguir precisamente os
    mesmos sub-intervalos.

47
Modelos baseado em dicionário
  • Métodos de compressão baseados em dicionário usam
    o princípio de substituir substrings num texto
    com uma palavra de código que iedntifica essa
    substring no dicionário
  • O dicionário contém uma lista de substrings e uma
    palavra de código para cada substring
  • Normalmente usam-se palavras de código fixas
  • Obtem-se mesmo assim uma compressão razoável

48
Modelos baseado em dicionário
  • Os métodos mais simples de compressão usam
    pequenos dicionários
  • Por exemplo, codificação de digramas
  • pares de letras seleccionadas são substituídas
    por palavras de código
  • Um dicionário para o código de caracteres ASCII
    pode conter os 128 caracteres bem como 128 pares
    de letras mais comuns.

49
Modelos baseado em dicionário
  • Codificação com digramas
  • As palavras de código de saída têm 8 bits cada
  • A presença do conjunto completo de caracteres
    ASCII assegura que qualquer entrada (ASCII) pode
    ser representada.
  • No melhor dos casos, cada par de caracteres é
    substituído por uma palavra de código, reduzindo
    de 7 bits/caracter para 4 bits/caracter
  • No pior dos casos, cada caracter de 7 bits é
    expandido para 8 bits

50
Modelos baseado em dicionário
  • Expansão natural
  • Colocar no dicionário sequências com mais
    caracteres nomeadamente palavras comuns ou
    componentes comuns das palavras.
  • Um conjunto pré-definido de frases do dicionário
    tornam a compressão dependente do domínio
  • ou se usam fazes muito curtas ou não se consegue
    uma boa compressão

51
Modelos baseado em dicionário
  • Uma maneira de evitar o problema do dicionário
    ser desadequado para o texto a manipular é usar
    um dicionário semi-estático
  • construir um novo dicionário para todo texto a
    compactar
  • A sobrecarga de transmitir e armazenar o
    dicionário é significativo
  • A decisão de que frases incluir no dicionário é
    um problema difícil de resolver

52
Modelos baseado em dicionário
  • Solução usar um esquema de dicionário adaptativo
  • Codificadores Ziv-Lempel (LZ77 e LZ78)
  • Uma substring de texto é substituída por um
    apontador para uma ocorrência prévia no texto.
  • Dicionário todo o texto anterior à posição
    corrente.
  • Palavras de código apontadores.

53
Modelos baseado em dicionário
  • Ziv-Lempel
  • O texto anterior torna-se normalmente um
    dicionário muito bom, pois normalmente está no
    mesmo estilo e linguagem do texto seguinte.
  • O dicionário é transmitido implicitamente sem
    custo extra, porque o descodificador tem acesso a
    todo texto previamente descodificado.

54
LZ77
  • Vantagens chave
  • Relativamente fácil de concretizar
  • A descodificação pode ser feita facilmente usando
    apenas uma pequena porção de memória.
  • apropriada quando os recursos necessários para
    descodificar devem ser minimizados

55
LZ77
  • A saída do codificador consiste duma sequência de
    triplas , i.e lt3,2,bgt
  • O primeiro componente da tripla indica quão longe
    se deve olhar para o texto previamente
    descodificado para encontrar a próxima frase
  • O segundo componente indica o comprimento da
    frase
  • O terceiro componente dá o próximo caracter da
    entrada

56
LZ77
  • O componente 1 e 2 constituem um apontador para o
    texto prévio
  • O componente 3 só é necessário se o caracter a
    ser codificado não ocorreu previamente.

57
LZ77
  • Codificação
  • Para o texto presentemente na entrada
  • busca da maior unificação no texto anterior
  • devolver a tripla que regista a posição e o
    comprimento da unificação
  • A busca pode devolver um comprimento zero,
    situação em que a posição da unificação não é
    relevante.
  • A busca pode ser acelarada indexando o texto
    prévio com estruturas de dados adequadas

58
LZ77
  • Há limitações de quanto para trás o apontador
    pode referir e o máximo tamanho da string
    referenciada
  • para texto em inglês, uma janela de poucos
    milhares de caracteres
  • o comprimento da frase tem um máximo de 16
    caracteres
  • Senão gasta-se muito espaço sem benefício

59
LZ77
  • O programa de descodificação é muito simples, de
    forma que pode ser incluído com os dados com
    muito pequeno custo
  • De facto os dados compactados são colocados como
    parte do programa de descodificação, que torna os
    dados com capacidade de auto-extracção.
  • Forma comum de distribuição de ficheiros

60
Exemplo 6.8
  • Considere um dicionário de vinte caracteres (ou
    janela deslizante) e uma janela de antevisão de 8
    caracteres. A string de entrada é
  • RYYXXZERTYGJJJASDERRXXREFEERZXYURPP
  • Calcule a saída do compressor de texto

61
LZ78
  • Outra técnica base
  • Usada por vários compressores de texto muito
    eficientes
  • Em vez de uma janela deslizante de tamanho fixo
    como o LZ77
  • Constrói um dicionário com as strings que
    unificaram previamente.
  • Não há restrições de distância no texto para
    unificação
  • Aumenta a probabilidade de unificação

62
Exemplo 6.9
  • O texto a codificar é PUB PUB PUPPY...
  • Mostre como se constrói o dicionário e os
    primeiros símbolos de saída do compressor.

63
Exemplo 6.9
Entrada do Dicionário String adicionada ao Dicionário Índice de saída Caracter Sáida
0
1 P 0 P
2 U 0 U
3 P_ 1 _
4 PU 1 U
5 B 0 B
6 0
7 PUP 4 P
8 PY 1 Y
... .... .... ....
Dicionário
Saída Codificada
64
LZW Algorithm
Este algoritmo evita a necessidade de transmitir
o próximo caracter como no algoritmo LZ78. O
dicionário é incializado como todos caracteres do
alfabeto As novas frases são adicionadas ao
dicionário acrescentadando o primeiro caracter
das próximas frases O algoritmo é melhor descrito
usando uma tie
a
c
Alphabet (a,b,c)
b
1
2
3
b
a
c
Text abcabbcabba
4
5
6
b
a
7
8
a
9
Trie
Transmitted message 1234571
65
Textabcabbcabba
Text a b..
..b c..
a
c
b
2
3
1
..c a..
..ab . b..
..bc a..
..abb a
1
0
1
0
0
1
1
1
0
0
0
1
1
6
2
0
3
0
1
4
1
a
Final Trie and its Height Balanced Binary
Tree Transmitted Code 123457100100110010101001
1000
9
8
5
7
9
66
Resumo
  • Foram apresentadas várias técnicas de compressão
    sem perdas
  • Baseadas na entropia
  • Também usadas para áudio e imagem
  • Baseadas em dicionário
  • Usadas por muitos esquemas de compressão de texto
    para conseguir altas taxas de compressão
Write a Comment
User Comments (0)
About PowerShow.com