You are on page 1of 15

rboles Octales

Resumen:
Con la creciente predominancia de los grficos computarizados as como el aumento de la calidad visual
de los mismos, ha incrementado la demanda de procesamiento y el requerimiento en hardware para ellos,
debido a esto la tecnologa visual se ha visto impulsada ha desarrollar nuevas tcnicas para acelerar y
mejorar la calidad de los grficos mediante algoritmos y estructuras de datos bajando el costo de
procesamiento de los mismos.
Un propuesta para al desarrollo de estas tecnologas emergentes son las estructuras de datos espaciales,
dentro de las cuales se encuentran los Octrees (rboles Octales) las cuales proponen una nueva forma de
ordenar el espacio as como una forma interesante al problema de la resolucin de colores y su
consiguiente procesamiento.
Los Octrees son una estructura de datos de tipo rbol, la cual su principal caracterstica es que cada nodo
apunta a ocho nodos hijos, donde cada una de las ramas no necesariamente se encuentran balanceadas
una respecto a la otra, es decir la altura de una rama puede diferir en uno o ms niveles de la otra.
Considerando que existen diversas aplicaciones para los Octrees sus caractersticas generales variaran
para cada uno de estos.
El ocultamiento de objetos 3D dentro de una determinada vista (Frustrum) es una de las diversas
aplicaciones para los Octrees, a este mtodo se le llama Frustrum Culling, el cual consiste en abarcar el
espacio en un cubo y subdividirlo en ocho regiones proporcionales, en algunos casos, de manera que los
cubos que se encuentran dentro de nuestra vista son aquellos que contienen a los objetos que sern
graficados, de tal manera que estos cubos sern subdivididos de nuevo en ocho nuevas regiones hasta que
se alcance cierto limite determinado.
Debido a la funcionalidad de los Octrees para guardar objetos 3D en regiones adyacentes se le puede usar
para la deteccin de colisiones entre objetos en un espacio arbitrario con lmites definidos, realizando las
consultas de una forma ms eficiente al consultar solo por los objetos colindantes.
Otra aplicacin de estos rboles es la Cuantizacion de colores donde se transforma una imagen de muchos
colores ( 32 bits, 24bits) a una imagen de menos colores (8 bits), usando a los arboles octrees por su
facilidad para guardar datos de tres dimensiones (en este caso colores Rojo, Verde, Azul)
El creciente avance tecnolgico implica que las soluciones que sirven para resolver ciertos problemas hoy
necesitan ser replanteadas para resolver los problemas que emergen con las nuevas tecnologas,
resaltando que soluciones tan verstiles como esta se transforman y remodelan para resolver los
problemas del maana.

-0-

Abstract:
With the growing predominance of the computerized graphics as the visual quality, has increased too the
demand for processing and the hardware requirements for it, due this, the visual technology its seems to
be stimulated to development new techniques, in order to accelerate and improve the quality of graphics
between algorithms and data structures lowering the processing cost of itself.
A proposal for the development these emergent technologies are the spatial data structures, within it is the
Octrees (Octal trees) that propose a new form of straighten up the space as an interesting way to solve the
problem of the color resolution and its subsequent process.
The Octrees is a tree data structure, which its main characteristic is that every node points to eight
children nodes, where each branch or bush will not necessarily be balanced respect the other ones, this
means that the height of one branch could defer in one or more levels form the other. Considering of the
existence of many applications for the Octrees their general characteristic will vary for each one of these.
The 3D objects concealment between a determined view (Frustrum) is one of the diverse applications for
the Octrees, this method is called Frustrum Culling, which consist to embrace all the space in a certain
cube and subdivide it in eight proportional regions, in some cases, therefore the cubes that reside in our
view are the ones who contain the objects that will be drawn, in that case this cubes will be subdivided in
eight new regions until it reach a determined limit.
Due the functionality of the Octrees to store 3D objects in adjacent regions it can be used for collision
detection between objects in an arbitrary space with defined boundaries, performing the queries in a more
efficient way consulting only in the contiguous objects.
Another application of these trees is the Color Quantization where it transform a picture of many colors
(32 bits, 24 bits) to an image of less colors (8 bits), using Octrees due its facility to store tridimensional
data(in these case red, green and blue colors).
The increasing technological advance implies that the solutions that serve to solve certain actual problems
need to be restated in order to solve the emerging problems that surge with the new technologies,
concluding that the versatile solutions like these transforms an remodel itself in order to solve tomorrow
problems.

