1 / 9

CES-11 LAB 03

CES-11 LAB 03. Bitmap Quadtree ALGORITMO. Carlos Henrique Q. Forster – Instituto Tecnológico de Aeronáutica 2010. Nova codificação:. 00. 01. 1. Se nível=max. 0. 1. 100000011100. Codificação: 100000011100. 00. 00. 00. 11100. Agora 12 bits, mas tive que guardar o tamanho 4x4. 1.

haven
Download Presentation

CES-11 LAB 03

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

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

  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: log2 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

More Related