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

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

PROCESSAMENTO DIGITAL DE IMAGENS

Apresentações semelhantes


Apresentação em tema: "PROCESSAMENTO DIGITAL DE IMAGENS"— Transcrição da apresentação:

1 PROCESSAMENTO DIGITAL DE IMAGENS
Prof. Dr. Edison Oliveira de Jesus Instituto de Ciências Exatas Departamento de Matemática e Computação

2 Assuntos a serem abordados nesta aula
Compressão de Imagens Método de Huffman

3 Método de Huffman A idéia é usar caracteres (símbolos) com um núme-ro variável de bits Caracteres mais freqüentes na mensagem são codi-ficados com menos bits e caracteres menos fre-qüentes são codificados com mais bits ;

4 Codificação dos Símbolos
Considere um alfabeto composto de quatro símbolos: A, B, C, D a cada um dos símbolos foi atribuído o código como indicado na tabela a seguir: Símbolo Código A 00 B 01 C 10 D 11

5 Freqüência dos Símbolos
A mensagem ABCADCA seria codificada com comprimento de 14 bits e ficaria: A Tabela a seguir mostra a freqüência de cada símbolo na mensagem     Símbolo Freqüência A 3 B 1 C 2 D

6 Algoritmo de Huffman O objetivo do algoritmo é criar um código que minimize o comprimento da mensagem Para criar este código leva-se em conta a fre-qüência de cada símbolo na mensagem

7 Nova Codificação dos Símbolos
Desta tabela, verifica-se que se for atribuído ao símbolo A um código binário mais curto que os atribuídos aos símbolos B e D tem-se uma mensagem menor. Isto provém do fato que o símbolo A aparece mais vezes do que os símbolos B e D. Seja então, os seguintes códigos atribuídos aos símbolos, conforme mostra a tabela seguinte: Símbolo Código A B 110 C 10 D 111

8 Resultado da Codificação
Usando este novo código para os símbolos, a mensagem, ABCADCA ficaria com 13 bits, e da seguinte forma: Em mensagens longas com mais símbolos menos freqüentes, o ganho pode ser maior; Um dos requerimentos deste código é que nenhum código seja prefixo de outro, pois a decodificação é feita da esquerda para direita;

9 Decodificação O processo para a decodificação da mensagem deve ser iniciado da esquerda para a direita; caso o primeiro bit seja 0, o código corresponde ao símbolo A. caso contrário deve-se continuar a examinar os bits restantes. se o segundo bit for 0 o símbolo é um C, caso contrário examina-se o terceiro bit, um 0 indica um B e D no outro caso.

10 Árvore de Huffman A árvore é iniciada com os dois símbolos que aparecem com menor freqüência no conjunto de dados;  no exemplo: B e D; Atribuí-se o código 0 para B e o código 1 para D.; Combine estes dois símbolos em um único, formando a cadeia BD; Este novo símbolo terá freqüência igual a soma das freqüências dos símbolos que a formam, ou seja, B e D; no caso 2; Tem-se agora os seguintes símbolos A (3), C (2) e BD (2);

11 os números entre parênteses indicam as freqüências dos dados no conjunto;
Novamente deve-se escolher os símbolos de menor freqüência no novo conjunto de símbolos; no caso são C e BD; Atribuí-se o código 0 ao símbolo C e 1 ao BD; Isto significa adicionar 1 aos códigos de B e D, que passam a valer 10 e 11 respectivamente; Os dois símbolos são combinados originando o sím-bolo CBD, de freqüência 4; Tem-se agora dois símbolos A (3) e CBD (4); Atribuí-se 0 ao símbolo A e 1 ao símbolo CBD;

12 O símbolo ACBD é o único símbolo restante e recebe o código NULL de comprimento 0. ;
A figura a seguir mostra a árvore binária que pode ser construída a partir deste exemplo; Cada nó representa um símbolo e sua freqüência.

13 Árvore de Huffman Obtida

14 Outro Exemplo de Codificação de Huffman
Char Char Freq Freq E 125 T 93 A 80 O 76 A tabela ao lado mostra um conjunto de dados e suas respectivas freqüên-cias de ocorrências no total. I 72 N 71 S 65 R 61 H 55 L 41 D 40 C 31 X 27