-1-

Tabla de Contenidos
1.- Introduccin.....................4
2.-Marco Terico...4
2.1.- Definiciones Previas..4
2.1.1.-El Voxel...4
2.2.-La Subdivisin del Espacio5
2.3.-Definicin de rboles Octales u OCTREES..5
2.4.-Proceso de construccin de un Octree....5
2.5.-Presentacin Grafica...6
2.6.-Operaciones de conjunto para los Octrees .6
2.7.- Propiedades de los Octrees ...7
2.8.-Subdivisin binaria del espacio..7
3.- Aplicacin de los Octrees.7
3.1.-Tcnicas de Particionamiento de Octrees...8
3.1.1-Frustrum Culling...8
3.1.1.1.-Funcionamiento...9
3.2.-Cuantizacion de Colores...10
3.2.1 .- Octrees para la optimizacin de colores..11
3.2.1.1.- Insercin en el Octree11
3.2.2 Cuantizacion de Colores.12
3.2.3 Reduccin de nodos12
3.2.4 Construyendo la Paleta13
5.- Conclusiones..14
6.- Recomendaciones......................14
7.- Bibliografa.15

-2-

1.-Introduccin
Un Octree es una estructura de datos jerrquica usualmente usada para la representacin de imgenes.en
3D. El Octree codifica imgenes en tres dimensiones colocando subsecciones del grafico en una
estructura tipo rbol parecida a un rbol binario. Aunque a diferencia de un rbol binario donde cada nodo
tiene dos hijos, en un Octree cada nodo tiene hasta ocho hijos. Cada nodo almacena una parte particular
del grafico.
Los Octrees operan mediante la descomposicin recursiva del espacio. Mientras que existen una serie de
Octrees especializados, el tipo mas comun es el conocido como los Octrees Cubicos. En tales arboles el
grafico que ha de ser codificado y almacenado es dividido en ocho cubos. Cada cubo ser as
representado en un nodo del rbol. La raiz del Octree representa toda la imagen 3D almacenada mientras
que cada una de sus ocho hijos representaran un octavo de la imagen. Este proceso continuara; cada
cuadrante representado por los hijos de la raz sera subdividido a su vez en ocho subcubos representando
a los ocho nietos de la raiz. Este proceso continuara hasta que la regin que esta siendo almacenada sea
tan simple que pueda ser almacenada totalmente en un nodo. Algunas veces esto significa que
continuaremos subdividiendo la imagen hasta que cada voxel individual sea almacenado en algn nodo
hoja. Otras veces una region mas grande que un voxel es suficientemente homogenea que puede ser
representada en un nodo hoja sin necesidad de mayor descomposicin.
Una propiedad interesante de los Octrees es que soportan un tipo de compresin de datos. Al No
transgredir cierto nivel de la estructura de datos, es posible filtrar los detalles optando por una imagen
ligeramente menos precisa pero mucho mas pequea.

2.-Marco Terico
Una propuesta para al desarrollo de las tecnologas de grficos es el uso de las estructuras de datos
espaciales, dentro de las cuales se encuentran los Octrees (rboles Octales) las cuales proponen una
nueva forma de ordenar el espacio contenindolo en cubos que se dividen recursivamente hasta llegar a
cierto limite.

