Interprétation tridimensionnelle de dessins 2D

Sujet proposé par Philippe Chassignet

Philippe.Chassignet@polytechnique.fr

Ce sujet est inspiré de l'ouvrage de Sugihara [1].

1  Préambule

On se donne un dessin 2D, défini comme un ensemble de segments, et on veut en déduire la structure 3D d'une scène de polyèdres dont le dessin serait une vue projective (de paramètres inconnus). Par exemple, on interprète immédiatement le dessin ci-dessous comme la vue1 d'un cube. Pourtant, nous verrons plus loin qu'il existe des variantes de cette interprétation.




Voici d'autres exemples, pour lesquels l'interprétation est moins triviale ou impossible.

Dans ce projet, on va s'intéresser à l'énumération de l'ensemble des interprétations possibles pour un dessin donné. Nous nous limiterons au cas de solides triédraux mais la méthode peut être généralisée.

2  Détail du sujet

2.1  Prétraitement des segments

Les segments seront lus dans un fichier au format suivant :
n
x11 y11 x12 y12
·
·
·
xn1 yn1 xn2 yn2

où la première ligne indique le nombre de segments et chaque ligne suivante fournit les coordonnées des deux extrémités d'un segment. Ce format est assez représentatif de ce que peut fournir un traitement d'image ou un programme de dessin et il peut contenir des imperfections dans les coordonnées.

La première étape consiste donc à en déduire une description de graphe planaire qui explicite des noeuds et des segments joignant ces sommets. On doit alors identifier des coordonnées (x,y) et (x',y') jugés suffisamment voisines pour correspondre à un même noeud. On admettra que les segments ne se touchent que par leurs extrémités, notamment, il n'y a pas de croisement et un T est décrit comme la jonction de 3 segments.

2.2  Étiquetage des segments

En référence à une interprétation 3D particulière, chaque segment de la figure peut être considéré comme la projection d'une arête concave (segment étiqueté -), d'une arête convexe (segment étiqueté +) ou d'une arête occultante. Une arête occultante est une arête convexe dont on ne voit pas l'une des faces adjacentes. Il y a alors discontinuité de la profondeur de la scène de part et d'autre du segment. Un tel segment doit être orienté et il sera étiqueté par une flèche (ou < , >), avec la convention que la moindre profondeur se trouve à droite dans le sens de la flèche.

Voici quatre étiquetages de la figure du cube, la première correspond à l'interprétation naturelle d'un cube ``flottant''. Dans les trois autres, le cube est ``collé'' à un plan de fond par l'une de ses faces cachées.

Pour une figure à n segments, il y aurait a priori 4n étiquetages possibles. Mais la réalisabilité 3D impose des contraintes.

2.3  Étiquetage des noeuds

En fonction des angles d'incidence des segments, on distingue plusieurs types de noeuds. Par exemple, sur la figure du cube, on trouve trois V, trois W et un Y. On caractérise les noeuds de la manière suivante :

- noeuds V, la troisième arête du trièdre est invisible,

- noeuds W, les trois arêtes du trièdre sont visibles, les segments sont dans un même demi-plan,

- noeuds Y, les trois arêtes du trièdre sont visibles, les segments ne sont pas dans un demi-plan,

- noeuds T, il ne s'agit pas de la projection d'un trièdre.

Un noeud T n'existe que dans la décomposition du dessin et il n'est pas la projection d'un sommet 3D. Les deux segments formant la barre horizontale du T sont colinéaires et correspondent à la projection d'une même arête 3D occultante. La barre verticale correspond à une arête qui passe derrière. Un T ne peut donc pas être la forme limite d'un W ou d'un Y. Si c'était le cas, on admet qu'un petit changement du point de vue aurait permis d'avoir un W ou un Y.

En fait, pour chaque forme de noeud, V, W, Y ou T, il n'y a que quelques combinaisons d'étiquetages des segments incidents qui peuvent correspondre à une interprétation projective. Les voici toutes, à une rotation près :




