24
Pontifícia Universidade Católica do Rio de Janeiro QuadTrees Allan Rocha {[email protected]} Leonardo Martins { [email protected]} Disciplina: Geometria Computacional Professor: Luiz Henrique Figueredo

Pontifícia Universidade Católica do Rio de Janeiro QuadTrees Allan Rocha {[email protected]} Leonardo Martins { [email protected]} Disciplina:

Embed Size (px)

Citation preview

Page 1: Pontifícia Universidade Católica do Rio de Janeiro QuadTrees Allan Rocha {arocha@inf.puc-rio.br} Leonardo Martins { lmartins@inf.puc-rio.br} Disciplina:

Pontifícia Universidade Católicado Rio de Janeiro

QuadTreesAllan Rocha {[email protected]}

Leonardo Martins { [email protected]}

Disciplina: Geometria Computacional

Professor: Luiz Henrique Figueredo

Page 2: Pontifícia Universidade Católica do Rio de Janeiro QuadTrees Allan Rocha {arocha@inf.puc-rio.br} Leonardo Martins { lmartins@inf.puc-rio.br} Disciplina:

Pontifícia Universidade Católicado Rio de Janeiro

Sumário

IntroduçãoQuadTreeBalanceamentoGeração de malhasResultadosConclusõesReferências

Page 3: Pontifícia Universidade Católica do Rio de Janeiro QuadTrees Allan Rocha {arocha@inf.puc-rio.br} Leonardo Martins { lmartins@inf.puc-rio.br} Disciplina:

Pontifícia Universidade Católicado Rio de Janeiro

Introdução

Objetivo: Estudar e implementar a estrutura de dados hierárquica conhecida como quadtree, com o propósito de geração de malhas de triângulos.

Aplicações:

• 3D Studio MAX 3 – controle de profundidade de corpara sombras Ray Tracing.• Codec para Video-Phone:  redução da taxa de transmissão.• Corrigir deformaçôes de cores nas fotos. (olhos avermelhados)• Compressao de imagens• Análise da distribuição na imagem: Geográfica, mapas elétricos, saúde (mapas do corpo).• Softwares medicinais: Ecografias

Page 4: Pontifícia Universidade Católica do Rio de Janeiro QuadTrees Allan Rocha {arocha@inf.puc-rio.br} Leonardo Martins { lmartins@inf.puc-rio.br} Disciplina:

Pontifícia Universidade Católicado Rio de Janeiro

Exemplo:

Page 5: Pontifícia Universidade Católica do Rio de Janeiro QuadTrees Allan Rocha {arocha@inf.puc-rio.br} Leonardo Martins { lmartins@inf.puc-rio.br} Disciplina:

Pontifícia Universidade Católicado Rio de Janeiro

Page 6: Pontifícia Universidade Católica do Rio de Janeiro QuadTrees Allan Rocha {arocha@inf.puc-rio.br} Leonardo Martins { lmartins@inf.puc-rio.br} Disciplina:

Pontifícia Universidade Católicado Rio de Janeiro

Introdução

Características desejáveis em uma malha triangular

Conformidade •o vértice de um triângulo nunca estará contido no interior da aresta de outro triângulo da malha

Coerência com o domínio •cada aresta das componentes poligonais deve ser aresta da união das arestas dos triângulos da malha

Boa formação•Todos os triângulos da malha devem possuir ângulos internos iguais a 45°, 45° e 90°.

Não uniformidade•a malha deve ser fina perto da fronteira das componentes poligonais e grossa distante dela. Isto é, deve ter triângulos pequenos perto da fronteira e triângulos grandes distante dela.

Page 7: Pontifícia Universidade Católica do Rio de Janeiro QuadTrees Allan Rocha {arocha@inf.puc-rio.br} Leonardo Martins { lmartins@inf.puc-rio.br} Disciplina:

Pontifícia Universidade Católicado Rio de Janeiro

Introdução

Page 8: Pontifícia Universidade Católica do Rio de Janeiro QuadTrees Allan Rocha {arocha@inf.puc-rio.br} Leonardo Martins { lmartins@inf.puc-rio.br} Disciplina:

Pontifícia Universidade Católicado Rio de Janeiro

QuadTreeQuadtreeé um tipo especial de árvore onde todos os nós tem quatro filhos ou são nós folha.

