Login| Sign Up| Help| Contact|

Patent Searching and Data


Title:
METHOD FOR COMPACT REPRESENTATION OF CONNECTIVITY OF A GEOMETRICAL MODEL
Document Type and Number:
WIPO Patent Application WO/2006/029962
Kind Code:
A1
Abstract:
The invention concerns a method for representing the connectivity of a geometrical model initially in the form of a mesh, the representation being performed by means of a generalized card consisting of a series of strands (1, 2, ..., 16) and of a series of connectivity relationships (a0, a1, a2), characterized in that it comprises a step which consists in establishing a compact representation of the connectivity in the form of a history of neighbourhood path for each individual strand of the generalized card.

Inventors:
PRAT SYLVAIN (FR)
BERTRAND YVES (FR)
GIOIA PATRICK (FR)
Application Number:
PCT/EP2005/054316
Publication Date:
March 23, 2006
Filing Date:
September 01, 2005
Export Citation:
Click for automatic bibliography generation   Help
Assignee:
FRANCE TELECOM (FR)
UNIV POITIERS (FR)
CENTRE NAT RECH SCIENT (FR)
PRAT SYLVAIN (FR)
BERTRAND YVES (FR)
GIOIA PATRICK (FR)
International Classes:
G06T9/00
Foreign References:
US6313837B12001-11-06
Other References:
LIENHARDT P ED - HANSMANN W ET AL EUROPEAN ASSOCIATION FOR COMPUTER GRAPHICS: "SUBDIVISIONS OF SURFACES AND GENERALIZED MAPS", EUROGRAPHICS. HAMBURG, SEPT. 4 - 8, 1989, PROCEEDINGS OF THE EUROPEAN COMPUTER GRAPHICS CONFERENCE, AMSTERDAM, NORTH HOLLAND, NL, vol. CONF. 10, 4 September 1989 (1989-09-04), pages 439 - 451, XP000143270
SZYMCZAK A ET AL: "PIECEWISE REGULAR MESHES: CONSTRUCTION AND COMPRESSION", GRAPHICAL MODELS, ELSEVIER, SAN DIEGO, US, vol. 64, no. 64, May 2002 (2002-05-01), pages 183 - 198, XP001141091, ISSN: 1524-0703
Attorney, Agent or Firm:
Callon De, Lamarck Jean-robert (20 rue de Chazelles, PARIS CEDEX 17, FR)
Download PDF:
Claims:
REVENDICATIONS
1. Procédé de représentation de connectivité d'un modèle géométrique se trouvant initialement sous forme de maillage, la représentation étant réalisée à l'aide d'une carte généralisée constituée d'une série de brins (1 , 2, ..., 16) et d'une série de relations de connectivité (a0, a^, a2), caractérisé en ce qu'il comprend l'étape consistant à établir une représentation compacte de la connectivité sous la forme d'un historique de parcours par voisinage brin par brin de la carte généralisée.
2. Procédé selon la revendication 1 , caractérisé en ce que l'étape (100) d'élaboration de la représentation compacte comprend le fait de mettre en œuvre un dit traitement sur chaque brin (1 , 2, ..., 16) successivement rencontré, ce traitement consistant à identifier l'existence d'au moins un brin voisin (1 , 2, ..... 16) appartenant à l'une des catégories constituées respectivement : a) des brins non rencontrés dans aucun desdits traitements antérieurs (N). b) des brins déjà rencontrés en tant que voisin dans un desdits traitement antérieur (W),.
3. Procédé selon la revendication 2, caractérisé en ce que pour chaque traitement d'un nouveau brin au cours du parcours, on identifie une partie seulement des appartenances aux catégories a) et b) parmi les brins voisins du brin (1 , 2, ..., 16) soumis audit traitement.
4. Procédé selon la revendication 3, caractérisé en ce que, pour chaque traitement d'un nouveau brin au cours du parcours, on identifie l'appartenance éventuelle auxdites catégories a) et b) pour l'un seulement desdits brins voisins.
5. Procédé selon la revendication 2, caractérisé en ce que, pour chaque traitement d'un nouveau brin au cours du parcours, on identifie la totalité des appartenances aux catégories a) et b) des brins voisins du brin (1 , 2, ...16) soumis audit traitement.
6. Procédé selon l'une quelconque des revendications 2 à 5, caractérisé en ce que, lorsque l'on identifie l'appartenance d'un brin voisin à la catégorie des brins déjà rencontrés (W), on inscrit une identification de ce brin voisin au sein dudit historique de parcours.
7. Procédé selon l'une quelconque des revendications 2 à 6, caractérisé en ce que l'on identifie, au cours desdits traitements, l'appartenance éventuelle d'un brin voisin à la catégorie (B) constituée des brins formant le bord d'une carte généralisée.
8. Procédé de compression de données correspondant à un modèle géométrique se trouvant initialement sous la forme d'un maillage, caractérisé en ce qu'il consiste à effectuer une compression (200) d'une représentation compacte de connectivité se présentant sous la forme d'un historique de parcours par voisinage brin par brin d'une carte généralisée associée au modèle géométrique, la carte généralisée étant constituée d'une série de brins (1 , 2, ..., 16) et de relations de connectivité (a0, ai, a2).
9. Dispositif de compression (200) d'une représentation correspondant à un modèle géométrique se trouvant initialement sous la forme d'un maillage, caractérisé en ce qu'il comporte des moyens de compression d'une représentation compacte de connectivité se présentant sous la forme d'un historique de parcours par voisinage brin par brin d'une carte généralisée associée au modèle géométrique, la carte généralisée étant constituée d'une série de brins (1 , 2, ..., 16) et de relations de connectivité (a0, ai, a2).
10. Signal de transmission de données représentatives d'un modèle géométrique initialement sous forme de maillage, caractérisé en ce que les données sont celles d'une représentation compacte de la connectivité sous la forme d'un historique de parcours par voisinage brin par brin d'une carte généralisée associée au modèle géométrique, laquelle carte généralisée est constituée d'une série de brins (1 , 2, ..., 16) et d'une série de relations de connectivité (a0, ai, a2).
11. Procédé de transmission d'un signal incluant une représentation d'un modèle géométrique initialement sous forme de maillage, le procédé étant caractérisé en ce qu'il comprend l'étape consistant à compresser une représentation compacte de connectivité se présentant sous la forme d'un historique de parcours par voisinage brin par brin d'une carte généralisée associée à ce modèle géométrique, la carte généralisée étant constituée d'une série de brins (1 , 2, ..., 16) et d'une série de relations de connectivité.
12. Procédé d'enregistrement d'un signal incluant une représentation d'un modèle géométrique initialement sous forme de maillage, caractérisé en ce qu'il consiste à enregistrer une représentation compacte de connectivité sous la forme d'un historique de parcours par voisinage brin par brin d'une carte généralisée associée à ce modèle géométrique, la carte généralisée étant constituée d'une série de brins (1 , 2, ..., 16) et d'une série de relations de connectivité (a0, ai, a2).
13. Programme d'ordinateur caractérisé en ce qu'il commande la transformation d'un modèle géométrique sous forme de maillage en une représentation compacte de connectivité se présentant sous la forme d'un historique de parcours par voisinage brin par brin d'une carte généralisée associée au modèle géométrique, la carte généralisée étant constituée d'une série de brins (1 , 2, ..., 16) et d'une série de relations de connectivité.
14. Programme d'ordinateur commandant une lecture d'une représentation d'un modèle géométrique initialement sous forme de maillage, caractérisé en ce qu'il comprend des instructions de lecture d'une représentation compacte de connectivité se présentant sous la forme d'un historique de parcours par voisinage brin par brin d'une carte généralisée associée au modèle géométrique, la carte généralisée étant constituée d'une série de brins (1 , 2, ..., 16) et d'une série de relations de connectivité.
Description:
Procédé de représentation compacte de la connectivité d'un modèle géométrique