Après avoir identifié la forme de chaque noeud et ordonné ses segments incidents, on peut donc lui associer un ensemble d'étiquetages possibles.

2.4  Énumération des étiquetages globalement cohérents

La cohérence globale d'un étiquetage revient à vérifier que l'étiquetage de chaque noeud détermine la même étiquette aux deux extrémités de chaque segment. On commencera par programmer une recherche ``en force'' qui examine toutes les combinaisons sommet par sommet.

Pour réduire la complexité de cette exploration combinatoire, on peut procéder par relaxation. Cela consiste à regarder si l'ensemble des étiquetages possibles pour un noeud exclut certaines étiquette pour un segment. Par exemple, le segment central d'un W ne peut pas être une flèche. Dans ce cas, cela permet peut-être de supprimer des étiquetages pour le noeud extrémité, on devra alors regarder ce que cela implique pour ses voisins, ...On procède itérativement en gérant convenablement l'ensemble des noeuds qui doivent être examinés.

Cet algorithme converge naturellement et sa complexité globale est linéaire dans le nombre de sommets, donc relativement peu coûteuse. La recherche exhaustive reste nécessaire pour énumérer tous les étiquetages possibles mais elle travaille sur un domaine beaucoup plus petit.

3  Travail demandé

Pour ce projet, il s'agira donc de programmer les étapes de traitement décrites ci-dessus. La réalisation du prétraitement peut être différée dans la mesure où l'on dispose d'une description explicite du graphe. Pour analyser les résultats, on devra également produire la représentation graphique d'une figure étiquetée. On se contentera de programmer un graphisme rudimentaire ou alors on sortira le résultat dans un format reconnu par un utilitaire graphique existant.

Des fichiers au format ``segments'' et au format ``graphe'' pour les dessins de cet énoncé et quelques autres seront disponibles sur le serveur de l'enseignement.

4  Extension possible

L'extension logique consiste à reconstruire, si c'est possible, une structure spatiale tridimensionnelle pour chaque étiquetage.

Il faut commencer par identifier dans le graphe les circuits minimaux qui forment les contours des différentes parties visibles de la scène 3D. Pour les construire, il faut choisir un sens de parcours, par exemple le sens trigonométrique, et procéder à un parcours en profondeur un peu particulier. À chaque noeud, on suit le premier arc non encore utilisé que l'on rencontre en faisant le ``tour'' du noeud dans le sens choisi. On remarquera que tous les cycles minimaux sont parcourus dans le même sens et que l'algorithme produit également, à un moment ou à un autre, le tour extérieur, en sens inverse, de chaque composante connexe. Ce tour sera attaché au fond de la scène 3D. Finalement, chaque segment de la figure est parcouru exactement deux fois, une fois dans chaque sens.

Les profondeurs des sommets 3D sont les inconnues principales du problème de reconstruction. Elles sont liées par un certain nombre d'équations qui expriment que les faces sont planes et d'autres équations ou inéquations qui traduisent l'étiquetage des segments. Lorsque le système admet des solutions, il convient de fixer un nombre prévisible de degrés de liberté pour obtenir une représentation 3D particulière. Le système peut ne pas admettre de solution, cela peut provenir d'une erreur de placement des noeuds, auquel cas on pourrait envisager de corriger le dessin. Dans d'autre cas, c'est structurellement impossible et la réalisation de l'objet implique nécessairement des surfaces gauches.

Pour corriger un dessin, Sugihara propose une méthode basée sur un calcul de flot dans un graphe des contraintes qui permet de décider quels sommets doivent être déplacés et quelles équations déterminent leurs nouvelles positions.

Les élèves intéressés par ces extensions contacteront Philippe Chassignet pour obtenir plus de détails.

Références

[1]
K. Sugihara, Machine Interpretation of Line Drawings, MIT Press, 1986.

1
On a utilisé une perspective cavalière pour des commodités de dessin, mais que le problème est le même pour les ``vraies'' perspectives (avec points de fuite).

Ce document a été traduit de LATEX par HEVEA.