15 Exemplo de Codificação de Huffman
T E 80 76 93 125 D L R S N I H 40 41 61 65 71 73 55 C X 31 27

16 A O T E 80 76 93 125 D L R S N I H 40 41 61 65 71 73 58 55 C X 31 27

17 A O T E 80 76 81 93 125 D L R S N I H 40 41 61 65 71 73 58 55 C X 31 27

18 A O T E 80 76 81 93 125 113 D L R S N I H 40 41 61 65 71 73 58 55 C X 31 27

19 A O T E 80 76 81 93 126 125 113 D L R S N I H 40 41 61 65 71 73 58 55 C X 31 27

20 A O T E 80 76 81 93 126 144 125 113 D L R S N I H 40 41 61 65 71 73 58 55 C X 31 27

21 156 A O T E 80 76 81 93 126 144 125 113 D L R S N I H 40 41 61 65 71 73 58 55 C X 31 27

22 156 174 A O T E 80 76 81 93 126 144 125 113 D L R S N I H 40 41 61 65 71 73 58 55 C X 31 27

23 156 174 238 A O T E 80 76 81 93 126 144 125 113 D L R S N I H 40 41 61 65 71 73 58 55 C X 31 27

24 156 174 270 238 A O T E 80 76 81 93 126 144 125 113 D L R S N I H 40 41 61 65 71 73 58 55 C X 31 27

25 330 156 174 270 238 A O T E 80 76 81 93 126 144 125 113 D L R S N I H 40 41 61 65 71 73 58 55 C X 31 27

26 330 508 156 174 270 238 A O T E 80 76 81 93 126 144 125 113 D L R S N I H 40 41 61 65 71 73 58 55 C X 31 27

27 Codificação Final de Huffman
838 330 508 156 174 270 238 A O T E 80 76 81 93 126 144 125 113 D L R S N I H 40 41 61 65 71 73 58 55 C X 31 27

28 Exemplo de Codificação de Huffman
Char Freq Fixo Huff E 125 0000 110 A tabela ao lado mostra o resultado final da aplicação do método de Huffman para codificação. Na penúltima coluna são mostrados os 4 bits que codificam os caracteres mostrados na primeira coluna. Na última coluna, a codificação correspon-dente ao código de Huffman. No total tem-se um alfabeto de 838 símbo-los; Quando representados por 4 bits, o tama-nho médio da representação é 4 bits; Na codificação por Huffman, tem-se um total de 3036 bits, os quais dão uma média de 3.62 bits ( 3036 / 838 ) para representar um símbolo, o que dá uma redução de 10 % T 93 0001 011 A 80 0010 000 O 76 0011 001 I 73 0100 1011 N 71 0101 1010 S 65 0110 1001 R 61 0111 1000 H 55 1000 1111 L 41 1001 0101 D 40 1010 0100 C 31 1011 11100 X 27 1100 11101 Total 838 4.00 3.62

29 Implementação Uma árvore binária pode ser utilizada para representar os dados na implementação do algoritmo de Huffman

30 Nó da árvore Cada nó desta árvore, contém: o símbolo do conjunto;
a freqüência de ocorrência deste símbolo; um ponteiro para o filho esquerdo do nó; um ponteiro para o filho direito do nó; Esquerdo Valor Freqüência Direito

31 Algoritmo de Huffman PASSO 1:
Os valores a serem codificados devem ser inicial-mente armazenados numa lista ligada simples. Cada nó desta lista deverá conter as seguintes in-formações: Símbolo Freqüência do símbolo; Endereço do próximo nó da lista; Endereço da árvore de Huffman, correspondente àquele nó;

32 Estrutura do nó da lista dos símbolos iniciais
Valor Freqüência Próximo nó Endereço da raiz da árvore de Huffman deste nó

33 Algoritmo de Huffman Passo 2:
Busca-se os 2 símbolos com as menores fre-qüências; os nós destes símbolos são deletados da lista; em seu lugar, apenas um novo nó é inserido: este nó não armazena símbolo; no lugar da freqüência, é colocado a soma das fre-qüências dos símbolos que ele está substituindo; a árvore de Huffman é montada para os nós deletados e seu endereço é colocado no nó substituto da lista principal.

