Pontifícia Universidade Católica do Rio de Janeiro QuadTrees Allan Rocha {[email protected]}...
Transcript of Pontifícia Universidade Católica do Rio de Janeiro QuadTrees Allan Rocha {[email protected]}...
Pontifícia Universidade Católicado Rio de Janeiro
QuadTreesAllan Rocha {[email protected]}
Leonardo Martins { [email protected]}
Disciplina: Geometria Computacional
Professor: Luiz Henrique Figueredo
Pontifícia Universidade Católicado Rio de Janeiro
Sumário
IntroduçãoQuadTreeBalanceamentoGeração de malhasResultadosConclusõesReferências
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
Pontifícia Universidade Católicado Rio de Janeiro
Exemplo:
Pontifícia Universidade Católicado Rio de Janeiro
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.
Pontifícia Universidade Católicado Rio de Janeiro
Introdução
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
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).
Pontifícia Universidade Católicado Rio de Janeiro
QuadTreeLista de PontosVértices [4]NENWSWSE
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.
Pontifícia Universidade Católicado Rio de Janeiro
QuadTree
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
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
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.
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)."
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
Pontifícia Universidade Católicado Rio de Janeiro
Geração de Malhas
Malha obtida com quadtree não balanceada
Malha obtida com quadtree balanceada
Pontifícia Universidade Católicado Rio de JaneiroResultados
Pontifícia Universidade Católicado Rio de JaneiroResultados
Pontifícia Universidade Católicado Rio de JaneiroResultados
Pontifícia Universidade Católicado Rio de JaneiroResultados
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
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