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

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

CES-11 LAB 03 Bitmap Quadtree ALGORITMO Carlos Henrique Q. Forster – Instituto Tecnológico de Aeronáutica 2010.

Apresentações semelhantes


Apresentação em tema: "CES-11 LAB 03 Bitmap Quadtree ALGORITMO Carlos Henrique Q. Forster – Instituto Tecnológico de Aeronáutica 2010."— Transcrição da apresentação:

1 CES-11 LAB 03 Bitmap Quadtree ALGORITMO Carlos Henrique Q. Forster – Instituto Tecnológico de Aeronáutica 2010

2 Nova codificação: 00011... 100000011100 00 11100 1100 Codificação: 100000011100 Agora 12 bits, mas tive que guardar o tamanho 4x4 01 Se nível=max

3 Novamente para a grande: Codificação: 1 100000011100 110010100100111110 100100110000 101110111100011000 61 bits agora!! Ainda guardo o tamanho 16x16

4 Variáveis globais W: largura da imagem H: altura da imagem Wp: menor potência de dois que é maior ou igual a W Hp: idem para H Dim: log 2 max{Wp,Hp} = máximo nível Branco: apontador para nó da quadtree com valor branco e sem filhos Preto: idem com valor preto

5 Constroi Quadtree da matriz quadtree constroi_quadtree(x,y,largura) Se largura==1 //nível é máximo Se pixel[x,y]==0 retorna Branco Senão retorna Preto Senão q1=constroi_quadtree(x,y,largura/2) q2=constroi_quadtree(x+largura/2,y,largura/2) q3=constroi_quadtree(x,y+largura/2,largura/2) q4=constroi_quadtree(x+larg./2,y+larg./2,larg./2) Se q1..q4 forem Branco, retorna Branco Senão se forem Preto, retorna Preto Senão, cria nó intermediário com filhos q1 a q4 e retorna esse nó

6 Escrita da quadtree void escreve_quadtree(quadtree Q, int nivel) Se nivel==Dim //ultimo nível Se Q é Branco escreve 0 Senão escreve 1 Senão Se Q é Branco escreve 0 e 0 Senão, se Preto, escreve 0 e 1 Senão: Escreve 1 escreve(Q.filho1,nivel+1) escreve(Q.filho2,nivel+1) escreve(Q.filho3,nivel+1) escreve(Q.filho4,nivel+1)

7 Leitura Quadtree quadtree leitura_quadtree(int nivel) Lê próximo bit b Se nivel==Dim Se b==0 retorna Branco Senão retorna Preto Senão se b==0 Lê próximo bit b2 Se b2==0 retorna Branco Senão retorna Preto Senão se b==1 Cria nó intermediário Q Para i=1..4 faz Q.filho[i]=leitura(nivel+1) Retorna Q

8 Gera matriz da Quadtree void gera_matriz(quadtree Q, int x,y,largura) Se Q é branco Preenche retângulo(x,y,largura,0) Senão, se Q é preto Preenche retângulo(x,y,largura,1) Senão gera_matriz(Q.filho[1],x,y,largura/2) gera_matriz(Q.filho[2],x+largura/2,y,largura/2) gera_matriz(Q.filho[3],x,y+largura/2,largura/2) gera_matriz(Q.filho[4],x+larg/2,y+larg/2,largura/2)

9 Formato PBM Para trabalhar com o formato PBM: –Baixe o Irfanview ou outro programa que visualize e salve arquivos PBM –Ao gravar PBM, escolha a opção ASCII ao invés de binário –Ao gerar imagens, não esqueça de colocar os cabeçalhos corretamente: fprintf(fp,P1\n#\n%d %d\n,largura,altura) –Se optar pelo PBM, gere a quadtree em formato texto também, para podermos comparar os tamanhos dos arquivos


Carregar ppt "CES-11 LAB 03 Bitmap Quadtree ALGORITMO Carlos Henrique Q. Forster – Instituto Tecnológico de Aeronáutica 2010."

Apresentações semelhantes


Anúncios Google