T1 DE COMPUTAÇÃO GRÁFICA Implementação de Octrees Thoran Rodrigues
É uma representação de subdivisões no espaço O QUE É UMA OCTREE É uma representação de subdivisões no espaço Cada nó representa um cubo no espaço Cada filho é uma das oito subdivisões
COMO REPRESENTAR O ESPAÇO RGB A raiz da árvore representa um cubo que contém todas as cores da figura Cada nível abaixo representa uma subdivisão deste cubo Cada vez que descemos um nível, estamos estreitando os cubos (representando cada vez menos cores)
REPRESENTAÇÃO DO ESPAÇO
DETALHES DE IMPLEMENTAÇÃO Para encontrar o índice do filho para onde queremos ir, olhamos para uma tripla de bits (os bits dos canais R, G e B) Assim, no nível um, o índice é dado pela combinação dos bits 7 de cada canal, no dois, o índice é dado pela combinação dos bits 6…
DETALHES DE IMPLEMENTAÇÃO
DETALHES DE IMPLEMENTAÇÃO Para inserir uma cor na árvore, vamos pegando os bits, calculando o índice e descendo na árvore até alcançar uma folha Quando o número de folhas excede o número máximo de cores desejados, reduzimos a árvore.
DETALHES DE IMPLEMENTAÇÃO Para reduzir a árvore, selecionamos o nó com menor frequência no nível mais profundo que conseguirmos Este nó passa a conter a soma dos valores RGB e de frequência de todos os seus filhos, e passa a ser uma folha, não podendo mais ser reduzido
DETALHES DE IMPLEMENTAÇÃO
DETALHES DE IMPLEMENTAÇÃO No final, temos uma árvore que representa a nova paleta de cores Para substituir as cores na imagem, utilizamos um processo similar ao de inserção, descendo na árvore até chegar em uma folha
BIBLIOGRAFIA As figuras foram retiradas de: CLARK, D. Color Quantization Using Octrees, Dr. Dobbs Journal, Janeiro, 1996 PROSISE, J. Wicked Code, Microsoft Systems Journal, Agosto, 1996