Un octree est une structure de données de type arbre dans laquelle chaque nœud peut compter jusqu'à huit enfants. Les octrees sont le plus souvent utilisés pour partitionner un espace tridimensionnel en le subdivisant récursivement en huit octants.

Des nœuds d'octree dépeints en tant que division d'un espace de couleur.

Quelques utilisations courantes des octrees :

  • l'indexation spatiale
  • la détection efficace de collision dans le cadre de la 3D
  • l'élimination des objets hors du cône de vue dans le cadre d'un rendu 3D
  • l'observateur d'état[1].

Les octrees sont l'analogie tridimensionnelle des quadtrees. Le nom est formé à partir d'octo (οκτώ « huit », en grec) et de tree (« arbre », en anglais) et s'écrit octree (avec un seul « t »). Chaque nœud d'un octree subdivise l'espace qu'il représente en huit sous-espaces (les octants).

Dans le cas d'un octree de type « point region » (PR), le nœud mémorise explicitement un point tridimensionnel qui est le « centre » de la subdivision pour ce nœud ; le point définit alors l'un des coins de chacun des huit enfants. Le nœud racine d'un octree de type PR peut représenter un espace infini.

Dans un octree de type « MX », le point de subdivision est implicitement le centre de l'espace que le nœud représente. Le nœud racine d'un octree de type MX doit représenter un espace fini de manière que les centres implicites des nœud soient bien définis.

Application pour la quantification de couleurs

modifier

L'algorithme d'octree de quantification de couleur (en), inventé par Gervautz et Pergathofer en 1988, encode les données de couleur d'une image en tant qu'octree pouvant aller jusqu'à neuf niveaux de profondeur. Les octrees sont utilisés parce que   et qu'il y a trois composantes de couleurs dans le système RVB.

L'indice de nœud pour qu'il s'étende à partir du niveau plafond est déterminé par une formule qui utilise les bits les plus significatifs des composantes rouge, verte et bleue, 4r + 2g + b, par exemple. Le niveau inférieur suivant utilise les bits les plus significatifs suivants, et ainsi de suite. Les bits les moins significatifs sont parfois ignorés afin de réduire la taille de l'arbre.

L'algorithme est grandement efficace du point de vue de la consommation de mémoire puisqu'il limite la taille de l'arbre. Le niveau plancher de l'octree est constitué de nœuds terminaux qui accumulent les données de couleur qui ne sont pas représentées dans l'arbre. Ces nœuds contiennent initialement des bits uniques. Si bien plus de couleurs de palette que la quantité désirée sont entrées dans l'octree, sa taille peut être continuellement réduite en cherchant après un nœud plancher et en moyennant ses bits dans un nœud terminal, éliminant ainsi diverses parties de l'arbre.

Une fois que la phase d'échantillonnage est terminée on obtiendra approximativement le nombre requis de couleurs en parcourant toutes les routes possible de l'arbre en partant de son nœud racine jusqu'à ses nœuds terminaux tout en tenant compte, au passage, des différents bits.

Notes et références

modifier
  1. (en) Henning Eberhardt, Vesa Klumpp et Uwe D. Hanebeck, Density Trees for Efficient Nonlinear State Estimation, dans Proceedings of the 13th International Conference on Information Fusion, Édimbourg, juillet 2010

Voir aussi

modifier

Articles connexes

modifier

Liens externes

modifier