2.1.-Definiciones Previas
2.1.1.-El Voxel
Se llama VOXEL o elemento de volumen a la representacin mnima de un objeto en 3D., El mas comn
es el cubo, entre mas pequeo se mejora la representacin.
Sin embargo, cada elemento Voxel puede ser descrito en trminos de sus equinas almacenando solamente
las coordenadas de cada esquina de cada cubo, codificndolas en un arreglo o matriz 3D de datos
binarios. El arreglo nos representa la existencia del cubo, dentro del modelo, de tal manera que, el
elemento a tratar ser 1 si se encuentra dentro del modelo, sino seria cero, es decir, no pertenece.
Entonces escribir un slido significara listar todos los cubos que pertenecen al modelo o forman parte de
el, pero en el modelado de slidos, no se tiene una imagen u objeto inicial, o es muy difcil describir un
objeto generalizado a cubitos.

2.2.-La Subdivisin del Espacio


-3-

Al tratar de describir un objeto mediante todos los Voxel que le pertenecen cuando cada Cubo, puede ser
descrito por sus esquinas, se genera grandes lneas de datos, la enumeracin completa de los modelos
hecha por la descomposicin tiene muchas ventajas, tales como su simplicidad su generalidad y permiten
un gran numero de algoritmos, sin embargo, el consumo de memoria es alto se puede cambiar la divisin
regular del espacio por algo mas eficiente, una divisin adaptativa.
Este esquema de trabajo basado en la subdivisin del espacio, se logra por la simple observacin de las
rejillas descriptivas de la enumeracin completa de un espacio 3D, donde muchas veces un cubo blanco
(1) tiene como vecinos otros cubos del mismo tipo 1. Al observar la combinacin y codificarla en
modelos de datos comparativamente similares podemos reducir la cantidad por dicha rejilla.
La divisin adaptativa tiene una propiedad fundamental en la que el numero de nodos necesarios para la
representacin de un slido es proporcional a la rea de su superficie. De aqu que el nmero de
elementos es proporcional r2 de la resolucin r que se utilice, en el otro caso, el tamao de elementos de
un esquema completo es proporcional a r3 .

2.3.-Definicin de rboles Octales u OCTREES


Los Octrees son una estructura de datos de tipo rbol, la cual su principal caracterstica es que cada nodo
apunta a ocho nodos hijos, donde cada una de las ramas no necesariamente se encuentran balanceadas
una respecto a la otra, es decir la altura de una rama puede diferir en uno o ms niveles de la otra.
Considerando que existen diversas aplicaciones para los Octrees sus caractersticas generales variaran
para cada uno de estos.
Estos son rboles son una variacin jerrquica de la enumeracin espacial, como resultado de un
derivado de los quatrees. Los octrees utilizan la divisin recursiva del espacio en 8 octantes, por ello el
nombre de octree, que son colocados es una estructura lgica de rbol Octario (de 8 hojas).
Usualmente, el arbol es colocado alrededor del origen del sistema de coordenadas con un primer nivel de
octantes que corresponden a los octantes del espacio general, a manera de cuadrantes del sistema de
coordenadas.
La idea fundamental es un algoritmo Divide y Vencers. Un octree es subdividido en octantes de
manera recursiva.
Cada nodo del rbol consiste en un cdigo y ocho apuntadores hacia ocho hijos, enumerados del 0 al 7;
El cdigo indica si el cubo es negro o blanco , es decir, sus valores son 0 y 1 respectivamente, lo que
significa , si el cdigo es negro, el espacio representado por el nodo esta lleno, es decir, todo el cubo
pertenece al modelo, el nodo tambin es una hoja; la tercera posibilidad es que el nodo sea gris, esto
indica parcialmente ocupado o escasamente vaci; en este ultimo caso, los ocho apuntadores hijos
corresponden a la divisin regular del padre.

2.4.-Proceso de construccin de un octree


Los modelos hechos en base a un rbol octree de slidos con primitivas, tienen un procedimiento de
clasificacin entre la instancia de la primitiva y el nodo selecciona del octree. Este proceso de
clasificacin debe ser capaz de distinguir entre los casos:
-

El nodo esta en el exterior de la primitiva.


El nodo esta en el interior de la primitiva.
El nodo pertenece parcialmente a la primitiva.