NW NE

SW SE

Page 9: Pontifícia Universidade Católica do Rio de Janeiro QuadTrees Allan Rocha {arocha@inf.puc-rio.br} Leonardo Martins { lmartins@inf.puc-rio.br} Disciplina:

Pontifícia Universidade Católicado Rio de Janeiro

QuadTree

Construção

• Divisão recursiva do quadrado em 4 quadrantes.• Criação da partição conveniente do conjunto de pontos.• Construção recursiva da árvore para cada quadrante com seus pontos associados ate que seja atingido o critério de parada (1 ponto no quadrado).

Page 10: Pontifícia Universidade Católica do Rio de Janeiro QuadTrees Allan Rocha {arocha@inf.puc-rio.br} Leonardo Martins { lmartins@inf.puc-rio.br} Disciplina:

Pontifícia Universidade Católicado Rio de Janeiro

QuadTreeLista de PontosVértices [4]NENWSWSE

Page 11: Pontifícia Universidade Católica do Rio de Janeiro QuadTrees Allan Rocha {arocha@inf.puc-rio.br} Leonardo Martins { lmartins@inf.puc-rio.br} Disciplina:

Pontifícia Universidade Católicado Rio de Janeiro

QuadTree

Teorema 1: "Uma quadtree de profundidade d armazenandoum conjunto de n pontos requer tempo O((d+1).n) para ser gerada."

Operação na quadtree

Dado um nó v e uma direção (Norte, Sul, Leste, Oeste),determinar o nó adjacente a v nesta direção. Se existir,o nó retornado deve ser o mais profundo cuja profundidade é no máximo a profundidade de v.

Page 12: Pontifícia Universidade Católica do Rio de Janeiro QuadTrees Allan Rocha {arocha@inf.puc-rio.br} Leonardo Martins { lmartins@inf.puc-rio.br} Disciplina:

Pontifícia Universidade Católicado Rio de Janeiro

QuadTree

Page 13: Pontifícia Universidade Católica do Rio de Janeiro QuadTrees Allan Rocha {arocha@inf.puc-rio.br} Leonardo Martins { lmartins@inf.puc-rio.br} Disciplina:

Pontifícia Universidade Católicado Rio de Janeiro

Teorema 2: "Seja T uma quadtree de profundidade d. O vizinho de um dado nó em uma dada direção, como definida acima, pode ser encontrado em tempo O(d+1)."

QuadTree

Page 14: Pontifícia Universidade Católica do Rio de Janeiro QuadTrees Allan Rocha {arocha@inf.puc-rio.br} Leonardo Martins { lmartins@inf.puc-rio.br} Disciplina:

Pontifícia Universidade Católicado Rio de Janeiro

Balanceamento

Uma quadtree é dita balanceada se quaisquer dois quadrados vizinhos diferem no máximo de um fator dois; desta forma em uma quadtree balanceada, quaisquer duas folhas cujos quadrados são vizinhos, tem profundidades diferindo no máximo de 1.

Não balanceada BalanceadaNão balanceada

Page 15: Pontifícia Universidade Católica do Rio de Janeiro QuadTrees Allan Rocha {arocha@inf.puc-rio.br} Leonardo Martins { lmartins@inf.puc-rio.br} Disciplina:

Pontifícia Universidade Católicado Rio de Janeiro

Balanceamento

Verificar se um quadrado s  precisa ser dividido temos:

1. Obter os vizinhos norte, sul, leste, oeste.2. Dado um quadrado S verificamos seu vizinhonorte por exemplo.3. Verificamos se é folha 3.1. Caso negativo, verificamos os filhos cujos lados sejam adjacentes ao lado do quadrado S e verifica se são folhas. Caso negativo, divide-se S e acrescentam os quatros filhos na lista para ser analisados.4. Caso o vizinho norte não satisfaça as condições para divisão de S, tomam-se os demais vizinhos.

Page 16: Pontifícia Universidade Católica do Rio de Janeiro QuadTrees Allan Rocha {arocha@inf.puc-rio.br} Leonardo Martins { lmartins@inf.puc-rio.br} Disciplina:

Pontifícia Universidade Católicado Rio de Janeiro

Balanceamento