L'invention se situe dans le cadre de la compression de modèles géométriques de type maillages, en particulier dans le domaine du codage de la connectivité, c'est-à-dire les méthodes qui conservent les caractéristiques topologiques initiales du modèle. Les modèles géométriques peuvent représenter toute sorte d'objet, tel qu'un plan de ville en trois dimensions ou une représentation destinée à des spécialistes d'un domaine particulier ayant besoin d'une visualisation particulière. Plusieurs méthodes de compression de maillages ont vu le jour. On y distingue plusieurs catégories. Les méthodes hiérarchiques procèdent par simplifications successives (souvent des contractions d'arêtes), en accordant un coût à chacune des opérations de simplification et en choisissant une suite de simplifications dont le coût total ne dépasse par un certain seuil, qui définit le taux de compression. D'autres méthodes s'attachent à coder la géométrie directement en utilisant des techniques de remaillage couplées à une analyse multi- résolution de la géométrie, par exemple via des ondelettes géométriques. Enfin, la dernière catégorie, celle qui nous intéresse ici, se focalise sur la description de la connectivité (la façon dont sont connectés les éléments du maillage entre eux) et utilise l'information de connectivité. Ces utilisations de parcours se sont cantonnées à des tests sur les structures ainsi définies. Quant à la mémorisation de cette réprésentation par relations, les relations sont mémorisées brin par brin dans l'ordre de leurs numéros d'affectation. Une telle mémorisation s'est avérée lourde à mettre en œuvre. Les travaux de Taubin et Rossignac [1] ont permis de représenter un maillage surfacique triangulaire par un graphe des triangles (les arcs relient les triangles qui partagent une arête). Le procédé de compression consiste à trouver un arbre couvrant un minimum du graphe (des faces), ce qui crée une sorte d'épluchure d'orange, et d'encoder cet arbre binaire de meilleure manière possible. Ensuite l'épluchure résultante est recollée correctement grâce à la description de l'arbre des sommets du bord de l'épluchure. Cet arbre définit un parcours dans le graphe des faces, dont on peut remarquer qu'il est spirale autour de la face de départ, avec un certain nombre d'accidents. C'est ainsi que sont nées d'autres méthodes dont la plus connue est EdgeBreaker [2]. Pour chaque élément du parcours (des triangles en général), un code est émis pour décrire la façon dont il est connecté avec ses voisins immédiats, ce qui définit la suite du parcours et ses éventuels accidents, puis les voisins non-visités sont traités à leur tour. Ainsi, pour EdgeBreaker, le nombre de cas différents (et donc de codes) s'élève à 5, suivant les relations d'incidence du triangle courant avec le bord courant de la partie encodée. Ces codes sont ensuite compressés en leur assignant un nombre de bits différents (codage entropique, 1 bit pour le plus fréquent contre 3 bits pour les autres). Les triangles considérés ne constituent pas une G-carte telle qu'on la définira ci-après. La géométrie associée aux maillages (position des sommets plus d'éventuelles coordonnées de texture) est souvent transmise au fur et à mesure de la description de la connectivité, c'est-à-dire au fur et à mesure que sont rencontrés de nouveaux sommets lors du codage. Cette géométrie est prédite en fonction des sommets précédemment codés, soit grâce à une fonction linéaire des ancêtres, soit grâce à la règle du parallélogramme. Le résidu (différence entre la valeur prédite et la valeur réelle) est ensuite quantifié puis compressé (codage entropique). Tourna et Gotsman [3] ont initié l'approche à base de codage des valences/degrés des cellules, qui a inspiré de nombreuses méthodes. Il s'agit de compter le nombre de sommets des faces et le nombre de faces incidentes à un sommet donné alternativement (et éventuellement de les prédire mutuellement), car plus les maillages sont réguliers, moins ces valeurs varient. Ainsi, les codes décrivant la connectivité sont directement les valeurs de valence/degrés excepté deux types d'accidents de parcours : le «split» divise le parcours en deux branches (par exemple pour un maillage en Y), alors que le «merge» réassemble deux branches différentes (leur nombre est directement lié au genre de la surface, considéré comme négligeable devant le nombre de sommets). Depuis, beaucoup de travaux sur le codage de la connectivité ont été réalisés, d'abord pour des maillages surfaciques triangulaires, puis ensuite pour des maillages polygonaux, des maillages volumiques tétrahédriques et enfin hexaèdriques. Dans ces méthodes, différentes structures topologiques sont utilisées pour décrire les informations de connectivité des modèles géométriques. Les structures half-edge sont souvent utilisées pour les maillages surfaciques moyennant quelques adaptations. Pour des hexaèdres, une structure spin-edge convient. A chaque fois, ces structures sont spécialisées, c'est-à-dire qu'elles ne peuvent représenter que certains types de subdivisions. Par conséquent les méthodes décrites ne peuvent pas se généraliser aisément à d'autres types de modèles. Ces méthodes ont naturellement quelques défauts, relatifs aux hypothèses implicites ou explicites sur les maillages considérés. A chaque type de maillage (triangulaire, polygonal puis récemment tétraèdrique et hexaèdrique), une méthode différente est utilisée, employant à chaque fois une structure spécifique pour ce type de maillage, ce qui rend difficile la généralisation des algorithmes en dimension supérieure. Il n'existe donc pas à l'heure actuelle, de méthodes de compression fonctionnant en dimension quelconque. De plus, les bords sont considérés comme peu nombreux et donc sont souvent gérés comme des cas particuliers coûteux (en terme de place occupée dans le fichier compressé) dans les algorithmes. De plus, les plongements sont linéaires : une arête est forcément plongée en un segment de droite, par conséquent elle est forcément formée de 2 sommets différents. Les cas pathologiques de cellules cousues sur elles-mêmes (par exemple une demi-sphère constituée d'une seule face incurvée, et donc d'une seule arête avec un seul sommet) ne sont donc pas traités. De plus, dans ces méthodes, les surfaces sont toujours orientables et n'ont pas de trous. L'invention vise à résoudre ces inconvénients, c'est à dire à permettre la compression de modèles géométriques indifféremment de leur géométrie de subdivision (de cellule) et indépendemment de leur dimension car chacune des dimensions est traitée de la même façon dans l'algorithme, ce qui permet de combler le défaut de non-généricité des approches classiques. Cette méthode permet donc de compresser aussi bien les maillages avec beaucoup de bords que ceux avec très peu de bords. On vise, outre la souplesse d'application à différentes géométries de cellules, également à permettre une mémorisation et/ou une transmission moins lourde d'une représentation de maillage. Ce but est atteint selon l'invention grâce à un procédé de représentation de connectivité d'un modèle géométrique se trouvant initialement sous forme de maillage, la représentation étant réalisée à l'aide d'une carte généralisée constituée d'une série de brins et d'une série de relations de connectivité, caractérisé en ce qu'il comprend l'étape consistant à établir une représentation compacte de la connectivité sous la forme d'un historique de parcours par voisinage brin par brin de la carte généralisée. On propose également selon l'invention un dispositif de compression d'une représentation correspondant à un modèle géométrique se trouvant initialement sous la forme d'un maillage, caractérisé en ce qu'il comporte des moyens de compression d'une représentation compacte de connectivité se présentant sous la forme d'un historique de parcours par voisinage brin par brin d'une carte généralisée associée au modèle géométrique, la carte généralisée étant constituée d'une série de brins et de relations de connectivité. On propose également selon l'invention un signal de transmission de données représentatives d'un modèle géométrique initialement sous forme de maillage, caractérisé en ce que les données sont celles d'une représentation compacte de la connectivité sous la forme d'un historique de parcours par voisinage brin par brin d'une carte généralisée associée au modèle géométrique, laquelle carte généralisée est constituée d'une série de brins et d'une série de relations de connectivité. On propose également selon l'invention un procédé de transmission d'un signal incluant une représentation d'un modèle géométrique initialement sous forme de maillage, le procédé étant caractérisé en ce qu'il comprend l'étape consistant à compresser une représentation compacte de connectivité se présentant sous la forme d'un historique de parcours par voisinage brin par brin d'une carte généralisée associée à ce modèle géométrique, la carte généralisée étant constituée d'une série de brins et d'une série de relations de connectivité. On propose également selon l'invention un procédé d'enregistrement d'un signal incluant une représentation d'un modèle géométrique initialement sous forme de maillage, caractérisé en ce qu'il consiste à enregistrer une représentation compacte de connectivité sous la forme d'un historique de parcours par voisinage brin par brin d'une carte généralisée associée à ce modèle géométrique, la carte généralisée étant constituée d'une série de brins et d'une série de relations de connectivité. On propose également selon l'invention un programme d'ordinateur caractérisé en ce qu'il commande la transformation d'un modèle géométrique sous forme de maillage en une représentation compacte de connectivité se présentant sous la forme d'un historique de parcours par voisinage brin par brin d'une carte généralisée associée au modèle géométrique, la carte généralisée étant constituée d'une série de brins et d'une série de relations de connectivité. On propose également selon l'invention un programme d'ordinateur commandant une lecture d'une représentation d'un modèle géométrique initialement sous forme de maillage, caractérisé en ce qu'il comprend des instructions de lecture d'une représentation compacte de connectivité se présentant sous la forme d'un historique de parcours par voisinage brin par brin d'une carte généralisée associée au modèle géométrique, la carte généralisée étant constituée d'une série de brins et d'une série de relations de connectivité. D'autres caractéristiques, buts et avantages de l'invention apparaîtront à la lecture de la description détaillée qui va suivre, faite en référence aux figures annexées sur lesquelles : - la figure 1 représente une partie de G-carte conforme à l'état de la technique ; - la figure 2 illustre un exemple de représentation compacte par parcours d'une G-carte conforme à l'invention ; - les figures 3 à 5 représentent trois types de parcours visant à éviter des redondances ; - la figure 6 illustre un second exemple de représentation par parcours d'une G-carte selon l'invention ; - la figure 7 représente une cellule ayant une face à trou, du type repliée sur elle-même ; - la figure 8 est un organigramme représentant un procédé conforme à l'invention ; - la figure 9 illustre une structure de chaîne de transmission conforme à l'invention. Comme on le verra par la suite, la méthode décrite ici s'appuie sur une expression du modèle sous forme de G-carte et décrit la connectivité entre brins (élément de base de la structure G-carte) plutôt que d'autres primitives géométriques. On décrira également un type de parcours qui tend à améliorer la compression car il rend les séquences de symboles plus régulières. On va maintenant définir ce que l'on entend, ici et habituellement, par G-carte ou carte généralisée. Dans la suite, le terme de /-cellule sera utilisé pour désigner les entités de dimension / du modèle : les sommets sont des 0-cellules, les arêtes des 1 -cellules, les faces des 2-cellules, etc. De plus, le terme dimension ne s'appliquera qu'à la connectivité et non aux plongements, par exemple un maillage triangulaire est de dimension 2 (c'est une surface), même si les coordonnées des sommets sont plongés dans un espace 3D. Les cartes généralisées inventées par Lienhardt [8, 9] permettent de représenter des variétés avec ou sans bords, orientables ou non. Cette représentation se compose d'un seul type d'élément appelé brin et d'un seul type de relation (d'incidence et d'adjacence) entre ces brins. Ainsi dans cette représentation, les /-cellules ne sont pas représentées explicitement (comme dans le cas de l'IndexedFaceSet de VRML), mais elles sont déduites des relations entre les brins, comme nous allons le voir un peu plus loin. Une carte généralisée de dimension Λ/ (Λ/-G-carte) se définit donc de la manière suivante : G=(β,ao,a1,a2,...,aΛ/) , avec B est l'ensemble des brins et les a, sont des relations entre les brins. Ces relations vérifient les propriétés suivantes : « 0 < i < N, ai est une involution (dite simple), c'est-à-dire que BjLaLb))Fb. « i,j, 0< i < i+2 < j≤ N ,ai.aj(b) est aussi une involution (dite composée). « i<N, ai est sans point fixe (il existe b tel que ai(b)=b) Par la première propriété, les brins sont appareillés deux à deux sur chaque dimension / excepté dans le cas de points fixes où un brin est lié à lui-même, il est donc qualifié de /-libre et définit un /-bord. Dans l'exemple de la figure 1 , les brins 4 et 10 sont liés entre eux sur la dimension 2, alors que le brin 5 est 2-libre : a2(4)=9,a2(9)=4,a2(5)=5. La deuxième propriété correspond intuitivement à l'hypothèse de variété topologique, c'est-à-dire que les /-cellules doivent être cousues, collées entre elles via des (/-1 )-cellules de même forme (homéomorphes). Dans l'exemple de la figure 1 , les faces (2-cellules) sont adjacentes par une arête (1 -cellule) définie par les brins 3,4,9,10. Enfin, la troisième propriété indique que ces /-cellules que l'on peut éventuellement coudre sont sans bords, cette restriction est levée par la suite, afin de permettre la représentation en G-carte en cours de construction. (groupes de permutation) définissent l'ensemble des brins obtenus par composition des involutions ajk , c'est-à-dire l'ensemble des brins que l'on peut atteindre en partant d'un brin donné et en parcourant de toutes les manières possibles les involutions a*. Par exemple, <a1,a2>(2)={2,3,10,11}. Les /-cellules (sommets, arêtes, faces, Ψ) sont définies par des orbites particulières qui sont constituées de toutes les involutions sauf a,. Intuitivement, l'involution a, permet de sortir d'une /-cellule et de rentrer dans la /-cellule adjacente par le brin considéré. Ainsi, en sautant toutes les involutions des brins de la cellule sans en sortir (par a,), on obtient tous les brins constitutifs de la cellule. Par exemple, <ao,a1>(2) est l'orbite face (2- cellule) associée au brin 2, c'est-à-dire la face incidente au brin 2. On appelle plongement les données qui complètent les données de connectivité et qui localisent un élément (un brin) dans le plan ou l'espace donné. Il s'agit donc des données de localisation. Une structure définie par une G-carte a pour avantage de n'occuper qu'une faible place en mémoire pour ce qui est des données de localisation. En effet, la description des liens définit la structure avec très peu de données de plongement nécessaires. Les plongements sont souvent associés à l'un des brins composant l'orbite. Par exemple, pour expliciter des coordonnées tridimentionnelles pour les sommets, seul un brin dans chaque orbite sommet (<a1,a2> en 2D) va être plongé. Sur la figure 1 , les brins 1 ,2,6,4,14,12 par exemple seraient plongés. Dans la suite, par abus de langage, nous désignerons par «involution d'un brin» l'image d'un brin par une involution donnée. Les G- cartes seront représentées comme des multi-graphes dont les noeuds (demi-arêtes) sont les brins et les arcs relient deux brins images l'un de l'autre par une involution, les arcs étant values par l'indice de cette involution. Une G-carte est donc une structure B-Rep (représentation par les bords), ordonnée, c'est-à-dire qu'elle décrit un ordre sur les cellules incidentes à un type de cellule donné, de même que pour les Winged- Edge, Half-Edge, etc. Pour les G-cartes, ces cellules sont les brins, qui peuvent être vus comme des (-i )-cellules (cf. [9]). Pour coder efficacement la géométrie, des méthodes classiques comme [4-7] pourront être utilisées. La méthode fait appel à la représentation G-carte, l'idée maîtresse consiste à profiter de l'unique type d'élément et l'unique type de relations entre eux pour définir un algorithme de compression indépendant de la dimension des variétés à compresser. De plus, on ne se contente pas ici d'une simple définition des relations de chaque brin avec l'ensemble de ses voisins, ce qui occuperait, comme dans l'art antérieur, une place importante en mémoire. Il s'agit ici d'utiliser la structure de G-carte pour mémoriser celle-ci selon un parcours de la structure, en allant d'un brin à un brin voisin dans la structure et ainsi de suite. Cette approche de représentation sous la forme d'un parcours d'une G-carte est une représentation particulièrement compacte donc propice à la transmission de signaux, après compression. Ainsi, on préconise une représentation compacte de la structure, sous la forme d'un parcours brin à brin d'une structure expressément choisie sous forme d'une G-carte. On en tire la souplesse voulue en termes d'adaptation à divers types de cellules ainsi que la compacité voulue. Un parcours permet d'expliciter progressivement les relations de voisinage entre cellules (ici les brins) via l'émission de symboles pour décrire les différents cas de connectivité, ces symboles sont ensuite compressés par des méthodes classiques. Ce type d'approche permet de compresser au mieux les régularités spatiales locales ou globales du modèle, cette remarque vaut aussi bien pour les plongements que pour la topologie et est le point commun de beaucoup de méthodes de compression de modèles géométriques. Cette méthode tire ainsi partie des spécificités des G-cartes. Les G- cartes permettent en effet de représenter toutes les variétés N- dimensionnelles. L'algorithme est valable quelque-soit la dimension car il exploite le fait qu'il n'y ait qu'un seul type d'élément et un seul type de relation entre eux, pour chacune des dimensions la méthode est la même. Il s'agit d'un modèle ordonné, cet ordre va nous permettre de mieux compresser les régularités spatiales locales du modèle. La méthode de codage suit ici les approches suivantes. On met en place une stratégie de parcours (conquête de brins) qui détermine l'ordre dans lequel codeur et décodeur vont rencontrer les brins constitutifs de chaque composante connexe. Lors du parcours, pour chaque brin, une première phase permet l'élimination d'informations redondantes. Lors d'une deuxième phase, des symboles sont émis pour décrire le voisinage de ce brin (sa connectivité). Les séquences de symboles obtenues pour chacune des involutions sont ensuite compressées grâce à des méthodes classiques de compression de données. Les plongements (i.e. la géométrie) sont codés soit à la volée pendant le parcours, soit de façon indépendante lors d'une passe supplémentaire. En sortie de transmission, le décodeur procède de manière symétrique. Il met en œuvre une décompression des séquences de symboles. Il recréé des brins et reconstitue des connexions à l'aide de ces séquences. II reconstruit les redondances, i.e. il répare la G-carte. Il met en outre en œuvre le décodage des plongements. La stratégie de parcours définit l'ordre dans lequel les éléments constitutifs du modèle (ici des brins) vont être rencontrés lors du processus d'encodage et de décodage. Nous procédons brin par brin, de proche en proche, en utilisant le voisinage immédiat de chaque brin, formant ainsi une méthode dite «region-growing», afin de décrire les relations d'adjacence, d'incidence entre ces éléments. Un brin arbitraire est choisi comme point de départ du parcours de chaque composante connexe du modèle, il est inséré dans un ensemble (ordonné) A de brins en attente d'être traités. Ensuite, à chaque fois un brin est retiré de A et est encodé, puis ses voisins non-traités sont à leur tour ajoutés à cet ensemble pour être encodés, ceci jusqu'à la conquête complète de tous les brins de la composante connexe (plus aucun brin dans A). La stratégie de conquête des brins se définit donc comme le choix d'un brin dans l'ensemble A. Le voisinage d'un brin est obtenu par application des involutions a, à ce brin. Le parcours respecte la contrainte précédente c'est-à-dire qu'un brin ne peut et ne doit être encodé que s'il a été rencontré précédemment lors de l'encodage d'un autre brin (excepté pour le premier brin d'une composante connexe). De plus, le choix du prochain brin à traiter dans l'ensemble a beaucoup d'influence sur les séquences de symboles produites et par conséquent sur sa compressibilité. Son choix est donc assez important. Dans notre cas, nous allons choisir une stratégie à des fins d'illustration, mais la méthode reste valable quelque-soit le parcours adopté. Les critères choisis sont une plus grande priorité aux brins découverts par des involutions d'indices faibles et, en cas d'égalité, on applique la règle du « premier entré-premier sorti ». Le choix d'un brin dans l'ensemble A suit donc ces 2 critères : si un brin b est découvert sur a,, sa priorité est de -/, en cas d'égalité de priorité lors du choix d'un brin, l'ordre de découverte des brins intervient pour les départager. Les exemples ci-après illustrent ce parcours. Sur toutes les figures, les brins sont numérotés dans l'ordre où ils sont traités (i.e. encodés), et non pas dans l'ordre où ils sont découverts. Pendant le parcours, un brin peut prendre 3 états distincts : - non-visité : il n'a pas encore été rencontré lors du parcours ; - visité : le brin est en attente d'être traité (il appartient à A) car l'un de ses voisins à été traité ; - traité : le voisinage du brin a été décrit ; Chaque brin est décrit en termes de symboles qui expriment l'état de connection (le voisinage) de ce brin pour chaque involution (i.e. sur chaque dimension). Pour chaque brin, l'image par l'involution a, de ce brin est définie par 3 symboles : - B (border) : le brin courant est sur un /-bord (point fixe de l'involution, l'image est le brin lui-même) ; - N (new) : l'image du brin courant par cette involution (le brin voisin) n'a pas été rencontré précédemment (il est dans l'état non-visité) ; - W (waiting) : le voisin du brin courant (c'est à dire l'image du brin courant par cette évolution) a déjà été rencontré précédemment (état visité, il appartient donc à A), mais il n'a pas encore été encodé, un indice de recollement est utilisé pour désigner le brin correspondant. Dans les exemples qui vont suivre, cet indice est le numéro du brin, mais il peut prendre d'autres formes. Le caractère « - » utilisé ensuite ne correspond pas à un symbole réel, il est utilisé pour montrer les informations redondantes, qui sont éliminées lors de la première phase. Ces différents symboles constituent à chaque fois une séquence de symboles, chaque séquence décrivant alors une involution (une seule, celle du brin courant). On décrira maintenant un premier exemple. Pour illustrer la méthode, voyons un exemple de codage d'un triangle sur 1 dimension (2 involutions, pas d'information de connectivité entre faces). Les séquences de symboles obtenues sont celles de la figure 2. Au départ, le brin 1 (un brin arbitraire de la composante connexe) est mis en attente dans A. Lors de son traitement, 2 nouveaux brins sont découverts et mis en attente (symboles N pour les involutions a0 et a.,), le brin 2 d'abord (par l'involution d'indice 0, priorité 0) puis le brin 3 (indice 1 , priorité -1 ). Ensuite, nous traitons le brin 2 (de priorité plus grande), nous savons déjà qu'il est connecté à 1 (d'où le -) il découvre le brin 5, puis vient le tour du brin 3 (égalité de priorité entre 3 et 5, 3 est apparu avant donc traité en premier), puis vient le tour du brin 4 (priorité plus forte). Lorsque l'on arrive au brin 5, le brin 6 a déjà été rencontré précédemment (il a été découvert par le brin 4). Cela signifie la fermeture de la face ; l'indice du brin à appareiller est donc indiqué et inscrit dans la représentation compacte, nous pouvons remarquer que c'est le prochain brin en attente dans ce cas. Ce résultat obtenu est la série de séquences suivantes pour les brins 1 à 6 de la figure 2. ai : 0 1 A={1} 1 : N N A={2, 3} 2 : - N A={3, 5} 3 : N - A={4, 5} 4 : - N A={5, 6} *5 : W6 - A={6} 6 : _ A=U

Dans une variante, on construit les données en n'effectuant, pour chaque brin, qu'un traitement consistant à ne remplir d'abord qu'une partie seulement des relations du brin, puis à passer au brin suivant tel que défini dans cette partie remplie. Les symboles de relation non encore identifiés le sont lorsque le parcours repasse à nouveau par le brin non encore complété en termes de symboles de relation, un nouveau traitement de ce brin définissant alors d'autres symboles restant à définir pour d'autres brins voisins du brin en cours. Dans le présent exemple, afin d'éviter de recontrer plusieurs fois les mêmes brins et donc de décrire plusieurs fois leurs relations d'incidence, il est nécessaire de procéder à une phase préliminaire d'élimination de redondances dans la structure G-carte. Cette phase permet d'établir pour chaque brin si les images des involutions de ce brin doivent être décrites ou non, elle s'effectue lors du parcours, juste avant l'encodage du brin courant. Il existe deux types de redondances. Le premier type de redondances recouvre celles des involutions simples liées à la propriété 1 : les involutions sont des bijections représentées par des liens bidirectionnels entre brins, il est donc nécessaire d'orienter ces liens, en fonction de l'ordre imposé par le parcours (cf. Figure 3), ce qui se traduit par les caractères - dans l'exemple précédent). Le deuxième type de redondances recouvre celles des involutions composées liées à la propriété 2 : soit les informations de bords sont déjà connues (cf. figure 4), soit plusieurs chemins relient 2 mêmes brins (cf. figure 5), a/.ay<0)=ay-.a/(0)=3) auquel cas nous pouvons en supprimer. Lors d'une première phase, pour chaque brin b rencontré lors du parcours, nous définissons donc des fonctions booléennes a/ (représentées par des flèches grises sur les figures 3, 4 et 5) : - a/(b)=wa/si l'information est pertinente ; - Sinon a/(ύ)=faux (pour éliminer les redondances). L'involution a,(ϋ) est décrite et parcourue si et seulement si aj(b)=vrai, sinon il n'est pas nécessaire de la prendre en compte à cause des redondances. La pertinence de l'information est déterminée grâce à l'état des brins voisins de notre brin courant, selon l'approche décrite ci- dessous. Pour les involutions simples, si a,{ύ) a été traité (et a,{ύ)1ύ), alors il faut ignorer l'involution a, pour b, c'est-à-dire que a/(ύ)=faux (cf. figure 3). Sur la figure 2, nous pouvons apercevoir les involutions a0 en bleu et a1 en vert. Les flèches montrent le résultat de l'élimination des redondances, ce qui a pour effet d'orienter les involutions. Pour les involutions composées, comme évoqué précédemment, elles permettent de déduire deux types d'informations : - Les bords de cellules ; - Les connections entre cellules. Considérant une involution composée a,,ay, avec /<y, notre choix est d'éliminer l'un des liens ay. Plus précisément, étant donné que a/,ay(ύ)=ay,a/{ύ), il n'est pas utile de préciser les 2 images a,{ay(ύ)) et ay(a,{ύ)), c'est pourquoi nous ne décrivons pas la deuxième. Le codage des a, est déterminé par la règle des involutions simples. Voyons comment nous procédons pour les ay. Pour le cas de bords, si le brin a,{ύ) a été traité (et a,{ύ)1ύ) (cf. figure 4, b étant le brin 1 ), il n'est pas nécessaire d'expliciter que b est un y-bord (i.e. aj{b)=b), puisque le brin a,{ύ) (le brin 0) l'a déjà fait. Par conséquent,

Pour le cas connecté, dans le cas où a,{ύ) a été traité (et a,{ύ)1ύ) (cf. figure 5), c'est-à-dire pour les brins 1 et 3, il n'est pas nécessaire d'expliciter les ay, donc a/(1 Au contraire, pour le brin 2, il est nécessaire de préciser a,, car le brin 3 peut être soit un nouveau brin (N), soit un brin déjà rencontré (W) (mais en aucun cas un bord), d'où Dans le cas où c'est un brin déjà rencontré, la priorité du brin correspondant peut être revue à la hausse pour qu'elle corresponde à celle d'une involution a, afin de traiter ce brin de la même façon que si c'était un nouveau brin, ce qui rend la séquence de symboles plus régulière. La structure de G-carte permet de satisfaire des requêtes d'incidence et d'adjacence entre tout type d'entités géométriques (par exemple triangle hexaèdre, tetracèdre), elle peut ensuite être réutilisée dans des applications et algorithmes géométriques utilisant une telle méthode de compression/décompression. Elle est d'ailleurs intégrable par exemple dans une plateforme de calcul de visibilité en environnement urbain. On décrira maintenant un deuxième exemple. Nous voyons sur la figure 6 le résultat de l'encodage de 2 triangles adjacents par l'arête 5,6,7,8. On peut déjà remarquer deux motifs qui se ressemblent dans les séquences de symboles, entre les parties 1-6 et 7-12, correspondant chacune à un triangle. Le résultat obtenu est la série de séquences suivantes, correspondant respectivement aux brins 1 à 12 de la figure 6. a aii : : 00 11 22 A={1} 1 : N N B A={2, 3} 2 : - N - A={3, 5} 3 : N - B A={4, 5} 4 : - N - A={5, 6} * *55 :: W W66 - - N N A={6, 7} 6 : - - - A={7} 7 : N N - A={8, 9} 8 : - N - A={9, 11} 9 N - B A={10, 11} 1100 :: - - N N - - A={11 , 12} 11 : W12 - B A={12} 12 : _ _ _ A={ } Toutes ces déductions peuvent être factorisées en une seule fonction de détermination de a/. Voici l'algorithme écrit en C utilisé lors du codage : void determine_alpha_prime(Dart* dart) { for (k=0; k<NB_INVOS ++k) { alphaPrime[k] = true; } for (k=0; k<NB_INVOS ++k) { if (!m_map->isFree(dart, k)) { // le brin n'est pas k-libre anotherDart = m_map->alpha(dart, k); // alpha_k(brin) if (m_map->isMarked(anotherDart, m_markTreated)) { alphaPrime[k] = false; // involutions simples for (m=k+2; m<NB_INVOS ++m) { alphaPrime[m] = false; // involutions composées

} } } } La phase de décodage (décodeur 400 sur la figure 9) est exactement symétrique à la phase d'encodage, c'est-à-dire que l'on construit les brins et leurs liaisons en fonction des symboles reçus, après décompression. Les brins sont décodés un à un et le voisinage est construit au fur et à mesure, ce qui permet de déterminer quelles sont les involutions à décoder pour les prochains brins. Lors du décodage, le même type de traitement que l'élimination des redondances est utilisé pour déterminer pour chaque brin quelles sont les informations pertinentes, et donc quelles sont les involutions à lire/décoder dans les séquences de symboles. Pour chacun de ces symboles reçus, sur une involution a, on rencontre l'un ou l'autre des symboles N, W, B et ou on tire les actions suivantes : Si le symbole N est rencontré, nous construisons un nouveau brin que nous relions à notre brin courant via l'involution a, . Si le symbole W est rencontré, nous cherchons le brin à coudre dans la file d'attente grâce à l'indice de recollement, puis nous re-créons le lien vers le brin courant. Si le symbole B est rencontré, le brin courant est lié à lui-même via a,. Enfin, les redondances sont réintégrées dans la structure pour la rendre valide, soit lors d'une deuxième passe, soit directement pendant le décodage des séquences de symboles. Pour la compression des séquences de symboles, on procède avantageusement comme suit. Tout au long du parcours, des symboles décrivent le voisinage du brin courant, ce qui forme des séquences sur chacune des dimensions, ces séquences permettent la reconstruction à l'identique de la subdivision après décodage. Les symboles sont rangés par involutions, nous avons donc Λ/+1 séquences correspondant aux Λ/+1 involutions afin d'exploiter d'éventuelles corrélations intra-/inter-dimensions pour la compression, ces séquences forment autant de fichiers que nous allons compresser grâce à des méthodes classiques de compression de données. Les séquences de symboles diffèrent suivant le parcours choisi sur la G-carte, ce qui a une incidence sur leur régularité et sur les indices de recollement. Dans les séquences de symboles, nous ne stockons pas directement le numéro du brin lors de recollement (symboles W) mais la position actuelle du brin dans la file d'attente, ce qui tend à restreindre la plage des indices. Ensuite, notre parcours particulier a tendance à rendre les séquences régulières et à réduire encore les indices de recollement. Cet indice de recollement peut être omis si les /-cellules ne sont pas cousues sur elles-mêmes (comme par exemple avec une face à trou, (cf. figure 7), car il est possible de chercher le brin à recoller sur l'orbite <a/wo,a/wo+1>, invo étant l'indice de l'involution sur laquelle le symbole W est apparu. Plusieurs méthodes de compression (compresseur 200 et décompresseur 300 sur la figure 9) peuvent être employées, dépendant du compromis rapidité/compacité, dont 2 alternatives sont notamment le codage par dictionnaire et le codage entropique des symboles qui nécessite préalablement une transformation de la séquence de symboles. Au vu des séquence produites expérimentalement, de nombreux motifs répétitifs apparaissent, et peuvent être donc facilement exploités par un compresseur à dictionnaire, comme par exemple [10]. Leur inconvénient est de n'être efficaces que sur de longues séquences. Un codeur arithmétique [11] ou entropique peut également être employé sous certaines conditions. En effet, nous avons constaté expérimentalement que la fréquence d'apparition des N peut être comparable à celle des W, ce qui suggère que le codage entropique brut des symboles (en fonction des probabilités instantanées d'apparition des symboles) ne serait pas efficace. Il faut donc appliquer une transformation du signal des symboles, qui peut consister en un comptage du nombre d'occurrences successives d'un même symbole (Run Length Encoding). Les termes constants ou peu variables sont ensuites absorbés par le codage entropique. Les indices de recollement peuvent être prédits pour limiter leur étendue, soit en cherchant manuellement (en parcourant les orbites citées précédemment) le brin à appareiller, soit en fonction des indices précédemment apparus. Du fait de la gestion des bords comme un cas normal, les subdivisions comprenant beaucoup de bords telles que les soupes de polygones sont compressées aussi efficacement que les subdivisions avec très peu de bords, car les séquences de symboles sont constituées d'un grand nombre de symboles identiques consécutifs (ce sont respectivement des B et des N). Le signal incluant la représentation compacte et compressée est alors transmis sur le réseau, par exemple via internet vers le terminal récepteur souhaité (signal 500 sur la figure 9). La transmission sans fil, par exemple par téléphone mobile, est bien sûr prévue. Etant donné la variété des types de plongements (coordonnées n- dimensionnelles, courbes de béziers, patch de grégory, textures, couleur, etc.), il est difficile de donner une méthode générale pour décrire chaque type de plongement. Le codage des plongements peut s'effectuer quant à lui de deux manières. Il peut s'effectuer à la volée, pendant la description de la connectivité. L'avantage est alors la rapidité et la simplicité de codage, mais sa mise en oeuvre est difficile. Il peut aussi être effectué une fois l'ensemble des relations décrites et mémorisées. On en tire alors une certaine progressivité, une bonne adaptativité et un meilleur taux de compression. L'invention permet l'utilisation de méthodes classiques décrites dans [3-6]. Les plongements sont associés à l'un des brin de l'orbite plongement (un brin de l'orbite <aλ,a2,ΛA,a,^> pour les coordonnées de sommets par exemple). Seul un brin de l'orbite doit expliciter le plongement pour cette orbite (et éventuellement sa présence si le plongement est optionnel), et ce n'est pas forcément le brin portant le plongement. Nous avons ici choisi d'effectuer le codage des plongements lors d'une passe séparée afin de disposer de la topologie complète pour leur prédiction. Nous ne codons ici que les coordonnées tridimensionnelles des sommets. Pour cela, un parcours des sommets du maillage est effectué et la différence entre le sommet courant et le sommet précédemment encodé lors du parcours est quantifiée grâce à un quantificateur scalaire uniforme. Bien sûr, d'autres types de prédiction ainsi que d'autres méthodes de quantification ou compression peuvent être utilisées, et d'autres types de plongements peuvent être traités (comme des textures par face par exemple). Plus précisément, le parcours des sommets s'effectue ici de la manière suivante. Le point de départ (brin) du parcours des sommets de la composante connexe est le même que celui qui a servi pour la description de la connectivité. L'orbite sommet du brin est marquée « visitée » (i.e. tous les brins qui constituent le sommet) et la valeur du plongement (les coordonnées 3D) est encodée (prédite puis quantifiée). Les brins des sommets voisins (i.e. tous les voisins des brins de l'orbite sommet courante) sont mis en file d'attente. Pour chaque brin pris dans la file d'attente, s'il n'est pas marqué (donc n'a pas été encodé), nous procédons de la même façon, nous marquons toute l'orbite sommet puis nous codons la valeur du plongement associé. Nous détaillerons maintenant les structures de données et algorithmes que nous avons utilisés dans lïmplémentation du présent codeur/décodeur. Chaque brin de la G-carte est constitué de la manière suivante. Il contient Λ/+1 pointeurs vers les brins voisins pour représenter les Λ/+1 involutions. Un champ de bits est donné pour les différentes marques que peuvent avoir les brins : par exemple les brins sont marqués afin de savoir s'ils sont en attente dans A, ou s'ils ont été traités (encodés) ou non. Une liste chaînée est donnée pour les plongements associés à un brin. De plus, la G-carte est constituée d'une liste chaînée de tous les brins (ou bien d'un brin de chaque composante connexe). Pour chacune des Λ/+1 involutions, une liste chaînée représente les brins en attente dans A découverts sur cette involution. Les opérations sur cet ensemble sont de prendre le brin le plus prioritaire s'il reste des brins en attente, de mettre un nouveau brin en attente, chercher le brin correspondant à un index ou trouver l'index d'un brin. L'algorithme de compression se décompose ici en 2 parties. Une première partie traite l'encodage de la topologie puis une deuxième partie traite l'encodage de la géométrie associée. Le décodage étant symétrique, nous ne le précisons pas ici. for (every connex component) { b = an arbitrary dart from the connex component; encode_topo(b); // encode the topology encode_geo(b); // encode the geometry } Pour la connectivité : void encode_topo(Dart* ce) { A.add(cc); while (!A.isEmpty()) { b = A.pick_highest_priority(); determine_alpha_prime(b);

encode_alpha_i_prime(b, i); } } } Pour les plongements, une liste P stocke les brins des orbites en attente d'être codées : void encode_geo(Dart* ce) { P.add(cc); while (!P.isEmpty()) b = P.pick(); if (!b.isVisited()) markOrbitVertex(b); encodeVertex(b); P.add(neighboor_orbit(b)); } }

