T1 DE COMPUTAÇÃO GRÁFICA Implementação de Octrees Thoran Rodrigues 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