34 Exemplo de Codificação de Huffman
Seja a lista inicial formada pelos nós, dos símbolos mostrados no exemplo anterior: A O D L T R S N I E C X H 80 76 40 41 93 61 65 71 73 125 31 27 55

35 Exemplo de Codificação de Huffman
Busca dos 2 nós com os menores valores de freqüência:: A O D L T R S N I E 58 H 80 76 40 41 93 61 65 71 73 125 55 58 31 C X 27

36 Exemplo de Codificação de Huffman
Busca dos 2 nós com os menores valores de freqüência:: 81 58 A O T R S N I E H 80 76 93 61 65 71 73 125 55 81 58 31 27 40 41 D L C X

37 Exemplo de Codificação de Huffman
Busca dos 2 nós com os menores valores de freqüência:: A O 81 T R S N I E 113 80 76 93 61 65 71 73 125 81 113 58 H 55 40 D L 41 31 C X 27

38 Exemplo de Codificação de Huffman
Busca dos 2 nós com os menores valores de freqüência:: A O 81 T 126 N I E 113 80 76 93 71 73 125 126 81 113 61 R S 65 58 H 55 40 D L 41 31 C X 27

39 Exemplo de Codificação de Huffman
Busca dos 2 nós com os menores valores de freqüência:: A O 81 T 126 126 E 113 80 76 93 125 81 126 144 113 58 H D L R S N I 55 40 41 61 65 71 73 C X 31 27

40 Exemplo de Codificação de Huffman
Busca dos 2 nós com os menores valores de freqüência:: 156 81 T 126 144 E 113 93 125 156 81 126 144 113 A O 80 76 58 H D L R S N I 55 40 41 61 65 71 73 C X 31 27

41 Exemplo de Codificação de Huffman
Busca dos 2 nós com os menores valores de freqüência:: 156 174 126 144 238 238 156 174 126 144 113 E 125 T A O 81 93 80 76 58 H R S N I 55 61 65 71 73 L D C X 41 40 31 27

42 Exemplo de Codificação de Huffman
Busca dos 2 nós com os menores valores de freqüência:: 156 174 270 238 238 270 156 174 113 E 125 126 144 T A O 81 93 80 76 58 H 55 R S N I L 61 65 71 73 D C X 41 40 31 27

43 Exemplo de Codificação de Huffman
Busca dos 2 nós com os menores valores de freqüência:: 330 270 238 238 330 270 113 156 174 E 125 126 144 58 A O 81 H T 80 76 55 93 R S N I L 61 65 71 73 D C X 41 40 31 27

44 Exemplo de Codificação de Huffman
330 508 508 238 330 270 113 156 174 E 125 126 144 58 A O 81 H T 80 76 55 93 R S N I L 61 65 71 73 D C X 41 40 31 27

45 Árvore final da Codificação de Huffman
Endereço da lista inicial Árvore final da Codificação de Huffman 838 330 508 156 174 270 238 A O T E 80 76 81 93 126 144 125 113 D L R S N I H 40 41 61 65 71 73 58 55 C X 31 27

46 Codificação dos símbolos
O último passo é a busca das folhas da árvore; Como a árvore é binária, a partir de sua raiz, cada nó tem um filho esquerdo, codificado como 0, e um filho direito codificado como 1; Os símbolos originais estão como folhas desta árvo-re; A codificação de um símbolo corresponde aos digi-tos binários obtidos desde a raiz da árvore até a fo-lha onde o símbolo se encontra;

47 Árvore final da Codificação de Huffman
Endereço da lista inicial Árvore final da Codificação de Huffman 1 838 330 508 1 1 1 1 1 156 1 174 270 238 A O T E 1 1 80 76 93 126 144 125 113 1 81 1 D L R S N I H 40 41 61 65 71 73 1 58 55 C X 31 27

48 Códigos dos Símbolos Char Freq Huff E 125 110 T 93 011 A 80 000 O 76
001 I 73 1011 N 71 1010 S 65 1001 R 61 1000 H 55 1111 L 41 0101 D 40 0100 C 31 11100 X 27 11101