Références

[1] G. Taubin and J. Rossignac, "Géométrie compression through topological surgery," ACM Transactions on Graphics, vol. 17, pp. 84- 115, 1998. [2] J. Rossignac, "Edgebreaker: Connectivity Compression for Triangle Meshes," IEEE Transactions on Visualization and Computer Graphics, vol. 5, pp. 47-61 , 1999. [3] C. Tourna and C. Gotsman, "Triangle Mesh Compression," presented at Proceedings of Graphics Interface, Vancouver, 1998. [4] M. Isenburg and P. Alliez, "Compressing polygon mesh geometry with parallelogram prédiction," presented at Proceedings of the conférence on Visualization '02, Boston, Massachusetts, 2002. [5] M. Isenburg and J. Snoeyink, "Compressing Texture Coordinates with Sélective Linear Prédictions," presented at Proceedings of Computer Graphics lntemationalO3, 2003. [6] P. H. Chou and T. H. Meng, "Vertex Data Compression through Vector Quantization," présentée! at IEEE Transactions on Visualization and Computer Graphics, 2002. [7] S. Gumhold and R. Amjoun, "Higher order prédiction for geometry compression," Proceedings of International Conférence On Shape Modelling And Applications, pp. 59-66, 2003. [8] P. Lienhardt, "Topological models for boundary représentation : a comparison with n-dimensional generalized maps," Computer-Aided Design, vol. 23, pp. 59-82, 1991. [9] P. Lienhardt, "N-Dimensional Generalized Combinatorial Maps and Cellular Quasi-Manifolds," International Journal of Computational Geometry and Applications, vol. 4, pp. 275-324, 1994. [10] T. A. Welch, "A technique for high-performance data compression," IEEE Computer, pp. 8-19, 1984. [11] A. Moffat, R. M. Neal, and I. H. Witten, "Arithmetic coding revisited," ACM Transactions on Information Systems (TOIS), vol. 16, pp. 256- 294, 1998.