Contribution de la reconstruction 3D à la compression de maillages

publicité
Contribution de la reconstruction 3D à la compression de
maillages surfaciques triangulaires
Rapport de stage – Master M2 Recherche Informatique
Spécialité IGI (Informatique Graphique et Images)
Céline ROUDET
[email protected]
Encadrée par Raphaëlle CHAINE – Maître de conférence au LIRIS
[email protected]
Laboratoire d'InfoRmatique en Images et Systèmes d'information
Université Claude Bernard Lyon 1
Bâtiment Nautibus
Campus de la Doua
8, Bd Niels Bohr
69622 Villeurbanne Cedex
1
Résumé
Depuis quelques temps, les objets tridimensionnels commencent à concurrencer le multimédia
traditionnel (images, sons, vidéos). Ces objets sont le plus souvent représentés par des maillages et sont
utilisés dans différents domaines comme la médecine, la Conception Assistée par Ordinateur (CAO), la
simulation, les jeux vidéos, le cinéma, les visites virtuelles, ... Depuis une dizaine d'années, un grand
nombre de méthodes de compression de maillages se sont développées. On distingue les méthodes de
compression sans perte qui proposent une réorganisation optimale du codage de l'information, des
méthodes de compression avec pertes qui filtrent l'information dans un espace transformé.
Dans le cadre de ce stage, nous nous sommes intéressés à la compression sans perte de maillages
surfaciques triangulaires. Dans la plupart des méthodes de compression, le parcours de la connectivité du
maillage est codé explicitement et guide le codage de l'information géométrique (position des points).
Notre méthode considère l'approche inverse et propose d'étudier la contribution des algorithmes de
reconstruction 3D pour coder la topologie d'un maillage surfacique triangulaire compte tenu de sa
géométrie.
Les méthodes de reconstruction à partir de nuages de points ne permettent pas une reconstruction
exacte de la surface de tous les objets 3D. Elles sont toutefois exploitables pour rendre implicite une
grande partie de l'information topologique lors de la compression. Nous avons ainsi choisi d'utiliser une
méthode de reconstruction existante afin d'obtenir d'une part, un codeur topologique construit à partir de
la totalité de l'information géométrique et d'autre part une variante de ce codeur avec transmission
graduelle et simultanée d'une partie de l'information géométrique.
Abstract
For some time, the three-dimensional objects have begun to compete with traditional multimedia
(images, sounds, videos). These objects are mostly represented by meshes and are used in various
domains like medicine, Computer-aided design (CAD), simulation, video games, cinema, virtual
visits, ... Since around ten years, lots of compression methods have been developed for meshes. Lossless
methods which propose an optimal reorganization of the information coding have to be distinguished
from lossy ones which filter the information in a transformed space.
Within the framework of this training, we were interested in the lossless compression of
triangular meshes. In most of the compression methods, the way the mesh connectivity is traversed is
explicitly coded and drives the coding of the geometrical information (position of points). Our method
considers the inverse approach and proposes to study the contribution of the 3D reconstruction
algorithms to code the topology of a triangular mesh considering its geometry.
The reconstruction methods from point sets do not allow an exact reconstruction of the surface
of all the 3D objects. They are however exploitable to represent implicitly a great part of the topological
information during the compression. Thus we chose to use an existing reconstruction method to obtain
on one hand a topological coder built from the totality of the geometrical information and on the other
hand a variant of this coder with gradual and simultaneous transmission of a part of geometry.
2
Table des matières
1 Introduction
4
2 Présentation des travaux existants en compression de maillages
5
2.1
2.2
2.3
Représentation non compressée des maillages . . . . . . . . . . . . . . . . . . . . . .5
Principes généraux des méthodes de compression . . . . . . . . . . . . . . . . . . . .5
La compression de maillages sans perte . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.3.1 La compression monorésolution . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.3.1.1 Algorithme de Deering . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.3.1.2 Algorithme de Touma et Gotsman . . . . . . . . . . . . . . . . . . . .7
2.3.1.3 Edgebreaker . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.3.2 La compression progressive . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.3.2 La compression géométrique . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.3.2.1 Motivation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .10
2.3.2.2 Codeur géométrique . . . . . . . . . . . . . . . . . . . . . . . . . . .11
2.4 La compression de maillages avec pertes . . . . . . . . . . . . . . . . . . . . . . . . . 12
3 Les algorithmes de reconstruction 3D
13
3.1 La reconstruction par approximation . . . . . . . . . . . . . . . . . . . . . . . . . . 13
3.2 La reconstruction par interpolation . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
3.2.1 L'algorithme de « convection géométrique » . . . . . . . . . . . . . . . . . . .14
4 Notre contribution
17
4.1 Principe général de notre algorithme . . . . . . . . . . . . . . . . . . . . . . . . . . .17
4.2 Description de l'algorithme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
4.2.1 Première approche : codage de la topologie par rapport à la géométrie . . . . . 17
4.2.1.1 Principes du codeur et du décodeur . . . . . . . . . . . . . . . . . . . 17
4.2.1.2 Codage des informations . . . . . . . . . . . . . . . . . . . . . . . . 20
4.2.2 Variante : codage graduel de la géométrie . . . . . . . . . . . . . . . . . . . . 21
4.2.2.1 Principes du codeur et du décodeur . . . . . . . . . . . . . . . . . . . 21
4.2.2.2 Principes de la prédiction utilisée . . . . . . . . . . . . . . . . . . . . 23
5 Implémentation
25
5.1 Présentation de la librairie CGAL . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
5.1.1 Représentation des objets géométriques dans CGAL . . . . . . . . . . . . . . 25
5.2 Nos choix d'implémentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
5.2.1 Noyau et structures de données utilisés . . . . . . . . . . . . . . . . . . . . . .26
5.2.2 Ordre de traitement des facettes de la triangulation . . . . . . . . . . . . . . . 27
6 Résultats
28
7 Conclusion et perspectives
30
Bibliographie
31
Annexe 1 : modèles utilisés
33
3
1 Introduction
Depuis quelques années, les modèles géométriques tridimensionnels sont de plus en plus omniprésents. Ils
sont apparus avec le développement de l’infographie et de la vision tridimensionnelle, qui ont permis une
modélisation 3D d’objets ou de scènes complexes. Ces modèles peuvent être créés par des systèmes de modélisation
(logiciels de Conception Assistée par Ordinateur (CAO), ...) ou obtenus grâce à des procédés de numérisation
tridimensionnelle d’objets physiques (range scanners). Ils sont généralement représentés sous forme de maillages
surfaciques (surface linéaire par morceaux composée de polygones) ou volumiques (représentation de l’objet par un
ensemble de polyèdres). Ces modèles peuvent aussi être décrits par des nuages de points, des formes à pôles
(courbes de Bézier, NURBS, ...) ou des surfaces implicites.
Ce type de données géométriques est utilisé par une grande diversité d’applications regroupées ici par
domaines :
• La conception d’objets industriels (CAO) ou familiers (CAM : Computer Aided Manufacturing)
• La médecine (aide au diagnostic, chirurgie assistée par ordinateur ou à distance, …)
• Les systèmes d’information géographiques (cartographie, géologie, astronomie, ...)
• La simulation de phénomènes physiques (expériences virtuelles)
• La réalité augmentée (mélange de scènes réelles et d’objets virtuels)
• Les applications ludiques (jeux vidéo, cinéma, visites virtuelles, ...)
• ...
Les modèles géométriques peuvent nécessiter une numérisation de plus en plus fine et détaillée, afin de
satisfaire aux attentes de réalisme. Par exemple, la numérisation du David (statue de Michel Ange) a été réalisée à
l'aide de 2 milliards de points [25]. La représentation non compressée d'un tel modèle nécessite alors plusieurs Giga
octets. Actuellement les machines et les réseaux sont de plus en plus performants et permettent de stocker ou
d'échanger un nombre de données de plus en plus important. Malgré ceci, toute amélioration des méthodes de
compression existantes est souhaitable, car on assiste également à une vulgarisation de la numérisation des données
et à une explosion prévisible de la production et de l'échange de ce type de données.
•
•
Deux approches sont envisageables pour la compression de données :
La compression sans perte qui propose une reconstruction exacte de l'information, et qui se révèle indispensable
pour certaines applications sensibles ne tolèrant pas de pertes (calculs par éléments finis, applications médicales,
...).
La compression avec perte où on s'autorise des pertes contrôlées. Les taux de compression obtenus sont alors
beaucoup plus importants et on choisit généralement le débit désiré.
Il existe plusieurs méthodes de compression de données textuelles, qui se révèlent également utiles pour la
compression d'images, de sons ou de vidéos en utilisant le plus souvent une approche basée sur les principes du
traitement du signal. Certaines de ces approches ont été étendues pour le codage de surfaces, mais depuis une
dizaine d'années, on observe l'apparition de méthodes spécialement dédiées aux maillages.
Un autre domaine qui manipule les objets géométriques est la géométrie algorithmique. Cette discipline
s'intéresse à l'étude symbolique abstraite de ces objets et permet de résoudre un grand nombre de problèmes à l'aide
d'algorithmes efficaces et de structures de données appropriées. Un des grands thèmes abordé par la géométrie
algorithmique est la reconstruction 3D.
L'utilisation des algorithmes de reconstruction 3D pour la compression de la connectivité des maillages n'a
été que très faiblement exploitée, mais s'avère très intéressante. Ainsi, nous avons choisi d'étudier l'apport de la
reconstruction 3D pour le codage de la topologie de maillages surfaciques triangulaires. Nous avons, dans ce but,
mis au point une méthode de compression sans perte exploitant un algorithme de reconstruction basé sur la
déformation de surface.
Les chapitres 2 et 3 de ce mémoire, abordent respectivement les principes de la compression de maillages
et de la reconstruction 3D à travers la présentation de plusieurs travaux existants. Les travaux correspondant le plus
à notre méthode sont expliqués en détail. Le chapitre 4 est consacré à la description de notre algorithme et le
chapitre suivant détaille nos choix d'implémentation. Pour finir, nous présentons les résultats obtenus ainsi que les
perspectives envisageables.
4
2 Présentation des travaux existants en compression de maillages
Un maillage est une surface linéaire par morceaux qui approxime la surface continue du modèle original.
Une telle approximation est caractérisée par une information géométrique qui définit la position des sommets dans
l’espace euclidien et une information topologique qui décrit la relation d’adjacence entre les sommets traduisant la
manière dont ils sont connectés entre eux.
Les maillages surfaciques triangulaires sont les plus utilisés pour la représentation d’objets dans l'espace
tridimensionnels. Ils sont en passe de devenir la représentation standard pour la modélisation d’objets géométriques
grâce à leur simplicité et leur efficacité. Ils sont composés de k-simplexes qui peuvent être des sommets (0simplexe), des arêtes (segment reliant deux sommets : 1-simplexe) ou des triangles (2-simplexe). On parle alors de
surface simpliciale [8].
N’importe quelle forme géométrique peut être représentée par un maillage. Pour certains modèles, d’autres
informations (ou attributs) peuvent être associées aux points (normale, courbure, couleur, information de texture,
…) facilitant la modélisation, le rendu et la visualisation des objets.
Contrairement aux images non vectorielles, aux sons et aux vidéos, les maillages se caractérisent
généralement par un échantillonnage irrégulier. En effet, les points ne sont pas répartis sur une grille régulière et ils
n’ont pas forcément le même nombre de voisins (ce nombre est appelé valence ou degré d’un sommet). Les
techniques de compression de maillages doivent donc être adaptées à ces structures particulières.
2.1 Représentation non compressée des maillages
La représentation naïve d'un maillage triangulaire consiste à coder les informations géométriques et
topologiques respectivement par :
• Une liste de points représentés par leurs coordonnées cartésiennes dans l’espace euclidien 3D. On code
généralement les coordonnées par des nombres flottants sur 32 bits.
• Une liste de triangles, chacun représenté par les indices de ses sommets dans la liste précédente. Les indices sont
généralement codés sur 32 bits.
Il existe plusieurs formats ASCII utilisant cette représentation. Les plus connus sont le langage VRML
(Virtual Reality Modeling Language) et le format OFF.
Ce type de codage s'avère très redondant, vu que la valence d'un sommet est en moyenne égale à 6 dans un
maillage triangulaire (chaque sommet est en moyenne incident à 6 triangles distincts). Ainsi pour ces maillages,
l'indice d'un sommet apparaît en moyenne 6 fois dans la liste des polytopes.
Plusieurs méthodes de compression, dont certaines sont présentées par la suite, permettent de réduire cette
redondance.
2.2 Principes généraux des méthodes de compression
Le principe général de toute approche de compression peut être représenté par le schéma ci-dessous [4] :
FIG. 1 - Schéma général de la compression. Toute approche de compression utilise les deux étapes
indiquées dans ce schéma afin d'obtenir la séquence binaire la plus compacte possible
Les méthodes de compression exploitent le contexte des données à représenter pour réorganiser
l'information de manière pertinente et optimale, afin de réduire le nombre de bits nécessaires à sa représentation.
Une fois l'information réorganisée en une séquence de symboles, un codage entropique est utilisé afin
d'obtenir la séquence de bits la plus compacte possible. Un tel codeur doit satisfaire à priori les conditions
5
suivantes :
• Condition d'unicité : deux messages différents ne doivent pas être codés de la même façon.
• Condition de déchiffrabilité : deux mots de codes successifs doivent être distingués sans ambiguïté.
Le but du codage entropique est de tendre vers l'entropie du signal échantillonné. Le terme d'entropie est
utilisé en théorie de l'information et désigne la limite minimale théorique du nombre de bits nécessaires au codage
de l'information portée par un signal [4]. Ainsi, pour s'approcher de cette limite, chaque symbole est représenté par
un code de longueur variable, inversement proportionnel à sa probabilité d’apparition. Les informations les plus
probables sont alors codées sur un petit nombre de bits.
Il existe plusieurs codeurs entropiques, dont les plus connus sont le codeur d'Huffman [20] et le codeur
arithmétique [29, 40] qui sont des méthodes statistiques. Le codage d’Huffman code les symboles un par un à partir
d'une analyse statistique préalable des données. Il est utilisé dans les normes de compression d’images (JPEG) ou de
vidéos (MPEG). Chaque symbole est codé par un nombre entier de bits, ce qui empêche la plupart du temps de
s’approcher très près de l’entropie du signal.
Le codage arithmétique permet de se rapprocher plus de l'entropie du signal, car il code une séquence de
symboles par un seul nombre. Chaque symbole est ainsi représenté dans la séquence par un nombre de bits non
nécessairement entier. Ce codage est toujours basé sur une analyse statistique préalable des données et est utilisé
dans la norme JPEG 2000.
Il existe également des méthodes de codage par substitution [41, 42]. Celles-ci gèrent un dictionnaire
adaptatif qui contient les derniers symboles codés et s’enrichit au fur et à mesure. Ce dictionnaire est très utile pour
réduire l'entropie du signal lorsque des séquences de motifs réapparaissent.
2.3 La compression de maillages sans perte
Il est d’usage de séparer le coût de la géométrie du coût de la topologie pour présenter les résultats d’un
algorithme de compression de maillages, même si ces deux coûts sont intimement liés. Cette séparation permet de
mettre en évidence la dépendance entre le codage de la géométrie et la quantification utilisée.
Les travaux réalisés en compression de maillages sans perte se divisent en deux grandes catégories : les
méthodes dites mono-résolution (ou non progressives) et les méthodes progressives. La différence repose
essentiellement sur la façon de coder l'information topologique.
2.3.1
La compression monorésolution
Les méthodes mono-résolution sont les premières a avoir été proposées pour la compression de maillages
surfaciques. Elles utilisent toutes le même principe de parcours linéaire des triangles, qui consiste à commencer par
un triangle germe puis à découvrir à chaque étape un nouveau sommet jusqu'à ce que le maillage soit entièrement
parcouru. La bande de triangles formée peut ne pas couvrir l'ensemble du maillage (si elle se referme sur ellemême), dans ce cas, on relance le processus en partant d'un nouveau triangle germe non codé. La découverte d'un
nouveau triangle va généralement de pair avec la découverte d'un nouveau sommet et un code doit alors être
transmis afin de déterminer la façon de rattacher le nouveau sommet au triangle précédemment découvert.
Ces méthodes de compression diffèrent les unes des autres par le parcours et le codage de la connectivité
qui peut se faire de plusieurs manières. Les méthodes se distinguent également dans leur façon de coder
l'information géométrique à partir de l'information topologique, qui exploite le codage prédictif de la position des
points par rapport à leur voisinage local.
Le principe du codage prédictif est d'exprimer la position d'un sommet par rapport aux sommets
précédemment découverts lors du parcours topologique. Ceci permet d'exploiter la corrélation entre ce sommet et
son voisinage, réduisant ainsi l'information transmise. Cette dernière correspond au vecteur différence entre la
position prédite par le voisinage et la position réelle du point. Cette technique est parfois référencée sous le nom de
« delta-encoding » et le vecteur différence est appelé résidu ou vecteur correctif. On l'exploite également pour le
codage des attributs additionnels (couleur, normale, texture, ...), qui sont souvent fortement corrélés dans un
voisinage local. Les trois types de prédiction de position les plus utilisés sont illustrés par les figures ci-dessous
tirées de [14], mais il existe également des techniques de prédiction non linéaire.
6
FIG. 2 - Les 3 types de prédiction les plus utilisés. Le codage différentiel code la différence d entre le
sommet précédent (i-1) et le sommet courant i. Pour les 2 autres schémas, la position du point i est codée par la
différence r entre la position prédite par le voisinage et la position réelle de i.
Venons-en maintenant aux principaux algorithmes de compression de maillages mono-résolution
2.3.1.1 Algorithme de Deering
En 1995, Deering est le premier à introduire le terme de « compression géométrique » [12]. Il propose une
représentation compacte des maillages surfaciques par une structure de données linéaire : les bandes de triangles
généralisées. Dans cette structure, le sommet courant engendre un nouveau triangle connecté par la droite ou par la
gauche au dernier triangle construit. Les bandes de triangles généralisées permettent une plus grande flexibilité
comparé aux bandes de triangles standard où le sommet est alternativement connecté par la droite et par la gauche,
comme nous pouvons le voir sur les figures ci-dessous.
FIG. 3 - Codage d'un maillage par bandes de triangles. (a) Bande de triangles standard. (b) Bande de
triangles généralisée (les lettres G et D associées aux sommets indiquent qu'ils sont connectés au triangle
précédent respectivement par la gauche ou par la droite).
Grace à cette représentation (utilisée dans OpenGL et Java3D), un sommet est en moyenne codé deux fois,
ce qui représente déjà une réduction de la redondance initiale. Cette technique conduit à un codage de la
connectivité sur 7,5 + log2 (n/8) bits par sommet. La compression de la position et des attributs des sommets est
réalisée par prédiction linéaire directe suivie d'un codage d'Huffman.
2.3.1.2
Algorithme de Touma et Gotsman
Une autre manière de parcourir les maillages surfaciques de façon linéaire a été exploitée par Touma et
Gotsman en 1998 [39]. Ils proposent de faire évoluer une liste de sommets formant un polygone et contenant
l'ensemble des triangles déjà codés. Ce polygone évolue par conquête des arêtes non encore codées autour d'un
7
sommet pivot. La séquence codante est alors constituée de la valence de chaque nouveau sommet découvert à
laquelle s'ajoute des codes additionnels traduisant les changements topologiques du polygone lors de sa croissance,
qui sont généralement rares. Cette approche s'avère très intéressante puisque chaque sommet n'est codé qu'une seule
fois. Le coût de la topologie est de l'ordre de 2 bits par sommet pour les maillages usuels et tend vers zéro pour les
maillages très réguliers (de valence 6). Sur ce dernier type de modèles, cet algorithme est actuellement le plus
compétitif.
Le codage de la géométrie est réalisé en utilisant la prédiction par règle du parallélogramme. Cette dernière
produit une prédiction située dans le plan défini par le triangle précédent, qui peut être améliorée par l'estimation de
l'angle formé entre ce dernier et le triangle courant (« crease angle »). Les auteurs calculent cette estimation à partir
du voisinage local. Cette approche permet de réduire le codage de la géométrie de 69% par rapport aux méthodes
utilisant la prédiction linéaire classique.
2.3.1.3 Edgebreaker
L'algorithme Edgebreaker utilise le même principe que celui de Touma et Gotsman, mais le parcours et
l'information topologique sont codés différemment [26, 30-33, 36]. La connectivité est ainsi codée par une chaîne
de cinq symboles, chacun représentant une configuration possible. Ces symboles sont présentés dans la figure cidessous, extraite de [26].
FIG. 4 - Les 5 symboles CLERS de l'algorithme Edgebreaker. Les triangles jaunes contenant les lettres
C, L, E, R et S représentent les triangles courants, le triangle Y désigne le triangle précédent. Les triangles blancs
et gris sont respectivement des triangles non découverts et déjà codés. Dans la configuration C, le sommet V n'a
pas été découvert auparavant (son état est symbolisé par le rond blanc).
Cette « machine à états finis » permet de coder les triangles du maillage en formant une spirale où chaque
sommet n'est codé qu'une seule fois. Cette méthode garantit un coût topologique d'au plus 1,8 bits par triangle qui
se révèle inférieur pour les maillages réguliers.
De nombreuses extensions de cet algorithme ont été proposées notamment pour la compression de
maillages tétraèdriques [34, 35].
Notre algorithme, en tant que méthode de compression mono-résolution se rapproche des deux dernières
méthodes citées par leur aspect combinatoire. En effet, nous verrons par la suite que notre méthode procède
également par conquête de sommets en se basant sur les triangles courants.
2.3.2
La compression progressive
Avec l'évolution d'Internet et des applications multimédia, les modèles géométriques peuvent être
véhiculés sur des réseaux dont la bande passante constitue un goulet d'étranglement pour le transfert d'informations.
Ils peuvent également être visualisés par des terminaux de nature très différente (ordinateur, PDA, téléphone
portable dans le futur, ...). Il est ainsi nécessaire de produire des méthodes de compression adaptées au matériel
ainsi qu'aux besoins de l'utilisateur, c'est le but de la compression progressive.
Les méthodes de compression progressive codent les maillages de façon hiérarchique. Elles produisent une
version simplifiée (grossière) du maillage ainsi qu'une séquence d'opérations de raffinement permettant de
reconstituer le maillage original. La transmission et la visualisation des maillages s'effectuent de façon progressive,
l'utilisateur pouvant même décider, s'il le souhaite, de stopper le raffinement à tout moment (compression avec
8
pertes). L'enjeu de ces méthodes et d'optimiser le compromis débit / distorsion pour obtenir à tout moment la
meilleure représentation possible quel que soit le niveau de reconstruction.
Ces méthodes produisent ainsi des approximations intermédiaires du modèle original correspondant à
différents niveaux de résolution. Il existe deux catégories de méthodes qui diffèrent par les niveaux de résolutions
proposés. La première catégorie propose un raffinement continu du maillage où chaque opération de raffinement est
codée séparément. Cette méthode s'avère très flexible puisqu'on dispose alors d'un très grand nombre de niveaux de
détails. La seconde catégorie fait évoluer le maillage en regroupant les opérations de raffinement en ensembles
indépendants, produisant moins de niveaux de détails (une dizaine environ). Cette dernière méthode est beaucoup
plus rapide et le code produit plus compact, c'est pourquoi la plupart des travaux l'exploitent.
Le taux de compression proposé par ces méthodes est généralement plus élevé comparé aux méthodes
mono-résolution.
Le premier algorithme de compression progressive a été proposé par Hoppe en 1996 [18] et se classe dans
la première catégorie (raffinement continu). La méthode de simplification utilisée (permettant d'obtenir une version
grossière du maillage) est la contraction d'arête illustrée par le schéma ci-dessous.
FIG. 5 – Les opérateurs de contraction et d'expansion d'arête. L'opérateur d'expansion d'arête est utilisé
pour raffiner le maillage. Les positions des sommets vs et vt sont alors prédites à partir du sommet vs' .
Afin de préserver au mieux la forme et l'apparence du maillage durant cette opération, une stratégie de
sélection optimale des arêtes à traiter est utilisée. La procédure de raffinement utilise l'opération inverse (appelée
expansion d'arête) et permet de transmettre une séquence de détails utilisée lors du raffinement progressif. La
position des sommets vs et vt peut alors être prédite à partir du sommet vs' de la résolution inférieure. Un codage
d'Huffman est utilisé pour coder ces informations. Cette méthode propose un coût topologique comparable à celui
des bandes de triangles.
Parajola et Rossignac ont par la suite proposé une extension de cette approche en considérant un
regroupement de ces opérations en ensembles indépendants [27]. Ainsi, à chaque étape de la simplification, environ
30% des sommets sont réduits par contraction, ce qui diminue le coût de la topologie.
Des extensions des méthodes mono-résolution ont également été proposées. Elles utilisent généralement
elles aussi l'opération de contraction d'arête [1, 38].
Un autre type d'opération a été exploité par Cohen-Or et al. [10]. Ils proposent pour la simplification, de
supprimer un ensemble de sommets indépendants (représentés par des points rouges dans le schéma (a) ci-dessous)
et de retrianguler les trous (ou patchs) formés. Une méthode permet ensuite d'identifier les patchs où les nouveaux
sommets seront insérés en coloriant tous leurs triangles d'une même couleur. Quatre couleurs suffisent pour que les
patchs adjacents ne soient pas représentés de la même couleur, comme nous pouvons le voir sur le schéma (b). Une
variante à deux couleurs, illustrée par le schéma (c) propose une retriangulation par bandes triangulaires formant un
Z. La géométrie est prédite à partir des sommets du patch polygonal.
9
FIG. 6 – La technique de suppression de sommets indépendants. (a) Maillage initial, les sommets à
supprimer sont représentés par des points rouges. (b) Technique de 4-coloration des triangles appartenant aux
trous polygonaux formés par la suppression des sommets. (c) Technique de 2-coloration : les triangles formés par
la retriangulation des trous forment un Z, permettant de n'utiliser que 2 couleurs pour leur identification.
L'opération de fusion de sommet est une opération plus générale qui permet de représenter de façon
hiérarchique des modèles non nécessairement manifold (soupes de triangles). Cet opérateur permet de fusionner des
sommets non adjacents, comme le montre le schéma (a) de la figure ci-dessous. Pour de tels modèles, il est tout de
même intéressant de privilégier la contraction d'arête pour les parties localement manifold, qui s'avère beaucoup
moins coûteuse. Cet opérateur a été utilisé dans le codeur topologique de Gandoin et Devillers [15].
FIG. 7 – Les opérations de simplification utilisées par l'algorithme de Gandoin et Devillers. (a)
L'opérateur de fusion de sommet, permettant de simplifier des surfaces non manifold. (b) L'opérateur de
contraction d'arête, plus économique.
2.3.3 La compression géométrique
2.3.3.1 Motivation
En partant de l'observation que l'information géométrique représente la partie la plus coûteuse d'un
maillage, Gandoin et Devillers ont réalisé un codeur efficace pûrement géométrique [15]. Ce choix part aussi de
l'observation que de plus en plus d'applications utilisent des ensembles de points sans information topologique
(représentation « basée point ») et que cette dernière peut parfois être retrouvée de manière automatique. Ceci est en
particulier vrai pour les nuages de points correspondant à des modèles de terrains. En effet, la triangulation de
Delaunay 2D des points du modèle projetés sur un plan permet une reconstruction automatique de sa topologie.
A la suite de la triangulation planaire, le modèle de terrain est reconstitué en « remontant » chaque point
dans l'espace 3D. Une connectivité est alors implicitement définie par l'algorithme de triangulation qui produit une
triangulation unique, sauf dans le cas de configurations dégénérées (où 4 points, définissant 2 triangles, sont
cocycliques) pour lesquelles deux configurations sont alors possibles. Dans ce cas et pour d'autres configurations où
l'on impose à la topologie de respecter certains contours du modèle (suivre une rivière, une route, ...), une partie de
la topologie doit être codée explicitement. En effet, certaines arêtes imposées peuvent ne pas être localement de
Delaunay (cela représente moins de 5% des arêtes). Dans ce dernier cas, la triangulation utilisée pour la
10
reconstruction est la triangulation de Delaunay contrainte.
Etant donnés un ensemble de points P et d'arêtes A dans le plan, la triangulation de Delaunay contrainte est
l'unique triangulation de P contenant A et telle que tout sommet s de P ne respectant pas le critère de Delaunay est
« caché » par une contrainte pour au moins une des extrémités du triangle (l'extrémité u dans le schéma ci-dessous).
FIG. 8 – Triangle non localement de Delaunay. Le point s appartient au cercle circonscrit au triangle
uvw, mais il est « caché » du point u par l'arête vw.
Pour les maillages surfaciques qui ne sont pas des modèles de terrains, les auteurs retournent à une
méthode plus classique et proposent un codage explicite de la topologie (utilisant les opérateurs décrits dans la
partie précédente), puisqu'il n'y a alors pas de manière simple de retrouver la topologie du maillage de départ.
2.3.3.2 Codeur géométrique
Le codage de la géométrie repose sur un schéma dont le principe est de construire une boîte englobante
autour du nuage de points et de la subdiviser de façon récursive (formation d'un kd-tree). Cette approche, que nous
allons expliquer à l'aide du schéma 2D de la figure 9 (extrait de [15]), permet le codage de la géométrie d'un nuage
de points en dimension quelconque.
FIG. 9 – Technique de codage de l'information géométrique. Les chiffres représentent le nombre de
points présents dans la cellule où ils figurent. Le nombre de points total (7 ici) est ensuite codé sur 32 bits. Lors de
la première subdivision, on ne code que le nombre de points de la cellule de gauche qui peut ici être compris entre
0 et 7 (8 possibilités). Ce chiffre sera donc codé sur log2(8) bits.
Le principe est de commencer par coder le nombre total de points. Ensuite, à chaque subdivision, le
nombre de points présents dans la cellule de gauche est codé par codage arithmétique, l'information présente dans la
cellule de droite étant implicite. Au fur et à mesure de la subdivision, la localisation des points devient de plus en
plus précise jusqu'à ce que chaque cellule ne contienne plus qu'un point. Les subdivisions ne sont alors stoppées que
lorsque la précision maximale sur les points est atteinte, c'est-à-dire, jusqu'à ce que les cellules contenant un point
atteignent la taille unitaire.
Cette technique de codage est très intéressante puisqu'elle permet de faire l'économie de l'information
d'ordre sur les points. Elle présente de plus un aspect progressif. En effet il est possible de génèrer, à chaque étape,
un unique représentant de l'ensemble des points au centre de chaque cellule non vide, afin de disposer d'une
représentation progressive de l'information géométrique.
Les performances de l'algorithme se positionnent avantageusement par rapport aux méthodes progressives
les plus efficaces, si on ajoute le codage de la topologie. Le surcoût engendré par rapport à l'algorithme de Touma et
Gotsman est inférieur à 5%.
11
2.4 La compression de maillages avec pertes
Les méthodes de compression avec pertes utilisent généralement un espace transformé afin de projeter le
signal dans un domaine fréquentiel dans lequel certaines fréquences peuvent être quantifiées voire éliminées sans
que cela soit perceptible par l’oeil. La projection de l’information géométrique dans un espace transformé permet
d’exploiter la corrélation spatiale et fréquentielle. Ainsi l’information géométrique se trouve beaucoup plus
concentrée que dans le cas d'une simplification séquentielle car cette approche permet de réduire, sans codage,
l’entropie du signal.
Plusieurs méthodes utilisent des transformées pour la compression de maillages. Certaines proposent une
extension de l’analyse de Fourrier classique des signaux 2D (Transformée en Cosinus, Karhunen-Loeve, …) pour
traiter les maillages surfaciques [21]. Elles proposent pour cela une généralisation de la transformée sur grille
régulière aux maillages surfaciques irréguliers.
Une alternative à la décomposition spectrale est l'analyse multirésolution, qui permet de coder les
maillages de manière progressive. Le principe est de décomposer par filtrage un signal à l’aide de deux fonctions
d'ondelettes de base. Le filtrage passe-bas produit alors un maillage grossier basse résolution, alors que le filtrage
passe-haut fournit un ensemble de détails haute fréquence permettant d'affiner progressivement le maillage grossier.
Les codeurs d’ondelettes exploitent en général plusieurs niveaux de décomposition. En effet, si on réitère le
processus de décomposition sur le signal basse fréquence, on obtient une décomposition hiérarchique par paquet
d’ondelettes, correspondant à une représentation multirésolution [28].
Les transformées en ondelettes sont très utilisées dans les domaines de l'imagerie, la vidéo et le son car
elles sont bien adaptées aux signaux réguliers. Les maillages étant la plupart du temps irréguliers, des techniques de
remaillage sont nécessaires pour produire des maillages semi-réguliers, sur lesquels les méthodes d'analyse
multirésolution sont applicables. Les maillages semi-réguliers multirésolution permettent d'obtenir le maillage
original à différentes résolutions. Chaque résolution est construite de façon bien particulière où un sommet est
généralement ajouté au milieu de chaque arête de la résolution inférieure (subdivision quaternaire). Chaque triangle
du maillage grossier est ainsi subdivisé en 4 sous-triangles plusieurs fois de suite jusqu'à l'obtension d'un maillage
très fin et proche du maillage original. Des techniques de subdivision ternaire ou adaptative sont plus rarement
utilisées, le but de cette étape étant de rendre implicite le maximum d'information topologique. Le maillage le plus
grossier est obtenu à partir du maillage initial, par une technique de simplification séquentielle, qui, associée à une
méthode de raffinement, tente de réduire au maximum l'information nécessaire au codage du maillage semi-régulier
multirésolution. C'est ce que proposent le remailleur MAPS (Multiresolution Adaptative Parameterization of
Surfaces) [24] et le remailleur normal [17].
A partir de ces maillages semi-réguliers, les méthodes d'analyse multirésolution repositionnent les
sommets, afin de se rapprocher au maximum du maillage original et ceci pour chaque résolution. Ces
repositionnements correspondent aux coefficients d'ondelette correspondant à la seule information transmise pour le
raffinement du maillage grossier (sous réserve de connaître la technique de subdivision utilisée). La quantification
permet de réduire nettement le nombre de bits utilisé pour leur codage, surtout pour les coefficients haute
fréquence. Un codage entropique est ensuite appliqué ainsi que pour le codage du maillage grossier.
Nous n'avons donné que le principe de l'analyse multirésolution, étant donné que ce type de méthode
s'éloigne de l'approche considérée par notre algorithme, mais un grand nombre d'algorithmes de compression
utilisent une transformée en ondelette associée à une technique de remaillage [22, 23, 28].
12
3 Les algorithmes de reconstruction 3D
La reconstruction de la surface d’objets à partir d'un nuage de points est un domaine de recherche actif
pour lequel plusieurs approches ont été considérées. Cette technique consiste généralement à retrouver une
approximation linéaire par morceaux de la surface inconnue.
3.1 La reconstruction par approximation
Certaines méthodes réalisent cette reconstruction par approximation de la fonction de distance signée
séparant tout point de l'espace de la surface cherchée [11, 19]. Cette fonction de distance permet une définition
implicite de la surface qui peut être polygonalisée en utilisant un algorithme de type marching-cube. Curless et
Levoy [11] convertissent pour cela des « range images » (obtenues par un range scanner) en fonctions de distance et
les combinent en une unique fonction de distance globale. Leur algorithme s'avère très efficace en temps et en
mémoire et permet de reconstruire des modèles très détaillés contenant plus de 2,6 millions de triangles. Il a
notamment été utilisé dans le projet de numérisation des oeuvres de Michel Ange [25].
3.2 La reconstruction par interpolation
La géométrie algorithmique a également apporté des contributions importantes au problème de la
reconstruction 3D. Les méthodes proposées réalisent généralement une interpolation des échantillons. Il existe
plusieurs méthodes de reconstruction de maillages basées sur la triangulation de Delaunay 3D et le diagramme de
Voronoi [8]. Pour une description de ces méthodes, le lecteur pourra se rapporter à l'article de synthèse proposé par
Cazals et Giesen [7].
Etant donné un ensemble E de points de l'espace, une triangulation de E est un ensemble de k-simplexes
dont les sommets sont les points de E et qui vérifie les propriétés suivantes :
• l'intersection de 2 k-simplexes est soit vide, soit une face commune aux 2 k-simplexes
• les k-simplexes pavent l'enveloppe convexe de E
La triangulation de Delaunay 3D est la triangulation composée de tétraèdres dont la sphère circonscrite est
vide de tout point. La figure ci-dessous présente en 2D une triangulation quelconque (a) et la triangulation de
Delaunay (b) d'un même ensemble de points.
FIG. 10 – Différentes triangulations d'un même ensemble de points. (a) Triangulation quelconque. (b)
Triangulation de Delaunay ; on remarque que pour cette dernière, tous les cercles circonscrits aux triangles sont
vides de tous points.
On appelle diagramme de Voronoï de E, le partitionnement de l'espace en cellules regroupant les points
ayant le même plus proche voisin dans E. La figure ci-dessous présente un exemple de diagramme de Voronoï (en
bleu).
13
FIG. 11 – Diagramme de Voronoï d'un ensemble de points. Ce diagramme (en bleu) est la représentation
duale de la triangulation de Delaunay (en vert).
Parmi les méthodes de reconstruction basées sur la triangulation de Delaunay, on peut citer le concept
d'alpha-formes [13], l'algorithme de sculpture de Boissonnat [5], le crust [2], la convection géométrique [9] ou
également la reconstruction par interpolation naturelle [6] et le « power crust » [3] qui utilise une variante du
diagramme de Voronoï, le « power diagram ».
Certaines de ces méthodes de reconstruction donnent une condition nécessaire et suffisante sur
l'échantillonnage de l'objet pour garantir une reconstruction valide. En pratique, ces critères ne sont pas toujours
satisfaits (présence d'arêtes vives, de parties minces, ...). Lorsque l'on s'éloigne des conditions optimales
d'échantillonnage, les algorithmes de reconstruction peuvent se comporter différemment. Il n'est ainsi plus possible
de compter sur eux pour retrouver la topologie de n'importe quelle surface.
Les méthodes décrites précédemment peuvent toutefois constituer une aide précieuse pour la compression
de maillages. En effet, en plus du nuage de points, il est possible d'ajouter des informations à l'algorithme afin de le
guider vers le maillage à compresser. Ainsi l'information topologique se réduit à ces informations, vu que le reste de
la connectivité peut être reconstruit automatiquement par l'algorithme choisi.
La contribution de notre travail consiste à étudier l'apport de la reconstruction 3D pour le codage de la
topologie de maillages surfaciques, la géométrie étant codée par un codeur géométrique du type de celui de
Gandoin et Devillers [15]. Pour cela, il faut envisager de coder explicitement une petite partie de l'information
topologique.
Nous avons choisi de considérer cette approche en partant d'une méthode de reconstruction 3D appelée
« convection géométrique » [9]. Une telle approche pourrait également être mise en oeuvre avec un autre
algorithme de reconstruction 3D.
3.2.1 L'algorithme de « convection géométrique »
L'algorithme de « convection géométrique » s'inspire de la méthode de reconstruction de surface de Zhao
et al [43] dont la mise en oeuvre repose sur les level-set. Le principe de leur méthode est de soumettre une surface à
des forces pour la faire évoluer, par déformation, vers le modèle original. Pour cela, les auteurs calculent une
fonction de distance (ou d'énergie) entre le nuage de points d'entrée et une surface donnée (qui englobe le nuage).
L'objectif est de minimiser la fonction de distance pour faire évoluer la surface jusqu'à stabilisation, représentant
une bonne approximation du modèle original.
Les auteurs commencent par réaliser la convection de la surface dans le gradient de la fonction distance.
Pour cela, un schéma numérique basé sur une grille régulière (construite à partir d'une boîte englobant le nuage de
points) est utilisé.
L'algorithme de « convection géométrique » propose de reprendre le modèle de convection décrit
précédemment sans l'utilisation de grille régulière. Pour cela, l'auteur prouve qu'en partant d'une surface englobant
le nuage de points, le processus de convection converge vers une « pseudo-surface » fermée, composée de demifacettes orientées comprises dans la triangulation de Delaunay 3D des points et offrant une propriété particulière.
14
Cette dernière est appelée propriété de Gabriel.
Etant donnés 3 points P1, P2 et P3, la demi-facette orientée
représente le triangle composé des
points P1, P2 et P3 orienté selon la direction de
. Une facette peut être vue comme le regroupement de
deux demi-facettes. Etant donnée une facette f, la sphère diamétrale de f (plus petite sphère comprenant f) est
l'union de deux demi-sphères associées à chacune des demi-facettes composant f. La propriété de Gabriel est alors
respectée pour une demi-facette, si sa demi-sphère associée est vide de tout autre point.
La figure ci-dessous représente une « pseudo-surface » en 2D.
FIG. 12 – Exemple d'une pseudo-surface orientée fermée en 2D. Chaque demi-facette est orientée du
côté du trait rouge qui lui est associé. La demi-facette en pointillés ne fait pas partie de la pseudo-surface finale,
car elle ne respecte pas la propriété de Gabriel.
Le terme « pseudo-surface » désigne une surface orientée et fermée dont certaines parties peuvent
localement partager une position géométrique commune. Les « pseudo-surfaces » permettent de représenter de
façon combinatoire et manifold les surfaces fermées mais aussi les surfaces à bords et/ou non manifold, comme
nous le montre le schéma ci-dessous (en 2D). Un maillages est dit manifold (ou variété) si tout sommet est le centre
d'un disque topologique, autrement dit possède un voisinage homéomorphe à un disque.
FIG. 13 – Exemple de pseudo-surface s'appuyant sur une surface 2D non manifold. On remarque que
les cinq sommets du milieu s'appuient sur le même point géométrique.
L'auteur propose une exploitation de ces résultats théoriques à travers la proposition d'un nouvel
algorithme géométrique de reconstruction 3D basé sur la triangulation de Delaunay 3D des points. La pseudosurface utilisée au début du processus de convection est alors l'enveloppe convexe des points (comprise dans la
triangulation de Delaunay 3D). L'évolution de cette surface se fait ensuite à travers les tétraèdres intérieurs de la
triangulation. A chaque étape de l'évolution, on maintient une pseudo-surface toujours comprise dans la
triangulation de Delaunay, jusqu'à ce que toutes les demi-facettes satisfassent le critère de Gabriel.
15
La pseudo-surface orientée vers l'intérieur évolue en subissant des opérations géométriques et
topologiques. Si la propriété de Gabriel n'est pas respectée par une demi-facette, on obtient :
• Soit « l'ouverture » de celle-ci afin d'en découvrir trois nouvelles qui se rapprocheront plus du modèle original
(ce principe est illustré par la figure 12 en 2D où l'arête en pointillés s'ouvre vers deux nouvelles).
• Soit l'effondrement de deux demi-facettes si la demi-facette couplée à la facette à « ouvrir » (partageant la même
géométrie mais orientée différemment) fait partie de la pseudo-surface courante. Dans ce cas, ces deux demifacettes doivent être retirées de la pseudo-surface, qui « s'évanouit » au niveau de leur auto-intersection. Cette
opération provoque un effondrement local des deux demi-facettes couplées et peut entraîner une modification
topologique de la pseudo-surface. Huit cas particuliers sont considérés en fonction de la configuration des
facettes du voisinage.
Le fait de considérer une pseudo-surface orientée dans l'algorithme permet la reconstruction de surfaces à
bords (non fermées) ou contenant des parties minces (correspondant à des demi-facettes couplées). Lors de la
reconstruction, il arrive qu'on obtienne des parties minces indésirables (création d'ailerons accrochés au maillage).
Pour les surfaces fermées (volumes), il n'est pas difficile de les retirer alors que pour les surfaces à bords, il faut les
distinguer de celles qui font partie de la surface originale. Pour cela, on poursuit l'algorithme de convection en 2D
sur les parties minces considérées.
L'algorithme de « convection géométrique » a été étendu pour éviter que le processus de convection ne soit
stoppé par la présence de cavités importantes (poches). Cette extension ne s'applique qu'aux surfaces suffisamment
bien échantillonnées autour de la poche. Le principe consiste à comparer la taille de la demi-facette bloquante avec
la densité des points au voisinage de la facette. Ainsi le processus de convection sera poursuivi à l'intérieur de la
poche si la taille de la demi-facette est grande devant la densité locale des sommets composant son voisinage.
FIG. 14 – Blocage du processus de convection par une poche. Ces poches peuvent être détectées si
l'objet est suffisamment bien échantillonné.
La triangulation 3D de points échantillonnés sur une surface peut faire apparaître des slivers (tétraèdres
dont les 4 sommets voisins sur la surface sont quasiment coplanaires). Lors de la convection, si ce sliver est atteint
de part et d'autre d'une surface contenant des parties minces, il est possible de faire apparaître un trou (poignée). On
parle alors de bruit topologique.
FIG. 15 – Exemple de surface mal reconstruite par l'algorithme de convection. Pour une telle surface,
l'algorithme créé un trou, car le triangle central (faisant partie du sliver) est atteint par le haut et par le bas de la
surface lors de la convection.
16
4 Notre contribution
4.1 Principe général de notre algorithme
Nous avons choisi d'utiliser l'algorithme de reconstruction 3D expliqué ci-dessus et de l'exploiter afin
d'obtenir d'une part un codeur de la topologie d'un maillage construit à partir de la géométrie et d'autre part une
variante de ce codeur utilisant une transmission graduelle et simultannée de la géométrie. Nous venons de voir que
l'algorithme de « convection géométrique » a été étendu pour traiter certaines particularités de surfaces (poches) et
que d'autres spécificités ne permettent pas une reconstruction exacte (mauvais échantillonnage, slivers, ...). Dans le
cadre de la compression de maillages, il est possible de guider l'algorithme pour tenir compte de ces particularités,
puisqu'on dispose du maillage original lors du codage de l'information. Il suffit alors de ne transmettre que des
codes permettant au décodeur d'identifier ces spécificités afin de produire une reconstruction fidèle du maillage
original.
L'entropie correspond alors à l'ensemble de ces informations additionnelles liées au nombre de poches, de
cas entraînant du bruit topologique (assez rare) et à l'écart entre la distribution des sommets et une distribution
assurant la validité de l'algorithme de reconstruction.
Deux codeurs peuvent être construits sur ce principe, le premier déléguant entièrement le codage de la
géométrie à un algorithme du type de celui de Gandoin et Devillers [15], le second s'occupant également du codage
de l'information géométrique de certains points en exploitant le principe de prédiction géométrique présenté dans la
partie 2.3.1. Dans les deux cas, le codeur et le décodeur construisent tous les deux une triangulation de Delaunay
3D sur laquelle l'algorithme de convection est appliqué. Pour qu'ils aboutissent au même maillage (le maillage
initial), il faut qu'ils disposent d'informations équivalentes, même si elles sont de nature différente.
Dans le premier codeur, l'information topologique est déduite de la géométrie mais est codée
indépendamment de cette dernière. Le codeur et le décodeur ont en effet besoin de la position géométrique de
l'ensemble des points pour construire la triangulation de Delaunay 3D sur laquelle l'algorithme de convection
s'applique. Pendant le processus de convection, le codeur, qui dispose du maillage initial M, doit transmettre des
codes spécifiques si l'algorithme de convection n'est pas capable de converger vers M. Le décodeur, qui ne dispose
pas de M, utilise alors ces codes transmis par le codeur pour détourner l'algorithme de convection et aboutir à M.
Dans la seconde version, seuls les échantillons situés sur l'enveloppe convexe du nuage de points sont
codés indépendamment de l'information topologique, les autres points étant codés au fur et à mesure de l'évolution
du processus de convection. Le décodeur commence alors par construire la triangulation de Delaunay des points de
l'enveloppe convexe et l'enrichit en suivant l'évolution du processus de convection. La position des points intérieurs
peut ainsi être prédite à partir de l'évolution locale de la convection (afin de réduire l'information géométrique). Des
codes additionnels sont toujours utilisés pour diriger l'algorithme et le faire converger vers le maillage initial. Cette
version se rapproche des méthodes mono-résolution qui représentent les maillages de façon linéaire, mais au lieu de
découvrir à chaque étape un nouveau sommet sur la surface, le nouveau sommet découvert est situé dans la
triangulation de Delaunay 3D.
4.2 Description de l'algorithme
Les maillages considérés par notre algorithme sont des maillages surfaciques triangulaires non
nécessairement manifold ni fermés et représentés de façon naïve, par exemple par des fichiers OFF. Ces maillages
peuvent contenir des informations additionnelles (couleurs, texture, normale, ... ).
Dans le cadre de ce travail, nous avons considéré des maillages dont les facettes sont comprises dans la
triangulation de Delaunay 3D des échantillons.
4.2.1 Première approche : codage de la topologie par rapport à la géométrie
4.2.1.1 Principes du codeur et du décodeur
La première opération consiste à construire la triangulation de Delaunay 3D s'articulant sur l'ensemble des
points du maillage d'entrée. Ensuite, si le maillage est compris dans la triangulation de Delaunay 3D, les demi-
17
facettes de la triangulation qui correspondent à des facettes du maillage sont marquées. Ce marquage servira ensuite
de repère à l'algorithme qui fera évoluer la pseudo-surface jusqu'à ce qu'elle vienne s'appuyer entièrement sur les
demi-facettes marquées correspondant au maillage à coder.
L'algorithme de convection peut alors être lancé depuis l'ensemble des demi-facettes de l'enveloppe
convexe. Pendant l'algorithme, la pseudo-surface évolue et possède à chaque instant un état courant. Au moment où
on tente de poursuivre la convection sur une demi-facette f, plusieurs cas peuvent se présenter.
1 La demi-facette couplée à f n'appartient pas à la pseudo-surface courante et :
1.1 la demi-sphère associée à f contient un échantillon. Dans ce cas, l'algorithme classique de convection
voudrait ouvrir cette facette pour découvrir ce nouveau point, mais pour notre cas particulier, nous avons
deux possibilités :
1.1.1 f n'est pas marquée comme faisant partie du maillage original. On laisse alors l'agorithme classer f
dans les facettes destinées à être ouvertes, c'est-à-dire celles sur lesquelles va se poursuivre la convection.
1.1.2 f est marquée comme faisant partie du maillage original et même si l'algorithme classique veut
l'ouvrir, il faut la « retenir » malgré le non respect du critère géométrique de Gabriel. Par le terme
« retenir », nous entendons que f figurera dans la pseudo-surface finale et que la convection sera
localement bloquée au niveau de cette facette. Un code devra donc être transmis par le codeur, qui sera lu
par le décodeur et lui permettra à son tour de retenir la facette locale malgré la géométrie. Ce cas de
figure sera référencé par la suite par le sigle RMG (signifiant que f est Retenue Malgré la Géométrie).
1.2 la demi-sphère associée à f ne contient pas d'échantillon. Dans ce cas, l'algorithme classique considère que
cette facette fera probablement partie du résultat final sauf s'il détecte la présence d'une poche derrière f ou si
la facette couplée à f engendre à un moment donné une auto-intersection.
1.2.1 f est marquée comme faisant partie du maillage original. La décision prise par la convection,
consistant à retenir la facette est alors cohérente.
1.2.2 f n'est pas marquée comme faisant partie du maillage original et même si l'algorithme classique veut la
retenir, il faut l'ouvrir malgré le respect du critère géométrique de Gabriel pour que la convection puisse
continuer dans cette direction. Ce cas de figure, qui sera utilisé en présence de poches, sera référencé par
la suite par le sigle OMG (signifiant que f est Ouverte Malgré la Géométrie).
2 La demi-facette f' couplée à f appartient à la pseudo-surface courante et :
2.1 f' est destinée à être ouverte. Dans ce cas, on laisse faire la convection classique qui provoque un
effondrement local des deux demi-facettes couplées avec changement possible de la topologie. La figure 16
montre une des 8 configurations 3D correspondant à ce cas. Dans cet exemple, les sommets des demifacettes coupleés sont associés aux mêmes points géométriques, ainsi, l'effondrement des deux demi-facettes
provoque la création d'un trou et d'un changement de la topologie de la surface.
2.2 f' a été retenue auparavant par l'algorithme. Il faut alors retenir également f, ce qui provoque la création
d'une partie mince. Comme nous l'avons signalé précédemment, dans l'algorithme de convection classique
les parties minces doivent à leur tour être traitées par une convection 2D qui retirera celles considérées
indésirables. Dans notre algorithme, il n'est pas nécessaire de conserver ce traitement puisqu'on remarque
que si f' a été retenue, c'est forcément parce qu'elle s'appuie sur une facette du maillage initial.
FIG 16 – Effondrement de deux demi-facettes couplées en 3D. Une des 8 configurations possibles où
l'algorithme classique provoque l'effondrement de deux demi-facettes couplées. Pour cette configuration, on
remarque la création d'un trou.
18
La figure suivante, illustre le même processus en 2D.
FIG 17 – Effondrement de deux demi-facettes couplées en 2D. L'évolution du processus de convection
permettant d'aboutir à cette configuration est illustré par des flèches. Les tirets associés à chaque demi-arête
correspondent toujours à leur orientation.
Le tableau suivant présente les proportions de facettes Retenues ou Ouvertes Malgré la géométrie
(appelées RMG et OMG). Dans tous les autres cas, la propriété géométrique utilisée par l'algorithme de convection
permet de réaliser le traitement adéquat. Ces derniers sont désignées par le sigle GD (signifiant que pour les
facettes, la Géométrie Domine) et se produisent dans 85% des cas en moyenne. Ainsi, pour seulement 15% des
facettes en moyenne, un code additionnel doit être transmis. On remarque que les modèles utilisés ne font pas
apparaître de bruit topologique (absence de facettes RMG).
Modèle /
Statistiques
Nefertiti
Cube
Bunny non
volumique
Bunny
volumique
Max
Planck
Moyenne
% de facettes RMG (cas 1.1.2)
0%
0%
0%
0%
0%
0%
% de facettes OMG (cas 1.2.2)
13,5%
17,8%
14,7%
14,1%
14,1%
14,84%
% de facettes GD (autres cas)
86,5%
82,2%
85,3%
85,9%
85,9%
85,16%
TAB. 1 – Statistiques sur les types de facettes traitées. Les deux premières lignes présentent les
pourcentages des facettes pour lesquelles un traitement particulier doit être appliqué (le traitement correspondant
est expliqué à la page 18). La dernière ligne recense toutes les autres facettes pour lesquelles l'algorithme de
convection permet de choisir le traitement approprié. Un aperçu des modèles utilisés est disponible en annexe 1.
Le processus de codage des demi-facettes, décrit précédemment, se poursuit tant qu'il reste des demifacettes de la pseudo-surface courante destinées à être ouvertes, c'est-à-dire ne s'appuyant pas sur une facette du
maillage. Durant le processus, chaque demi-facette g destinée à être ouverte cède sa place à 3 autres demi-facettes
qui la remplaceront dans la pseudo-surface courante. Les 3 demi-facettes en question sont celles qui s'appuient sur
g. Elles seront par la suite appelées facettes « cachées », puisqu'elles sont en quelque sorte cachées par g avant son
ouverture. Le schéma ci-dessous présente ce processus en 2D.
19
FIG 17 – Processus d'évolution d'une pseudo-surface. Les arêtes du maillages 2D sont représentées en
pointillés bleus et la pseudo-surface courante par la ligne noire continue. Les traits épais rouge montrent
l'évolution de la pseudo-surface là où des arêtes sont destinées à être ouvertes.
Bien sûr, les maillages idéaux sont ceux que l'algorithme de convection géométrique (sans extension)
reconstruit fidèlement, il n'est alors nécessaire de transmettre que l'information géométrique, l'algorithme se
chargeant de « construire » l'information topologique. Mais pour la plupart des maillages (contenant des poches
et/ou mal échantillonnés), quelques codes additionnels doivent être transmis.
Pour guider l'algorithme vers le maillage original, lorsque les critères géométriques ne sont pas suffisants,
les facettes ayant besoin d'un traitement particulier (OMG, RMG) peuvent être identifiées par un numéro
corrrespondant à l'ordre dans lequel elles sont rencontrées, accompagné du type de traitement à effectuer. Ainsi le
décodeur est en mesure de les identifier et de les traiter correctement. Une solution plus efficace consiste à
maintenir deux compteurs définis de la façon suivante :
•
•
Un compteur des facettes que l'algorithme de convection voudrait retenir (car elles respectent la propriété
géométrique). On ne transmet alors au décodeur que les numéros (ou indices) des facettes Ouvertes Malgré la
Géométrie (OMG).
Un compteur des facettes que l'algorithme de convection voudrait ouvrir (car elles ne respectent pas la propriété
géométrique). On ne transmet alors au décodeur que les numéros des facettes Retenues Malgré la Géométrie
(RMG).
Cette méthode permet d'obtenir des nombres moins importants et ne nécessite pas de coder le type de
traitement à effectuer, puisqu'on dispose d'un compteur par traitement.
4.2.1.2 Codage des informations
On se concentre ici sur le codage des informations additionnelles, puisque l'information géométrique
(coordonnées absolues de tous les points) peut être codée par un algorithme du type de celui de Gandoin et
Devillers [15]. En effet, il n'est pas nécessaire de conserver l'information d'ordre sur les points puisque la
triangulation de Delaunay est unique quel que soit l'ordre d'insertion des points.
On remarque que les indices des facettes pour lesquelles un traitement particulier doit être considéré sont
transmis de façon croissante. Il est alors plus économique de transmettre l'écart entre chaque indice et l'indice qui le
précède (en considérant que celui qui précède le premier indice est 0).
De plus, une proportion non négligeable d'indices sont consécutifs (cf. tableau 2). Pour les plages d'indices
consécutifs de taille supérieure à 2, plutôt que de coder plusieurs écarts valant 1, il est généralement plus
économique de coder l'écart entre le premier et le dernier indice de la plage (l'étude dans le cas le pire le confirme
pour la majorité des modèles testés). Ces deux possibilités sont illustrées par les schémas 18 et 19.
20
Modèle /
Statistiques
Nefertiti
Cube
Bunny non
volumique
Bunny
volumique
Max Planck
Moyenne
Nombre de plages
112
8 076
14 732
11 642
7 723
8 457
Nombre de plages de 2
indices consécutifs
40
2 977
6 781
6 522
3 931
4 050,2
69,0%
68,4%
67,8%
38,4%
70,3%
62,78%
Pourcentage
consécutifs
d'indices
TAB. 2 – Statistiques sur les plages d'indices consécutifs obtenues par l'approche n°1, pour différents
modèles. Un aperçu des modèles utilisés est disponible en annexe 1.
FIG 18 – Codage d'une séquence d'indices en utilisant l'écarts avec l'indice précédent. Le premier
indice est codé par rapport à 0.
FIG 19 – Codage d'une séquence d'indices par deux chaînes différentes. Les deux séquences doivent être
codées indépendamment. On remarque alors, pour la majorité des modèles que ce codage est plus économique que
celui illustré par la figure 18.
Pour s'y retrouver, il faut alors différencier les écarts entre les indices simples et les écarts entre les plages
d'indices. Ces écarts peuvent ensuite être codés par codage d'Huffman ou arithmétique, car cette fois-ci l'ordre dans
lequel ils sont transmis est important.
4.2.2 Variante : codage graduel de la géométrie
Cette variante propose une vision différente de la première. En effet, plutôt que de transmettre tous les
points de façon absolue, il est possible de ne transmettre d'abord que les points appartenant à l'enveloppe convexe et
de découvrir les autres points au fur et à mesure du processus de convection. Cela permet de les coder par
prédiction de position, à partir de l'état courant de la convection.
Le codeur construit alors, comme dans l'approche précédente, la triangulation de l'ensemble des points. De
son côté, le décodeur construit d'abord la triangulation s'appuyant uniquement sur les points de l'enveloppe
convexe. La triangulation va ensuite évoluer dynamiquement au fur et à mesure que le décodeur découvre de
nouveaux points. L'algorithme de convection classique est toujours utilisé et nous allons voir par la suite que les
codes additionnels à transmettre au décodeur seront différents.
4.2.2.1 Principes du codeur et du décodeur
Il est capital de ne pas oublier que le décodeur ne dispose, au départ, que des points de l'enveloppe
convexe. Il est ainsi nécessaire que le codeur considère de façon différente les points « connus » du décodeur à
l'instant t, des autres points (non encore découverts), c'est pourquoi ces deux types de points sont marqués
différemment. Ceci permet alors de transmettre au décodeur un code additionnel adapté à la situation. En effet, cette
technique nécessite d'enrichir l'éventail des codes possibles pour prendre en compte un plus grand nombre de cas,
21
mais elle permet en contrepartie d'obtenir un gain non négligeable sur le codage de la géométrie (par prédiction
différentielle).
Nous avons considéré deux façons différentes de guider l'algorithme de convection, pour les cas où la
géométrie ne permet pas de déterminer la bonne action à réaliser.
1 Codage des facettes : utilisation d'un code identifiant l'action à réaliser pour chaque facette f traitée. Les
différents cas possibles sont :
1.1 la géométrie des points déjà transmis permet de réaliser une action cohérente compte tenu du maillage
initial. L'algorithme de convection classique permet alors de faire avancer le processus correctement, ainsi, il
n'est pas nécessaire de transmettre d'information additionnelle. Ce traitement est réalisé dans les cas
numérotés 1.1.1, 1.2.1, 2.1 et 2.2 dans l'approche n°1 (page 18).
Pour les autres cas, on considère donc que la demi-facette couplée à f n'appartient pas à la pseudo-surface
courante, puisque les cas où la demi-facette couplée à f appartient à la pseudo-surface courante sont traités par le
cas précédent. D'autres différences apparaissent malgré tout, car soit :
1.2 la demi-sphère associée à f contient un échantillon e dans la triangulation construite par le codeur et :
1.2.1 dans celle construite par le décodeur. De plus, f est marquée comme faisant partie du maillage
original. Ainsi, même si l'algorithme classique veut ouvrir f, il faut la « retenir » malgré le non respect du
critère géométrique de Gabriel. Ceci est équivalent au cas RMG de l'approche n°1.
1.2.2 la demi-sphère associée à f ne contient pas d'échantillon dans la triangulation construite par le
décodeur. Ce cas de figure se produit lorsque e n'a pas encore été découvert par le décodeur. Ainsi
l'algorithme de convection classique lancé sur le codeur voudrait ouvrir cette facette, mais le même
algorithme lancé sur le décodeur voudrait la retenir, ce qui est incohérent. Il faut donc que le codeur
transmette un code spécial pour que le décodeur identifie ce cas, référencé par le sigle OPD (signifiant
que f est Ouverte vers un Point non Découvert). Le point e est également transmis au décodeur en
utilisant une technique de prédiction de position (expliquée en détail à la partie 4.2.2.2).
1.3 la demi-sphère associée à f ne contient pas d'échantillon dans les triangulations construites par le codeur et
le décodeur et f n'est pas marquée comme faisant partie du maillage original. Ainsi, même si l'algorithme
classique veut la retenir, il faut l'ouvrir malgré le respect du critère géométrique de Gabriel. Ce cas de figure
correspond au cas OMG de l'approche n°1. Pour cette nouvelle approche, il y a deux cas possibles à
identifier :
1.3.1 le codeur impose d'ouvrir f vers un point que le décodeur aura découvert lorsqu'il en sera à la même
étape, ce point sera alors connu du décodeur.
1.3.2 le codeur impose d'ouvrir f vers un point que le décodeur n'aura pas encore découvert lorsqu'il en sera
à la même étape. Ce point est alors également transmis par prédiction de position.
Le tableau suivant présente les proportions de ces différents types de codes associés aux facettes traitées.
Celles pour lesquelles la géométrie permet de réaliser la bonne action (cas 1.1 ci-dessus) sont désignées par le sigle
GD (signifiant que pour ces facettes, la Géométrie Domine).
Modèle
/
Statistiques
Nefertiti
Cube
Bunny non
volumique
Bunny
volumique
Max Planck
Moyenne
82,8%
78,1%
80,8%
77,4%
82,0%
80,21%
% de facettes RMG
0%
0%
0%
0%
0%
0%
% de facettes OPD
3,70%
4,06 %
4,51%
8,51%
3,85%
4,94%
% de facettes OMG vers 1
point connu (cas 1.3.1)
13,2%
16,7%
14,2%
13,3%
13,8%
14,22%
% de facettes OMG vers 1
nouveau point (cas 1.3.2)
0,30%
1,14%
0,49%
0,79%
0,35%
0,63%
% de facettes GD (cas 1.1)
TAB. 3 – Proportion des différents codes associés aux facettes traitées. Un aperçu des modèles utilisés
est disponible en annexe 1.
22
On remarque que la propriété géométrique permet, pour cette variante, de réaliser une action cohérente
dans 80% des cas en moyenne, ce qui est légèrement inférieur aux résultats obtenus pour l'approche n°1. Ceci
permet tout de même qu'une majorité de la topologie soit reconstruite automatiquement. En contrepartie, l'approche
n°1 n'utilise pas de prédiction pour le codage de la position des points.
2 Codage d'indices : les indices des facettes devant subir un traitement particulier (OMG, RMG et OPD) sont
transmis de la même façon que dans l'approche n°1, mais en considérant les cas énoncés à la page précédente.
La même solution, consistant à maintenir les deux compteurs suivants est adoptée :
2.1 Un compteur des facettes que l'algorithme de convection voudrait ouvrir (car elles ne respectent pas la
propriété géométrique). On transmet alors au décodeur :
2.1.1 les numéros (ou indices) des facettes Retenues Malgré la Géométrie (RMG).
2.1.2 les numéros des facettes Ouvertes vers un Point non Découvert (OPD). Pour que le codeur puisse les
identifier, il est nécessaire qu'il construise deux triangulations différentes : une s'appuyant sur tous les
points et l'autre évoluant en fonction du nombre de points découverts par le décodeur (initialisée avec
l'enveloppe convexe). Les deux pseudo-surfaces s'appuyant sur ces triangulations évoluent en même
temps (les mêmes facettes sont traitées au même moment). Ce traitement implique un temps d'exécution
plus important.
2.2 Un compteur des facettes que l'algorithme de convection voudrait retenir (car elles respectent la propriété
géométrique). On ne transmet alors au décodeur que les numéros des facettes Ouvertes Malgré la Géométrie
(OMG). Un code additionnel permet alors au décodeur de savoir si ces facettes s'ouvrent vers un point qu'il a
déjà découvert ou non.
Pour cette méthode utilisant un codage d'indices, nous avons remarqué, comme pour l'approche n°1 qu'il
est plus économique de coder les écarts entre les indices. De plus, un plus grand nombre d'indices sont consécutifs,
comparé à l'approche n°1 (cf. tableau 4). L'utilisation du même type de codage est donc justifiée.
Modèle /
Statistiques
Nefertiti
Cube
Bunny non
volumique
Bunny
volumique
Max Planck
Moyenne
Nombre de plages
143
10 245
18 251
14 978
9 833
10 690
Nombre de plages de 2
indices consécutifs
69
4 934
10 779
10 371
6 107
6 452
Pourcentage d'indices
consécutifs
74,3%
76,1%
75,9%
41,3%
77,7%
69,6%
TAB. 4 – Statistiques sur les plages d'indices consécutifs obtenues par la variante, pour différents
modèles. Un aperçu des modèles utilisés est disponible en annexe 1.
4.2.2.2 Principes de la prédiction utilisée
Il est difficile d'exploiter les techniques de prédictions utilisées habituellement par les algorithmes de
compression de maillages surfaciques (prédiction linéaire directe, parallélogramme ou non linéaire), puisque notre
algorithme se base sur une triangulation tridimensionnelle. Les méthodes de compression de maillages tétraèdriques
sont rares et ne procèdent pas toujours à une compression de la géométrie [34, 35]. Un des algorithmes réalisant une
telle compression est celui de Gumhold et al. [16]. Il procède par conquête sur les tétraèdres en faisant croître une
région constituée de tétraèdres déjà codés. La frontière de cette région est une surface triangulée dont les faces sont
stockées dans une file d'attente. A chaque étape, une face est retirée de la file et devient le « portail » à partir duquel
un nouveau tétraèdre est découvert. Cet algorithme utilise un codage différentiel pour la compression de la
géométrie (vecteur différence entre le centre du triangle portail et le nouveau sommet). La prédiction différentielle
nous paraît donc la méthode la plus adéquate.
Nous avons remarqué que lorsqu'une facette f s'ouvre géométriquement vers un point, ce dernier se trouve
généralement proche d'un des sommets de la facette. Il est possible d'exploiter cette observation afin de transmettre
le moins d'information possible. En effet, au lieu de transmettre au décodeur les coordonnées absolues des points
découverts durant le processus de convection, il est possible de coder le vecteur différence entre le point p vers
lequel doit s'ouvrir la facette et le point de la facette le plus proche de p. Vu leur proximité, on peut espérer que les
coordonnées de ce vecteur soient beaucoup plus petites et regroupées que les coordonnées absolues.
23
Le codage des coordonnées de ce vecteur est généralement insuffisant pour que le décodeur puisse
retrouver le point p. En effet, il est également nécessaire de lui transmettre un code additionnel afin qu'il sache à
quel sommet de la facette ce vecteur se rattache. Comme il y a trois sommets candidats, un codage naïf impose
d'utiliser log2(3) bits pour coder cette information. Or, dans certains cas, lorsque le point à coder est situé dans la
demi-sphère associée à la facette f, il est possible de retrouver ce sommet d'attache sans même l'aide d'un code. Le
schéma (a) de la figure 20, nous montre qu'aucun code additionnel n'est nécessaire en 2D. En effet, pour tout point
C inclus dans le demi-disque circonscrit à une arête AB, le vecteur différence AC reporté à partir du point B n'est
jamais situé dans le demi-disque. Ceci permet alors de déterminer implicitement à quel point rattacher le vecteur
différence.
La généralisation en 3D ne fonctionne pas toujours, même si le schéma (b) illustre un cas favorable où
aucun code additionnel n'est nécessaire. Les cas défavorables correspondent à des triangles moins réguliers où les
points sont plus proches les uns des autres. Il y a plusieurs cas où il est possible de rattacher le vecteur à deux des
trois sommets, dans ce cas, illustré par le schéma (c), on utilise 1 bit additionnel. Les cas totalement défavorables,
illustrés par le schéma (d), sont codés sur log2(3) bits.
FIG 20 – Différentes configurations rencontrées lors de la prédiction différentielle. (a) en 2D, une seule
configuration est possible si le point à coder est inclus dans le demi-disque associé à AB. (b, c, d) En 3D, le report
du vecteur différence AD à partir des sommets B et C peut être inclus ou non dans la demi-sphère associée au
triangle ABC, impliquant différentes configurations possibles.
Ces considérations ne sont utilisées que pour des ouvertures géométriques. En effet, pour une facette f
Ouverte Malgré la Géométrie (OMG), le point vers lequel f s'ouvre n'est alors pas inclus dans la demi-sphère
associée à f. Le pourcentage des facettes OMG n'étant néanmoins que de 0,63% en moyenne, il n'est pas très
pénalisant d'utiliser un code additionnel sur log2(3) bits. Le tableau suivant présente les proportions de prédictions
où on utilise un code additionnel sur log2(3), 1 ou 0 bits. Ces statistiques s'appliquent sur l'ensemble des points
prédits et révèlent que cette considération est intéressante, car environ 58% des codes additionnels sont stockés au
plus sur 1 bit.
Modèle /
Statistiques
Nefertiti
Cube
Bunny non
volumique
Bunny
volumique
Max Planck
Moyenne
% de codes sur log2(3) bits
33,5
56,5
41,7
40,4
35,6
41,54
% de codes sur 1 bit
39,4
29,1
37,5
38,4
41,4
37,16
% de codes sur 0 bit
27,1
14,4
20,8
21,2
23,0
21,3
TAB. 5 – Statistiques sur la taille des codes additionnels utilisés lors de la prédiction de position. La
première colonne inclut les points prédits par des facettes Ouvertes Malgré la Géométrie (OMG).
24
5 Implémentation
Notre algorithme a été écrit en C++ et se base sur la librairie CGAL (Computational Geometry Algorithms
Library).
5.1 Présentation de la librairie CGAL
CGAL est une librairie spécialisée dans les algorithmes de calcul géométrique (projet OpenSource) [44].
Elle propose une implémentation des objets et des algorithmes utilisés couramment en géométrie algorithmique.
C'est un outil robuste, flexible (utilisation de techniques de programmation génériques) et efficace (programmation
orientée objet : C++).
Cette librairie se décompose en 3 grandes catégories :
• Le noyau contenant les primitives géométriques : points, vecteurs, segments, cercles, prédicats (tests
d'orientation, de position, ...), opérations (calculs d'intersection, de distance, ...). Il fournit plusieurs types
d'arithmétiques pour la représentation des objets géométriques (points, vecteurs, ...)
• La librairie de base fournissant un ensemble de structures de données et d'algorithmes standard (calcul
d'enveloppe convexe en 2D ou 3D, triangulation de Delaunay, diagramme de Voronoï, construction de
polyèdres, de kd-trees, ...)
• Un outil de support non géométrique offrant des interfaces vers d'autres packages comme par exemple :
• les systèmes de visualisation d'objets : GeomView, OpenGL, ...
• les types de nombres exacts : LEDA, GMP (arithmétique exacte sur les nombres réels), ...
CGAL utilise le paradigme de la bibliothèque STL (Standard Template Library) incluse dans le langage
C++, pour le développement des algorithmes géométriques. La STL défini les concepts de conteneurs, d'itérateurs,
d'objets fonction et propose un ensemble d'algorithmes s'appliquant sur ces concepts. CGAL fournit également des
extensions de la STL appliquées aux structures de données géométriques.
Les algorithmes de la STL utilisant des primitives algorithmiques se servent de ces primitives en tant
qu'objet fonction (ou foncteur), plutôt que de transmettre un pointeur sur une fonction, car l'opération s'en trouve
accélérée. Par exemple, les algorithmes de tri utilisent les opérateurs de comparaison en tant qu'objets fonction. Les
algorithmes de CGAL exploitent également cet aspect générique.
5.1.1 Représentation des objets géométriques dans CGAL
Le concept de noyau dans CGAL représente un espace euclidien à d dimensions (d=2 ou 3) utilisant des
coordonnées cartésiennes (un point est représenté par un d-tuple) ou homogènes (un point est représenté par un
(d+1)-tuple). De plus, les coordonnées peuvent être représentées par différents types de données (double, int, ...).
On peut ainsi définir plusieurs types de noyaux qui regroupent l'ensemble des primitives géométriques associées à
l'espace et au type de données considérés.
Une des structures de données géométrique les plus utilisées en géométrie algorithmique est la
triangulation d'un ensemble de points en 2 ou 3 dimensions. Elle repose sur les concepts de sommet et de cellule
(ou facette en 2D) et se décompose en 3 couches de classes :
• les classes de base, qui définissent les sommets et cellules sur lesquels la triangulation est basée ainsi que les
relations d'incidence et d'adjacence qui les lient.
• la classe « structure de données de la triangulation » s'appuyant sur les classes de base. Elle fournit l'aspect
combinatoire de la triangulation tout en maintenant les relations d'incidence et d'adjacence lors d'une opération
d'insertion de sommets par exemple.
• la classe « triangulation » qui implémente les aspects géométriques de la triangulation. Cette classe s'appuie sur
une classe « geometric traits » déterminant les types d'objets géométriques utilisés par la triangulation ainsi que
les prédicats et opérations de base sur ces objets.
Les classes génériques « geometric traits » servent en fait d'interface entre les algorithmes et les noyaux
géométrique proposés par CGAL. Elles permettent la personnalisation du comportement d'un algorithme A pour un
noyau donné, sans avoir à changer l'implémentation de A.
25
Pour notre algorithme, nous utilisons la triangulation 3D d'un ensemble de points P, correspondant à une
partition de l'enveloppe convexe de P en tétraèdres (cellules) dont les sommets sont les points de P. Il est intéressant
de n'avoir à traiter que des tétraèdres, afin de bénéficier d'une représentation homogène. Pour cela l'ajout d'un point
infini est nécessaire. Ce point est en quelque sorte fictif et ne sert qu'à relier les facettes de l'enveloppe convexe
pour former des cellules infinies. Chaque facette est alors incidente à exactement deux cellules.
Dans cette configuration, chaque sommet pointe vers une de ces cellules incidentes et une cellule peut
accéder à ses 4 sommets et ces 4 cellules incidentes. De cette façon, il est possible de parcourir l'ensemble de la
triangulation de façon déterministe grace à un système de numérotation des sommets, facettes, et cellules. En effet,
les 4 sommets d'une cellule c sont numérotés de 0 à 3 dans le sens indiqué par la figure ci-dessous.
FIG. 21 – Numérotation des sommets d'une cellule. Chaque cellule d'une triangulation 3D d'un ensemble
de points utilise cette numérotation lui permettant de faire référence à ses sommets.
De même, la cellule voisine de c d'indice i est opposée au sommet d'indice i de c. Enfin, une facette f de c
est représentée par la cellule c et un indice i (correspondant à l'indice du sommet opposé à la facette), comme
indiqué dans le schéma ci-dessous :
FIG. 22 – Numérotation d'une facette de c et d'une de ses cellules voisines. La facette grise et la cellule
en pointillé étant situées en face du sommet 0 de c, elles seront référencées 0 par c.
5.2 Nos choix d'implémentation
5.2.1 Noyau et structures de données utilisés
Généralement la position des sommets est codée par des nombres flottants sur 32 bits, mais la majorité des
méthodes de compression géométrique ne manipule pas les coordonnées sous cette forme. Ces méthodes lui
préfèrent généralement une représentation quantifiée. Cela consiste à représenter chaque valeur par un multiple
entier d’une quantité q, appelée pas de quantification. Les coordonnées se retrouvent ainsi codées sur une grille
régulière, ce qui est beaucoup plus pratique à gérer que les nombres à virgule flottante car on peut alors bénéficier
d'une arithmétique exacte. La quantification se fait généralement sur 24, 16, 12 ou 8 bits, ce qui entraîne une perte
non négligeable, mais qui est généralement compensée par les erreurs numériques limitant la précision du modèle.
Ces considérations sont également utilisées pour les attributs.
A la différence de nombreuses méthodes, nous n'imposons pas de quantification préalable avec perte de
précision sur les coordonnées des points. Notre algorithme considère ainsi les données telles qu'elles sont présentes
dans les fichiers d'entrée. Pour certains modèles dont les sommets sont codés par des nombres flottants sur 32 bits,
lors de la prédiction de position, il arrive que le codage du vecteur différence avec ce même type de données
engendre une perte de précision sur les données qui ne peuvent alors pas être reconstruites de façon exacte par le
26
décodeur. Pour éviter ceci, CGAL propose plusieurs noyaux utilisant un type de données exact, permettant de
réaliser l'ensemble des opérations géométriques de façon efficace en considérant une arithmétique exacte.
La classe « structure de données de la triangulation » que nous avons utilisée, se base sur une redéfinition
des classes « sommet » et « cellule » que nous avons personnalisées. Notre classe « triangulation » se base
également sur une structure hiérarchique, engendrant une construction de la triangulation plus rapide et permettant
de retrouver rapidement la position d'un point. Cette technique possède un comportement optimal si elle est
construite sur une triangulation de Delaunay et s'avère efficace pour les grands volumes de données
5.2.2 Ordre de traitement des facettes de la triangulation
Dans les deux versions de notre algorithme, les informations topologiques sont transmises au décodeur
dans l'ordre où le codeur traite les facettes composant la pseudo-surface courante. Pour que le décodeur puisse
interpréter correctement ces informations, il faut s'assurer qu'il traite bien les facettes dans le même ordre que le
codeur, ce qui n'est pas garanti par CGAL, notamment si lors de la construction de la triangulation, les points ne
sont pas insérés dans le même ordre. Pour s'assurer que les facettes seront traitées dans le même ordre par le codeur
et le décodeur, nous avons choisi d'instaurer un ordre de traitement des facettes de l'enveloppe convexe (sur
lesquelles débute le processus de convection) ainsi que des facettes « cachées » traitées tout au long du processus de
convection.
Pour les facettes de l'enveloppe convexe, la première traitée est celle possédant les plus petits sommets en
considérant l'ordre lexicographique. A partir de cette facette, faisant partie d'une cellule infinie, on va découvrir
petit à petit les facettes associées aux cellules infinies voisines, jusqu'à ce qu'on ait parcouru toutes les facettes de
l'enveloppe convexe. Une cellule ayant 3 voisines, on commence toujours par celle située en face du plus petit
sommet de la facette courante (pour l'ordre lexicographique), puis on poursuit dans le sens trigonométrique.
Sur le schéma ci-dessous, on considère que le plus petit sommet de la facette courante uvw est u, ainsi la
première cellule voisine traitée sera celle définie par les sommets v, w, x et y. Le traitement des facettes cachées se
base sur le même principe. On commence par chercher le plus petit sommet de la facette qui doit s'ouvrir (facette
uvw dans le schéma ci-dessous) et on traite en premier la facette située en face du plus petit sommet (facette vwy si
on considère que u est le plus petit sommet de uvw). Le traitement des deux autres facettes se poursuit ensuite dans
le sens trigonométrique.
FIG 23 – Principe de l'ordre de traitement des cellules. Si l'on considère que uvwy est la cellule courante
et que u est son plus petit sommet dans l'ordre lexicographique, la prochaine cellule traitée sera celle située en face
de u, correspondant à vwxy.
27
6 Résultats
Nous présentons premièrement les temps d'exécution des différentes versions de notre algorithme. Tous les
résultats présentés dans le tableau ci-dessous ont été obtenus sur une plate-forme Linux (Intel Pentium 4 – 2,8 Ghz,
512 Mo de RAM). Comme nous l'avons déjà précisé, le codeur utilisé par la deuxième approche de la variante de
notre méthode, construit deux triangulations. La première se base sur l'ensemble des points et l'évolution de la
seconde traduit la découverte graduelle des points par le décodeur. L'insertion de points dans une triangulation étant
une opération relativement coûteuse, cette approche est donc moins rapide que les deux autres (dont le temps
moyen d'exécution est donné dans le tableau ci-dessous). Les codeurs utilisés par les deux autres approches ne
construisent qu'une seule triangulation basée sur l'ensemble des points
Modèle /
Temps d'exécution (en secondes)
Nefertiti
Cube
Bunny non
volumique
Bunny
volumique
Max Planck
299
50 000
35 947
35 947
23 608
Codeur construisant deux triangulations
0,15s
57,53s
26,83s
25,21s
19,98s
Codeurs
ne
contruisant
triangulation (moyenne)
0,1s
23,01s
15,7s
13,18s
12,71s
0,07s
20,04s
11,21s
10,35s
9,26s
Nombre de sommets
qu'une
Décodeurs (moyenne)
TAB. 6 – Temps d'exécution des différentes versions de notre méthode. Un aperçu des modèles utilisés
est disponible en annexe 1.
D'une manière générale, la comparaison des performances des différents travaux existants est rendue très
difficile par la grande disparité des modèles géométriques utilisés lors des tests quantitatifs. De plus, n'ayant pas
disposé de suffisamment de temps pour développer un codeur entropique adapté aux données transmises par le
codeur, nous présentons d'une part les résultats de notre algorithme dans le pire des cas (cf. tableau 7) et d'autre part
les résultats des méthodes de compression les plus compétitives (cf. tableau 8). Même s'il est difficile de comparer
ces deux types de résultats, puisque les résultats présentés dans le tableau 8 utilisent un codage entropique, ceci
permet d'effectuer un premier bilan sur les résultats prometteurs de notre algorithme, qui pourraît encore subir des
améliorations. Nous avons tenu à ne présenter dans le tableau suivant que le nombre de bits par sommet pour le
codage de la topologie, le codage de la géométrie dans le pire des cas n'étant pas révélateur pour être comparé avec
les méthodes présentées dans le tableau 8, utilisant un codage entropique.
Modèle /
Codage de la topologie
(en bits par sommet)
Nefertiti
Cube
Bunny non
volumique
Bunny
volumique
Max Planck
299
50 000
35 947
35 947
23 608
Nombre de faces
1 098
99 980
133 420
71 890
93 332
Approche n°1
3,47
6,58
6,64
10,8
6,47
6,79
Approche n°2.1
13,3
8,24
15,1
16,3
15,6
13,73
Approche n°2.2
6,62
9,09
11,4
14,2
8,5
9,96
Nombre de sommets
Moyenne
TAB. 7 – Résultats des différentes versions de notre méthode dans le pire des cas. Pour chaque modèle
et pour chaque approche testée, le nombre de bits par sommet pour le codage de la topologie est indiqué. Le
nombre de bits par sommets pour le codage de la géométrie n'a pas été indiqué car, ne disposant que de résultats
dans le pire des cas, ce nombre n'est pas révélateur en comparaison de celui obtenus par les méthodes existantes
utilisant un codage entropique.
Le tableau suivant présente premièrement les résultats de deux méthodes de compression mono-résolution,
celles de Touma et Gotsman [39] et celle de Rossignac (Edgeabreaker) [26]. Les résultats des méthodes de
compression progressives réalisées par Pajarola et Rossignac [27], Cohen-Or Levin et Remez [10] et Gandoin et
Devillers [15] sont ensuite présentés.
28
Méthodes /
Résultats (en bits par
sommets)
T&G
1998
Edgebreaker
1999
P&R
CLR
G&D
Codage de la topologie
2
moins de 3,67
7.1
5.8
3.6
Codage de la géométrie
16.5
?
16.9
17
15.7
Total des deux
18.5
?
24
22.8
19.3
TAB. 8 – Résultats obtenus par les méthodes de compression de maillages les plus compétitives. Ces
résultats sont présentés en bits par sommet et son extraits de [14].
Les résultats pour le codage de la topologie, obtenus par notre approche n°1 se révèlent meilleurs dans le
pire des cas que ceux obtenus par notre deuxième approche. Ceci était prévisible vu qu'il est nécessaire de coder un
plus grand nombre d'informations dans l'approche n°2. Dans la première approche, l'ordre sur l'information
géométrique n'étant pas important, une méthode du type de celle de Gandoin et Devillers permettrait d'obtenir en
moyenne un taux de 15,7 bits par sommet après application d'un codage entropique. On remarque dans le tableau 8
que ce taux est compétitif en comparaison des autres méthodes présentées. On peut ainsi s'attendre à ce que cette
approche n°1 fournissent des taux intéressants après application d'un codage entropique.
La variante de notre approche n°1 n'est tout de même pas à négliger, puisque nous n'avons présenté ici que
les résultats pour le codage de la topologie, mais l'utilisation de la prédiction de position pour le codage d'une partie
de l'information géométrique, permettrait certainement d'obtenir des résultats proches de ceux présentés pour la
première approche.
29
7 Conclusion et perspectives
Nous avons présenté une méthode de compression sans perte de maillages surfaciques triangulaires basée
sur un algorithme de reconstruction de la surface d'objets 3D. Deux versions différentes de cette méthode ont été
développées, la première construisant un codeur topologique basé sur la totalité de l'information géométrique. La
seconde exploite en plus de ceci une technique de prédiction différentielle pour le codage de la position d'une partie
des points. Le codage de ces points est alors dépendant du codage de l'information topologique.
L'exploitation de l'algorithme de reconstruction s'avère très intéressante puisque celui-ci permet de rendre
implicite une grande partie de l'information topologique. De plus, pour notre première approche, il permet de coder
la totalité de l'information géométrique sans se soucier de l'ordre de transmission des points. Ce codage peut alors
être délégué entièrement à un algorithme du type de celui de Gandoin et Devillers se plaçant avantageusement par
rapport aux meilleurs algorithmes existants. Dans la seconde version, seuls les échantillons situés sur l'enveloppe
convexe du nuage de points peuvent bénéficier de ce traitement particulier, l'information d'ordre sur les autres
points étant capitale.
Les résultats présentés dans le pire des cas s'avèrent prometteurs, mais une amélioration pourrait être
envisagée afin de transmettre moins de codes. En effet, notre algorithme force les demi-facettes traitées à s'ouvrir à
chaque fois que l'algorithme classique de convection veut les retenir mais qu'elles ne s'appuient pas sur une facette
du maillage initial. Au lieu de cela, il est possible de les stocker dans une file d'attente et d'attendre qu'elles soient
éventuellement traitées plus tard de façon cohérente par l'algorithme. Cette considération permettrait de réduire
encore le codage de la topologie, permettant certainement de se positionner avantageusement par rapport aux
méthodes existantes.
Nous n'avons traité pour l'instant que les maillages dont les facettes sont comprises dans la triangulation de
Delaunay 3D. Une extension est envisageable permettant de traiter de façon générale tous les maillages surfaciques
triangulaires. Il est possible pour cela de réaliser un traitement permettant d'ajouter quelques points à certains
modèles originaux, si leur échantillonnage n'est pas suffisamment dense. Une autre manière possible serait d'étendre
le principe de la triangulation de Delaunay contrainte aux surfaces triangulées en 3 dimensions. Il est également
possible de procéder à un ensemble de basculements d'arêtes pour certains modèles dont les facettes ne sont pas
comprises dans la triangulation de Delaunay 3D.
30
Bibliographie
[1] P. Alliez, and M. Desbrun. Progressive compression for lossless transmission of triangle meshes. In SIGGRAPH
2001 Conference Proc., pp. 199–202, 2001.
[2] N. Amenta and M. Bern. Surface reconstruction by Voronoi filtering. Discrete and Computational Geometry 22,
pp. 481–504, 1999.
[3] N. Amenta, S. Choi, and R. Kolluri. The power crust. In Proceedings of the ACM Symposium on Solid Modeling
and Applications, pp. 249–260, Ann Arbor, Michigan, June 2001.
[4] A. Baskurt. Cours « Compression des images / Normes multimédia ». Master M2 Recherche Informatique –
Lyon, année scolaire 2004-2005.
[5] J.-D. Boissonnat. Geometric structures for three-dimensional shape representation. ACM Trans.Graph., 3(4):
266-286, 1984.
[6] J.-D. Boissonnat and F. Cazals. Smooth Surface Reconstruction via Natural Neighbour Interpolation of Distance
Functions. In Proc. 16th Annu. ACM Sympos. Comput Geom., pp. 223-232, 2000.
[7] F. Cazals and J. Giesen. Delaunay Triangulation based Surface Reconstruction: Ideas and Algorithms.
Technical Report 5393, INRIA, November 2004.
[8] D. Coeurjolly, R. Chaine. Cours de « Géométrie Discrète / Géométrie Algorithmique ». Master M2 Recherche
Informatique – Lyon, année scolaire 2004-2005.
[9] R. Chaine. A geometric convection approach of 3-D reconstruction. In Proc. of Eurographics and ACM
SIGGRAPH Symp. on Geometry Processing, 2003.
[10] D. Cohen-Or, D. Levin and O. Remez. Progressive compression of arbitrary triangular meshes. In IEEE
Visualization 99 Conference Proc., pp. 67–72, 1999.
[11] B. Curless and M. Levoy. A volumetric method for building complex models from range images. Proc.
SIGGRAPH ’96, pp. 303–312, 1996.
[12] M. Deering. Geometry compression. In SIGGRAPH 95 Conference Proc., pp. 13–20, 1995.
[13] H. Edelsbrunner and E. P. Mücke. Three-dimensional alpha shapes. In ACM Trans. Graphics 13, pp. 43–72,
1994.
[14] P.-M. Gandoin. Compression progressive et sans perte de structures géométriques. Thèse de doctorat,
Université de Nice-Sophia Antipolis, 2001.
[15] P.-M. Gandoin et O. Devillers. Progressive lossless compression of arbitrary simplicial complexes. In ACM
Transactions on Graphics, Vol. 21 No. 3, pp. 372–379, 2002.
[16] S. Gumhold, S. Guthe, and W. Straßer. Tetrahedral mesh compression with the cut-border machine. In
Proceedings of the Visualization '99 Conference, pp. 51-58, San Francisco, CA, October 1999.
[17] I. Guskov, K. Vidimce, W. Sweldens, and P. Schröder, Normal meshes. In Siggraph 2000, Computer Graphics
Proceedings, pp. 95–102, 2000.
[18] H. Hoppe. Progressive Meshes. In Proceedings ACM SIGGRAPH'96, pp. 99-108, August 1996.
[19] H. Hoppe, T. DeRose, T. Duchamp, J. McDonald, and W. Stuetzle. Surface Reconstruction from Unorganized
Points. In Proc. SIGGRAPH ’92, pp. 71–78, 1992.
[20] D. Huffman. A method for the construction of minimum-redundancy codes. In Proc. I.R.E. 40, pp. 1098-1101,
1952.
[21] Z. Karni and C. Gotsman. Spectral Compression of Mesh Geometry. In Proceedings of SIGGRAPH, pp. 279286, 2000.
[22] A. Khodakovsky, P. Schröder and W. Sweldens. Progressive geometry compression. In SIGGRAPH 2000
Conference Proc., pp. 271–278, 2000.
[23] A. Khodakovsky and I. Guskov. Normal Mesh Compression. Geometric Modeling for Scientific Visualization,
Springer-Verlag, 2002.
[24] A. W. F. Lee, W. Sweldens, P. Schröder, L. Cowsar and D. Dobkin. MAPS: Multiresolution Adaptive
Parameterization of Surfaces. In Proceedings of SIGGRAPH 98, pp. 95-104, July 1998.
[25] M. Levoy, K. Pulli, B. Curless, S. Rusinkiewicz, D. Koller, L. Pereira, M. Ginzton, S. Anderson, J. Davis, J.
Ginsberg, J. Shade and D. Fulk. The Digital Michelangelo project: 3D scanning of large statues. In SIGGRAPH
2000, pp. 131–144, 2000.
[26] H. Lopes, J. Rossignac, A. Safonova, A. Szymczak and G. Tavares. Edgebreaker: A Simple Compression
Algorithm for Surfaces with Handles. Computers&Graphics International Journal, Vol. 27, No. 4, pp. 553-567,
2003
[27] R. Pajarola and J. Rossignac. Compressed progressive meshes. IEEE Transactions on Visualization and
Computer Graphics 6, 1 (January–March), pp. 79–93, 2000.
[28] F. Payan. Optimisation du compromis débit-distorsion pour la compression géométrique de maillages
surfaciques triangulaires. Thèse de doctorat, Université de Nice-Sophia Antipolis, 2004
[29] J. Rissanen and G.G. Langdon. Arithmetic coding. IBM Journal of Research and Development, 23(2), pp. 149-
31
162, 1979.
[30] J. Rossignac. Edgebreaker: Connectivity compression for triangle meshes. IEEE Transactions on Visualization
and Computer Graphics, pp. 47–61, 1999.
[31] J. Rossignac. Edgebreaker: Compressing the incidence graph of triangle meshes. GVU Technical Report GITGVU-98-17, Georgia Institute of Technology, 1998.
[32] J. Rossignac and A. Szymczak. Wrap&Zip decompression of the connectivity of triangle meshes compressed
with Edgebreaker. Journal of Computational Geometry, Theory and Applications, Volume 14, Issue 1-3, pp. 119135, November 1999.
[33] J. Rossignac, A. Safanova, A. Szymczak. 3D compression made simple: Edgebreaker on a Corner Table.
Shape Modeling International Conference, Genoa, Italy May 2001.
[34] A. Szymczak and J. Rossignac. Grow&Fold: Compression of Tetrahedral Meshes, Proc. In ACM Symposium
on Solid Modeling, pp. 54-64, June 1999. GVU Tech. Report GIT-GVU-99-02
[35] Szymczak, A. and J. Rossignac. Grow & fold: compressing the connectivity of tetrahedral meshes. ComputerAided Design, Elsevier, Vol 32, pp.527-537, 2000
[36] A. Szymczak, D. King and J. Rossignac. An Edgebreaker-based efficient compression scheme for regular
meshes. Computational Geometry, Theory and Applications (October, 2001), pp. 53-68, 2001.
[37] G. Taubin and J. Rossignac. Geometric compression through topological surgery. In ACM Transactions on
Graphics 17, 2, pp. 84–115, 1998.
[38] G. Taubin, A. Gueziec, W. Horn and F. Lazarus. Progressive forest split compression. In SIGGRAPH 98
Conference Proc., pp. 123–132, 1998.
[39] C. Touma and C. Gotsman. Triangle mesh compression. In Graphics Interface 98 Conference Proc., pp. 26–
34, 1998.
[40] I.H.Witten, R. Neal, et J.G. Cleary. Arithmetic coding for data compression. Communications of the ACM, 30
(6), pp. 520–540, 1987.
[41] J. Ziv and A. Lempel. A Universal Algorithm for Sequential Data Compression. IEEE Transactions on
Information Theory, May 1977.
[42] J. Ziv and A. Lempel. Compression of Individual Sequences Via Variable-Rate Coding. In IEEE Transactions
on Information Theory, Vol. 24, pp. 530–536, 1978.
[43] H.K.Zhao, S. Osher, and R. Fedkiw. Fast surface reconstruction using the level set method. In Proceedings of
IEEE Workshop on Variational and Level Set Methods in Computer Vision (VLSM), 2001.
[44] http://www.cgal.org
32
Annexe 1 : Modèles utilisés
FIG 1 – Modèle “Nefertiti”, surface à bords contenant 299 points.
FIG 2 – Modèle “Cube”, surface volumique contenant 50 000 points.
FIG 3 – Modèle “Bunny” volumique (à gauche) et non volumique (à doite). Dans le modèle de droite, on
remarque que les trous situés sour la base ont été creusés, afin de créer une créer une surface non fermée. Les deux
modèles contiennent 35 947 points.
33
FIG 4 – Modèle “Max Planck”, surface à bord (non fermée) contenant 23 608 points.
34
Téléchargement