Este proceso de clasificacin es en forma recursiva; al inicio, el primer nodo (raz) es blanco o vaci,
estos son los datos iniciales del algoritmo. Siguiendo el algoritmo, va clasificando cada nodo contra la
primitiva, si el primer o segundo caso aplica, el nodo es marcado como blanco o negro, y la recursion
termina; en caso contrario, el algoritmo procede a marcar el nodo como gris, subdividiendo en ocho

-4-

octantes y llamando recursivamente cada uno de ellos, la subdivisin continuara hasta que la resolucin
deseada es alcanzada, generalmente se usan de seis a doce niveles.
El algoritmo de construccin de un octree es el siguiente:
Make_tree (p, t, depth)
Primitive *p; /* la primitive a modelar
Octree *t; /* nodo inicial del octree, blanco
Int depth; /*maxima recursion
{
int i;
switch(classify(p, t))
{
case WHITE;
{
t->code = WHITE;
break;
}
case BLACK;
{
break;
case GREY;
}
if(depth == 0)
t->code=GREY;
else
{
subdivide(t);
for(i=0 ;i<8 ;i++)
make_tree(p, t->oct[i], depth -1) ;
}
break;
}
}
/* clasificar nodo octree contra primitive
classify ()
Las primitivas de fcil implementacin son las formas regulares como cubos, esferas, cilindros y conos, y
algunos objetos de un orden mayor como los llamados sper cuadrticos, los octrees y quatrees pueden
ser construidos a partir de imgenes digitales cuando se tiene la informacin.

2.5.-Presentacin Grafica
Una de las caractersticas esenciales de este mtodo, es que guardan de manera implcita la informacin
sobre el orden espacial, lo que se puede explotar en el algoritmo de diseo, haciendo posible crea
programa con un proceso ms simple que solo pasen por el rbol obteniendo los argumentos necesarios y
ejecutar cada operacin en cada nodo. Y no es necesario un reordenamiento para esconder las superficies
removidas o cerradas.
El orden apropiado depende de la ubicacin del observador con respecto al rbol que se mostrara. Se el
observador se encuentra en el octante 3 donde X,Y,Z > 0, del espacio.

2.6.-Operaciones de conjunto para los octrees


Tambin para este caso, se puede utilizar un algoritmo de rbol transversal; las operaciones de conjunto
implican dos rboles octree, resultando un tercer octree que representa la operacin booleana deseada, tal
como la unin, interseccin o diferencia de conjuntos de los argumentos, por ejemplo , para el calculo de
la interaccin, al procesar los nodos n1 y n2, ocurrir que:

-5-

1.
2.
3.

Los nodos n1 y n2 son ambos hojas. En este caso, el nodo resultante del octree es negro si ambos
lo son, de otra manera es blanco
Uno de los nodos es hoja. Si el nodo hoja es negro, el sub-arbol de la que no es hoja es copiado
al resultado del octree, de otra manera el nodo resultante es blanco.
Ambos no son hojas, entonces el algoritmo debe considerar recursivamente los hijos de esos
nodos.

Como los argumentos ya estn presentes su construccin no es tomada en cuenta; en la mayora de los
casos la complejidad del algoritmo es proporcional al rbol mas pequeo.
No todos los algoritmos pueden ser llevados a una manera transversal, en algunos casos es necesario
conocer a los nodos vecinos, como en los casos de efecto visuales como trasparencas, el acceder a un
nodo vecino puede ser complicado y requiere subir un nivel en el rbol o hasta la raz en el peor de los
casos. Para lo cual se pueden incluir ms apuntadores a ciertas reas del rbol, y requiere un cuidado de
balance en el rbol.

2.7.- Propiedades de los octrees

Modelo poderoso, los octrees son modelos de representacin aproximada, y pueden ser exactos
para ciertos objetos.
Validez, no requiere de una conectividad especial, todos los octrees son representaciones validas
de algn slido.
No ambigedad y Unicidad, hasta los limites de resolucin, todos los octrees no ambiguos,
definen un slido.
Consistencia, en general el numero de nodos que un octree representa es proporcional al rea del
objeto. En promedio un octree fcilmente puede medir ms de un milln de bytes de memoria.
Operaciones cerradas, un octree soporta de algoritmos cerrados para los problemas de
translacin, rotacin, y operaciones booleanas.
Sencillos computacional mente, muchos algoritmos de los octrees toman la forma de transversal,
donde las operaciones son relativamente fciles para cada nodo del rbol.

2.8.-Subdivisin binaria del espacio


Una alternativa, al procesamiento de los octree, es la subdivisin de un espacio binario. Esto implica, un
enfoque que divide los nodos grises en dos hojas en vez de ocho octantes. Lo que los hace mucho ms
pequeo, de esto surge la versin lineal de los octrees.
Aunque el Espacio sea dividido en dos o en ocho como un octree normal, la cantidad de memoria
utilizada sigue siendo demasiada, pero menor al utilizada por la enumeracin espacial.
Lo anterior ha provocado investigaciones para comprimir la representacin de rboles, muchas
alternativas de representacin reemplazan la estructura del rbol por un apuntador libre, una estructura de
datos lineal.
Esta nueva propuesta se le llama octrees lineales.
Las representaciones lineales son suficientes para muchos algoritmos. Las operaciones booleanas en
octrees lineales se hacen al mezclar las dos cadenas de caracteres, lo cual es una operacin fcil de
realizar.

3.-Aplicacin de los Octrees


Aunque comnmente los octrees son utilizados para la representacin grafica de objetos 3D no todas sus
aplicaciones se veran relacionadas con esto, debido la versatilidad de esta estructura de datos las ideas que
surgen en donde aplicar esta estructura particular es bastante amplia, a medida que uno se inmersa en el
concepto de octrees nos daremos cuenta de la funcionalidad de la estructura para la deteccin de objetos
3D y todas las posibles operaciones relacionadas con ella, todo este conjunto de tcnicas y estructuras

-6-

aplicada se les llama Frustrum Culling, la cual apunta a la optimizacion y aceleracion del rendering
(impresin de datos por pantalla en un determinado tiempo), otra aplicacin comun para este tipo de
estructura espacial es la cuantizacion de colores la cual toma el concepto de octrees para mejorar una
imagen predefinida.

3.1.-Tcnicas de Particionamiento de Octrees


Los algoritmos de particin del espacio mediante octrees son usados para la representacin de objetos en
ambientes 3D, los cuales son las basicas para la mayoria de sistemas modelado y rendereo de imgenes.
El objetivo primario de dichos algoritmos es reducir el numero de comparaciones requeridas para
determinar que superficies necesitan ser procesadas para el trazo de rayos, colision de detecciones,
determinacin de visibilidad, o calculos similares. Aunque usado principalmente en un ambiente esttico,
se podr utilizar en ambientes dinmicos con algunas modificaciones. Los Octrees pueden proveer una
significante reduccin en el tiempo necesitado para la clasificacin de polgonos en una escena para su
exposicin apropiada lo que lo hace ideales para aplicaciones como los juegos que consisten
primordialmente en espacios vacos donde los objetos que se encuentran en este muestran largas
variaciones en su tamao relativo

3.1.1.-Frustrum Culling
Como mencionamos anteriormente un octree es una forma de subdividir el espacio pero cabe resaltar que
la tcnica que subdivide el espacio en si se llama frustrum culling, o tambien llamada particionamiento
del espacio, la cual permite dibujar o graficar la parte del mundo, nivel o escena que se encuentra en
nuestro Frustrum (vista de la camara). Un ejemplo del porque el particionamento del espacio es necesario
se dar si es que creramos un mundo con alrededor de 1000,000 polgonos a dibujar. Si se hiciera un
bucle que pasara por cada uno de los polgonos, y se comunique con el tope de nuestros polgonos de
personajes por cuadro, nuestra tasa de muestreo decaera crticamente. Aunque una buena tarjeta
aceleradora de video solucionara el problema, esto restringira a cualquiera que no posea un hardware de
aceleracin de video de ultima generacin. A veces, aunque la posesin de un buen hardware de
aceleracin no solucionara el problema, ya que la mayoria de veces la parte de desacelera la resolucin es
la cantidad de datos que se transmiten a travs del bucle principal. Entonces no seria optimo que solo se
graficaran los polgonos que estn en nuestra vista, bueno esta es la principal optimizacion de los octrees
para este tipo de aplicaciones, ya que brinda una forma rapida de encontrar los polgonos que estan en la
vista y solo dibujar esos.

-7-

3.1.1.1.-Funcionamiento
Un octree trabaja en cubos. Inicialmente. El octree comienza con un nodo raiz que posee un eje asociado
al cubo que rodea al mundo, nivel o escena. Entonces se creara un cubo imaginario alrededor de todo el
espacio.

Asi el nodo raz contendr a todos los vrtices de nuestro mundo. Pero si solo poseyramos el nodo raz
hara que dibujramos todo el mundo, debido a que nuestro objetivo es solo dibujar los objetos que se
encuentran en nuestro frustrum spectrum (espectro visual) subdividiremos al nodo raiz en ocho partes (de
donde proviene la denominacin Octree). Eso significa que existirn 4 cubos superiores e inferiores,
teniendo en cuenta que cada lnea que conforma al nodo realmente no existe, sino que sern una ayuda
para visualizar la esquematizacin del octree.

Hemos dividido el mundo en ocho partes en una sola subdivisin. En este punto nos daremos cuenta cuan
efectivo seria si tuviramos 2, 3 o 4 subdivisiones, pero de donde obtendremos la velocidad en que
mencionamos anteriormente, supongamos que nuestra camara se encuentra en la mitad de nuestro mundo
apuntando a una esquina. Si vemos las lineas no podremos dar cuenta que solo estamos viendo 4 de los
ocho cubos del octree. Estos nodos incluyen dos de los cubos superiores y dos de los inferiores, lo que
significara que solo dibujaremos los nodos almacenados en esos vrtices.

-8-

Pero, como verificamos que nodos estan en nuestra vista? Esto sera muy simple aplicando Frustrum
Culling. Podremos obtener las dimensiones del frustrum y verificar cada cubo que intersecata o que se
encuentra en el frustrum de la vista, de tal manera, si un cubo interfecta el frustrum entonces dibujaremos
ese nodo. Bsicamente, en el ejemplo anterior demostramos que hemos reducido la cantidad que
necesitamos dibujar en un 50%. Recordemos que esta solo fue una sola subdivisin de nuestro mundo.
Mientras mas subdivisiones se realicen mas eficiencia obtendremos de estas, esta claro que no
necesitamos un exceso de nodos ya que esto causara una baja de velocidad por toda es recursin.

Subdiviremos un nivel mas, pero esta vez este nivel no producira 8 cubos dentro de los ocho cubos
originales. Los cubos de la parte superior e inferior de las ocho regiones originales no fueron
subdivididos. Esto nos da una nueva premisa a tener en cuenta en cuanto a los octrees, cada vez que
subdividimos creamos ocho nuevos nodos pero si no existen poligonos almacenados en tal area,
descartaremos ese nodo, no asignandole memoria a este. Mientras mas subdividamos, mayor ser la
cantidad de nodos que le darn forma a nuestro mundo

3.2.-Quantizacion de Colores
Otro de los usos que se le puede dar a un Octree es en la cuantizacion de colores.
La cuantizacion de colores se usa cuando se quiere crear una imagen de n colores a partir de otra imagen
de m colores siendo n menor que m. El problema es como elegir los n colores que reemplazaran a los
otros m colores. En general esto se hace creando una paleta de colores ( en el caso de querer transformar
la imagen a 8 bits, la paleta tendria 256 colores) .
Los colores de la paleta se eligen segn diferentes criterios. Una forma de elegirlos seria usando los
primeros n colores diferentes de la imagen. Aunque rapida, esta forma creara una imagen inexacta de la
original, con los colores distorsionados.
Otra forma de crear la paleta seria usando los n colores que mas se usan en la paleta, aunque correcta
para imgenes con homogeneidad de colores, el problema viene cuando la imagen original contiene una
variedad enorme de colores con lo cual se perdera la calidad en la foto.

-9-

Para cuantizar los colores se sigue dos pasos


1) Crear la paleta de colores
2) Usar esa paleta para crear la nueva imagen
La tecnica ahora explicada usa a los Octrees para quantizar lo colores de una forma inteligente.
3.2.1.-Octrees para la optimizacion de colores
Supongamos que queremos transformar una imagen de 24 bpp o 32 bpp (los ultimos ocho bits de
transparencia) a una imagen de 8 bits .El arbol Octree tendra una altura de 8 nodos y se procede de la
siguiente manera:
3.2.1.1.-Insercin en el Octree
1)Se toma el primer color de la imagen y se separan los bits en sus tres colores primarios como puede
ser el verde, rojo, y azul (si estuvieran en otro formato se seguiria un procedimiento parecido).
Supongamos que el color es (#6475D6)
Se descompondra en los siguientes colores

Rojo (0x64)

01100100

Verde (0x75)

01110101

Azul (0xD6)

11010110

2)Se toman los bits mas significativos de los colores y se suman haciendo un shift de 1 espacio al
verde y de dos espacios al azul. Despus se sigue de la misma forma con el siguiente bit mas
significativo

Rojo

01100100

Verde

01110101

Azul

11010110

Se toman los bits mas significativos:


Rojo 0

Verde 0

Azul 1

Y se combinan en un numero con la siguiente formula:


Resultado = rojo | verde<<1 | azul<<2
100 = 000 + 000 + 100
Donde 100 binario es igual a 4 en decimal
El resultado final daria:
Rojo
Verde
Azul

0
0
1

1
1
1

1
1
0

0
1
1

0
0
0

- 10 -

1
1
1

0
0
1

0
1
0

Resultado
Binario
Resultado

100

111

011

110

000

111

100

010

3) El resultado indica en cual de los hijos nos vamos a posicionar. Como el resultado contiene 8
digitos entonces la altura del arbol es de 8 nodos como lo comentamos antes
RESULTADO 47360742

El color quedaria almacenado de esta forma


3.2.2.-Cuantizacion de Colores
Cuando se llega a un nodo hoja este contendra cuatro contadores. Uno cuenta las veces que se ha
llegado a este color. Otro suma los colores rojos del color, otro el del verde y del azul.
La estructura del nodo hoja en C++ puede ser como sigue
struct octreenode
{
unsigned long references;
unsigned long red;
unsigned long green;
unsigned long blue;
struct octreenode childs[8];
};
Cada ves que se llega a ese nodo se aumenta el numero de referencias a +1, y se suman los
colores
Referencia++;
Rojo = Rojo + 64;
Azul = Azul + D6;
Verde = Verde + 75;
3.2.3.-Reduccin de nodos

- 11 -

Cuando se llega a cierto limite de nodos hoja ( en nuestro caso 256 colores), se selecciona el padre de
cualquier grupo de nodos hijos ( en forma aleatoria generalmente) y se itera por todos los hijos (si
existen) sumando las referencias , el contador de rojo, el del verde y el azul en el nodo padre.
Codigo en c++ para reduccion de Colores
for (int n = 0; n<8; n++)
{
if (currentnode->child[n])
{
currentnode->reference += currentnode->child[n].reference;
currentnode->red
+= currentnode->child[n].red;
currentnode->green += currentnode->child[n].green;
currentnode->blue += currentnode->child[n].blue;
// free the node. We don't need it anymore
delete (currentnode->child[n])
currentnode->child[n]=NULL;
}
}
3.2.4.-Construyendo la Paleta
Para construir la paleta de colores simplemente se recorre por todos los nodos hojas, y para hallar el color
se divide el contador de rojo, azul y verde entre el contador de referencia. Luego se concatenan los
resultados y se arma el color ( en nuestro caso un RGB).
El cdigo en C++ para construir la paleta
//Un Loop de Recorrido de los nodos hijos
palette[index].red = currentnode->red / currentnode->reference;
palette[index].green = currentnode->green / currentnode->reference;
palette[index].blue = currentnode->blue / currentnode->reference;
//Termina el recorrido
Ejemplos
Usando la paleta WebSafe

Usando Paleta de Colores Octrees

- 12 -

Original

5.-Conclusiones

A travs de todo el trabajo nos hemos podido dar cuenta que las estructuras de datos espaciales
dentro de las cuales se encuentran los octrees, son una de las soluciones mas verstiles al
problemas de la relacin entre el procesamiento y el hardware necesario para procesar dichas
imgenes van en aumento en los ltimos aos.

Una de las aplicaciones mas comunes para este tipo de estructura son los juegos de computadora
que se relacionen con ambientes 3D, as como los procesadores de imgenes. Como
mencionamos anteriormente la relacin entre el hardware necesario para el procesamiento y la
calidad de imgenes va en aumento da a da, es decir se limita el consumo de ciertos productos
o aplicaciones a un conjunto exclusivo de personas que posean un hardware de aceleracin de
video de ultima generacin, la mejora que proponen los octrees es que solo se digitalic los
objetos que se encuentren en nuestra vista, siendo una gran ventaja ya que nos se malgastara
memoria, ni recursos en graficar objetos que no necesariamente estn siendo procesados .

La resolucin de imgenes se ve beneficiada debido a que la subdivisin de los objetos en sub.cuadrantes del mismo, nos permite alcanzar la resolucin deseada ya que mientras mayor sea el
nmero de divisiones hechas al objeto mayor ser la resolucin del mismo, permitiendo la
optimizacin de la calidad visual del objeto.

La complejidad del algoritmo para implementar una octree es proporcional a la complejidad de


la aplicacin en la que se utilice este.

Los Octrees se pueden utilizar para la cuantizacion de colores debido a su excelente rendimiento
en guardar datos tridimensionales y la habilidad que tenemos para colocar un lmite al nmero de
nodos hojas.

6.-Recomendaciones
Optimizaciones para Culling

Un control de altura ser necesario debido a la recursion en la subdivisin ya que se debe de


tener en cuenta el trabajo que realizara el procesador y la memoria vs. la altura del rbol.

Si se desea mejorar la calidad visual del culling si se tiene un objeto 3d que es atravesado por un
nodo cubo se tiene que dividir la imagen para que no se imprima la parte que no se encuentra en
el frustrum.

Optimizaciones para Quantizacion de Color

Una forma de mejorar el uso de la memoria es reduciendo todos los nodos que tengan una
referencia de uno, manteniendo el rbol pequeo y mejorando la eficiencia al acortar los tiempos
de recorrido

Tambin se puede crear punteros entre nodos hijos para mejorar la velocidad de recorrido ya que
la mayora de tiempo se malgasta en el recorrido desde la raz al rbol

El rbol todava puede servir para guardar la paleta de colores , una ves recorrido el rbol,
cuando se llega al nodo hijo se puede guardar el color en el nodo y llegar a el de una manera mas
rpida que una bsqueda secuencial entre la paleta

- 13 -

7.-Bibliografa
Material de Consulta:

ASSARSSON, U., AND MLLER, T. 2000. Optimized view frustum culling algorithms for
bounding boxes. Journal of Graphics
SUDARSKY, O., AND GOTSMAN, C. 1999. Dynamic scene occlusion culling. IEEE
Transactions on Visualization and Computer
ZHANG, H., MANOCHA, D., HUDSON, T., AND HOFF III, K. E. 1997. Visibility culling
using hierarchical occlusion maps. Computer
Joshua Shagam Joseph Pfeiffer, Jr . Dynamic Irregular Octrees. New Mexico State University.
CHACON MORENO,D. 2000. Estudio y Analisis de la teoria de la multirresolucion en el
modelado de solidos.

.Web Links:
http://www.cs.unc.edu/~geom/SSV/
http://www.gametutorials.com
www.Gamasutra.com

- 14 -