49 Árvore de Huffman Cada árvore criada com a junção de dois ou mais nós da lista original com o objetivo de criar a árvore de Huffman é do tipo HEAP Nesta árvore, a cada nova informação adicionada a ela, deve fazê-lo de tal forma que os nós vão sendo completados em seqüência, ou seja, primeiro o filho esquerdo, depois o filho direito. Após uma informação ter sido adicionada à árvore, deve-se ajustar sua posição na mesma de tal forma que todos os filhos de um nó sejam menores que o seu pai;

50 Exemplo de árvore Heap Seja um conjunto de valores, com os quais deseja-se montar a respectiva árvore Heap: 80 76 40 41 93 61 65 71 73 125 31 27 55 Valores iniciais:

51 Exemplo de árvore Heap 80 O primeiro valor é inserido na árvore;
Como está vazia, este valor entra como a raiz da árvore Valores iniciais:

52 Exemplo de árvore Heap 80 76 todos nós estão ajustados
Valores iniciais:

53 Exemplo de árvore Heap 80 76 40 todos nós estão ajustados
Valores iniciais:

54 Exemplo de árvore Heap 80 76 40 41 todos nós estão ajustados
Valores iniciais:

55 Exemplo de árvore Heap 80 76 40 41 93 Ajustar nó 93 com nó 76
Valores iniciais:

56 Exemplo de árvore Heap 80 93 40 41 76 Ajustar nó 93 com nó 80
Valores iniciais:

57 Exemplo de árvore Heap 93 80 40 41 76 todos nós estão ajustados
Valores iniciais:

58 Exemplo de árvore Heap 93 80 40 41 76 61 Ajustar nó 61 com nó 40
Valores iniciais:

59 Exemplo de árvore Heap 93 80 61 41 76 40 todos nós estão ajustados
Valores iniciais:

60 Exemplo de árvore Heap 93 80 61 41 76 65 40 Ajustar nó 65 com nó 61
Valores iniciais:

61 Exemplo de árvore Heap 93 80 65 41 76 61 40 todos nós estão ajustados
Valores iniciais:

62 Exemplo de árvore Heap 93 80 65 41 76 61 40 71 Ajustar nó 71 com nó 41
Valores iniciais:

63 Exemplo de árvore Heap 93 80 65 71 76 61 40 41 todos nós estão ajustados Valores iniciais:

64 Exemplo de árvore Heap 93 80 65 71 76 61 40 41 73 Ajustar nó 73 com nó 71 Valores iniciais:

65 Exemplo de árvore Heap 93 80 65 73 76 61 40 41 71 todos nós estão ajustados Valores iniciais:

66 Exemplo de árvore Heap 93 80 65 73 76 61 40 41 71 125 Ajustar nó 125 com nó 76 Valores iniciais:

67 Exemplo de árvore Heap 93 80 65 73 125 61 40 41 71 76 Ajustar nó 125 com nó 80 Valores iniciais:

68 Exemplo de árvore Heap 93 125 65 73 80 61 40 41 71 76 Ajustar nó 125 com nó 93 Valores iniciais:

69 Exemplo de árvore Heap 125 93 65 73 80 61 40 41 71 76 todos nós estão ajustados Valores iniciais:

70 Exemplo de árvore Heap 125 93 65 73 80 61 40 41 71 76 31 todos nós estão ajustados Valores iniciais:

71 Exemplo de árvore Heap 125 93 65 73 80 61 40 27 41 71 76 31 todos nós estão ajustados Valores iniciais:

72 Exemplo de árvore Heap 125 93 65 73 80 61 40 27 55 41 71 76 31 Ajustar nó 55 com nó 40 Valores iniciais:

73 Exemplo de árvore Heap 125 93 65 73 80 61 55 27 40 41 71 76 31 Valores iniciais:

74 Detalhes da Implementação
São necessárias as seguintes rotinas para a implementação da lista original: rotina cria_nó rotina insere_nó rotina deleta_nó rotina percorre_lista rotina busca_menor_valor_lista

75 Detalhes da Implementação
São necessárias as seguintes rotinas para a implementação da árvore Heap: rotina cria_nó rotina insere_filho_esquerdo rotina insere_filho_direito rotina monta_heap rotina ajusta_nó rotina busca_folhas

76 FIM DA AULA


Carregar ppt "PROCESSAMENTO DIGITAL DE IMAGENS"

Apresentações semelhantes


Anúncios Google