Teorema 3: "Seja Q uma quadtree com m nós, então a versão balanceada de Q tem O(m) nós, e pode ser construída em tempo O((d+1).m)."

Page 17: Pontifícia Universidade Católica do Rio de Janeiro QuadTrees Allan Rocha {arocha@inf.puc-rio.br} Leonardo Martins { lmartins@inf.puc-rio.br} Disciplina:

Pontifícia Universidade Católicado Rio de Janeiro

Geração de Malhas

Os ângulos internos dos polígonos são sempre iguais a 45o, 90o, e 135o Balanceamento da quadtree

garante que dada qualquer aresta da mesma, esta não conterá mais do que um vértice de quadrados vizinhos em seu interior

Triangulação de SteinerSe um quadrado contém, no interior de suas arestas, o vértice de um quadrado vizinho inserimos um ponto extra (ponto de Steiner) no centro do quadrado e unimos cada dos vértices do quadrado (inclusive os vértices no interior das arestas) a este pontoObtemos dessa maneira uma malha que continua composta de triângulos bem formados e agora conformes

Page 18: Pontifícia Universidade Católica do Rio de Janeiro QuadTrees Allan Rocha {arocha@inf.puc-rio.br} Leonardo Martins { lmartins@inf.puc-rio.br} Disciplina:

Pontifícia Universidade Católicado Rio de Janeiro

Geração de Malhas

Malha obtida com quadtree não balanceada

Malha obtida com quadtree balanceada

Page 19: Pontifícia Universidade Católica do Rio de Janeiro QuadTrees Allan Rocha {arocha@inf.puc-rio.br} Leonardo Martins { lmartins@inf.puc-rio.br} Disciplina:

Pontifícia Universidade Católicado Rio de JaneiroResultados

Page 20: Pontifícia Universidade Católica do Rio de Janeiro QuadTrees Allan Rocha {arocha@inf.puc-rio.br} Leonardo Martins { lmartins@inf.puc-rio.br} Disciplina:

Pontifícia Universidade Católicado Rio de JaneiroResultados

Page 21: Pontifícia Universidade Católica do Rio de Janeiro QuadTrees Allan Rocha {arocha@inf.puc-rio.br} Leonardo Martins { lmartins@inf.puc-rio.br} Disciplina:

Pontifícia Universidade Católicado Rio de JaneiroResultados

Page 22: Pontifícia Universidade Católica do Rio de Janeiro QuadTrees Allan Rocha {arocha@inf.puc-rio.br} Leonardo Martins { lmartins@inf.puc-rio.br} Disciplina:

Pontifícia Universidade Católicado Rio de JaneiroResultados

Page 23: Pontifícia Universidade Católica do Rio de Janeiro QuadTrees Allan Rocha {arocha@inf.puc-rio.br} Leonardo Martins { lmartins@inf.puc-rio.br} Disciplina:

Pontifícia Universidade Católicado Rio de Janeiro

Conclusões e trabalhos futuros

A malha obtida a partir de uma quadtree possui todas as características desejáveis para uma boa malha de triângulos (conformidade, coerência com os domínio, boa formação e não-uniformidade), sendo gerada em tempo satisfatório

A geração de malhas é apenas uma das aplicações de uma quadtree. Pretende-se investigar o uso da quadtree como ferramenta de compressão de imagens, através de uma abordagem multu-resolução

Page 24: Pontifícia Universidade Católica do Rio de Janeiro QuadTrees Allan Rocha {arocha@inf.puc-rio.br} Leonardo Martins { lmartins@inf.puc-rio.br} Disciplina:

Pontifícia Universidade Católicado Rio de Janeiro

Bibliografia

• M. de Berg, M. van Kreveld, M. Overmars, O. Schwarzkopf, Computational Geometry: Algorithms and Applications, Springer-Verlag, 1997.• http://www.inf.unisinos.br/~ari/estrut/quad/Quadtree.htm • http://en.wikipedia.org/wiki/Quadtree •http://www.cos.ufrj.br/~fonseca/AproxGeo2009/aula3.pdf•http://lab.polygonal.de/2007/09/09/quadtree-demonstration/ •http://www.cs.wustl.edu/~suri/cs506/projects/quad.html •http://w3.impa.br/~apneto/quadtrees/quadweb/balance.html