240 likes | 325 Views
P ontifícia U niversidade C atólica do Rio de Janeiro. QuadTrees. Allan Rocha {arocha@inf.puc-rio.br} Leonardo Martins { lmartins@inf.puc-rio.br}. Disciplina: Geometria Computacional. Professor: Luiz Henrique Figueredo. P ontifícia U niversidade C atólica do Rio de Janeiro.
E N D
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: Geometria Computacional Professor: Luiz Henrique Figueredo
Pontifícia Universidade Católica do Rio de Janeiro Sumário • Introdução • QuadTree • Balanceamento • Geração de malhas • Resultados • Conclusões • Referências
Pontifícia Universidade Católica do 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 cor • para 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
Pontifícia Universidade Católica do Rio de Janeiro Exemplo:
Pontifícia Universidade Católica do Rio de Janeiro
Pontifícia Universidade Católica do 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.
Pontifícia Universidade Católica do Rio de Janeiro Introdução
Pontifícia Universidade Católica do Rio de Janeiro QuadTree Quadtreeé um tipo especial de árvore onde todos os nós tem quatro filhos ou são nós folha. NW NE SW SE
Pontifícia Universidade Católica do 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).
Pontifícia Universidade Católica do Rio de Janeiro QuadTree Lista de Pontos Vértices [4] NE NW SW SE
Pontifícia Universidade Católica do Rio de Janeiro QuadTree Teorema 1: "Uma quadtree de profundidade d armazenando um 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.
Pontifícia Universidade Católica do Rio de Janeiro QuadTree
Pontifícia Universidade Católica do Rio de Janeiro QuadTree Teorema2: "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)."
Pontifícia Universidade Católica do 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 Não balanceada Balanceada
Pontifícia Universidade Católica do 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 vizinho norte 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.
Pontifícia Universidade Católica do Rio de Janeiro Balanceamento Teorema3: "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)."
Pontifícia Universidade Católica do 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 Steiner • Se 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 ponto • Obtemos dessa maneira uma malha que continua composta de triângulos bem formados e agora conformes
Pontifícia Universidade Católica do Rio de Janeiro Geração de Malhas Malha obtida com quadtree não balanceada Malha obtida com quadtree balanceada
Pontifícia Universidade Católica do Rio de Janeiro Resultados
Pontifícia Universidade Católica do Rio de Janeiro Resultados
Pontifícia Universidade Católica do Rio de Janeiro Resultados
Pontifícia Universidade Católica do Rio de Janeiro Resultados
Pontifícia Universidade Católica do 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
Pontifícia Universidade Católica do 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