• Aucun résultat trouvé

3.3 Modélisation d’une ligne de tuyauterie

3.3.1 Modélisation directe avec cylindres et tores

L’objectif est ici de segmenter les points d’une ligne de tuyauterie en plusieurs primitives géo- métriques, afin de construire un modèle plus proche du modèle CAO final que celui construit dans l’algorithme présenté au3.2.

Nous nous sommes pour l’instant limités au cas de lignes de section constante. Ceci signifie que les surfaces présentes sont des cylindres et des portions de tores circulaires.

D’autre part, l’objectif final est qu’il y ait une continuité le long de la ligne. Ceci implique que les primitives se suivent et que chaque primitive a une longueur déterminée. Plus précisément, la jonction entre les primitives a ici plus d’importance que pour la méthode d’extraction du3.2.

Les spécificités de cette méthode par rapport à la méthode présentée section3.2sont donc de deux types :

– différentes primitives sont ajustées (ce qui nécessite un critère de sélection entre les deux pri- mitives),

– les extrémités de chaque primitive sont ajustées (ce qui est effectué par une méthode de crois- sance de surface).

Notons pour finir que l’application actuelle a été développée pour traiter des scènes comportant une ligne dégagée. En particulier, ceci permet de recourir à des méthodes plus simples en ce qui concerne la croissance et l’arrêt de la propagation.

Le principe général de l’application développée est le même que celui de l’application présentée à la section3.2.

Détail des différentes étapes

La construction du cylindre initial est identique à celle de la méthode présentée au 3.2. Par contre, il s’agit ensuite de déterminer les extrémités du cylindre initial sur la ligne de tuyauterie. En particulier, on a vu au 3.2 que le cylindre initial obtenu n’avait en général pas les dimensions maximales. C’est pourquoi on applique une croissance au cylindre initial. Le principe de la croissance est le suivant.

5Le premier algorithme a été développé avec un étudiant de l’option Robotique (Sébastien Vincent) lors de son projet

de fin d’études en 1999-2000. Cet algorithme a donc été développé avant l’algorithme d’extraction de lignes de tuyauterie. Les problèmes dont il est question plus loin ont fait que nous n’avons pas jugé souhaitable d’adapter cet algorithme à un environnement complet.

Le second algorithme a été développé plus récemment avec une stagiaire provenant de l’Université du Liban à Tripoli (Nouha Mourad).

3.3. MODÉLISATION D’UNE LIGNE DE TUYAUTERIE 83

Croissance du cylindre initial La phase de croissance consiste à rajouter les points qui se trouvent à une distance de ce cylindre inférieure à un certain seuilδ. Ceci revient à considérer tous les points de la scène qui se trouvent à l’intérieur d’un manchon cylindrique d’épaisseur 2δ(Figure3.36).

FIG. 3.36 – Croissance du cylindre

Le premier point est de savoir quelle valeur donner à ce paramètreδ. Or, la construction du cylindre initial a permis de trouver un ensemble de n points, ainsi qu’un cylindre

C

ajusté sur cet ensemble de points, dont on peut évaluer la qualité d’ajustement par le résidu quadratique moyen e, défini par l’équation3.1. L’idée est alors de choisir une épaisseur proportionnelle à e :

δ= ke

De plus, si l’on suppose que les écarts radiaux disuivent une loi normale centrée6,

N

(0, e2), les di/e

suivent une loi

N

(0, 1). On peut alors choisir un k dans une table de loi normale tel que la probabilité

qu’un point soit dans le manchon soit de 95%, ou 98% (k0.95= 1, 96 pour 95%). Ceci revient à choisir un manchon cylindrique d’épaisseurδ= k0.95e.

Le second point consiste à déterminer la longueur du manchon cylindrique. Dans l’application développée, où l’on suppose que la ligne est seule, cette longueur dépend uniquement des points se trouvant dans le manchon.

Propagation

Création du nouveau voisinage La création de voisinage est identique à celle dans l’algorithme d’extraction de la section3.2. Le principe est de considérer les points dans un volume dans la direction souhaitée. On peut choisir pour cela une demi-sphère comme pour l’algorithme d’extraction précé- dent. Cependant, le résultat de la croissance étant un peu approximatif (d’autant plus dans le cas de jonctions lisses comme une jonction «tube-coude»), on va souvent un peu trop loin. Ceci nous mène à envisager plutôt un voisinage isotrope, c’est-à-dire une sphère.

Ajustement Dans sa version actuelle, l’algorithme met en œuvre l’ajustement de surfaces contraintes de deux types :

– «Tore après cylindre» (Figure3.37),

– «Cylindre sécant de rayon fixé» (Figure3.38), dont nous donnons une brève description ici.

6l’espérance des d

ipeut être nulle car la distance d d’un point au cylindre est signée : elle est positive si le point est à l’extérieur, et négative si le point se trouve à l’intérieur. Il en est de même pour le tore. Ceci est décrit à la section4.3.2.

84 CHAPITRE 3. SEGMENTATION DE LIGNES DE TUYAUTERIE

FIG. 3.37 – «Tore après cylindre»

Un «tore après cylindre» est un tore qui continue de manière tangentielle un cylindre donné (son petit rayon est fixé et l’un des points du cercle directeur également).

FIG. 3.38 – «Cylindre sécant de rayon fixé»

Un «cylindre sécant de rayon fixé» est un cylindre dont l’axe est sécant avec l’axe d’un autre cylindre et de même rayon (Figure3.38).

La définition ainsi que la méthode d’ajustement de ces deux primitives sont présentées en détails au chapitre4. Retenons ici que l’ajustement de ces primitives nécessite l’estimation de la normale à la surface en chaque point.

Pour aider à visualiser comment se comportent ces primitives, on peut caractériser la position de ces primitives par rapport à l’axe de la primitive précédente par des types de liaison dynamique utilisées en mécanique. Ainsi, un «tore après cylindre» forme une liaison de type «pivot glissant» ; et le «cylindre sécant» une liaison de type «glissière + rotule» par rapport à l’axe du cylindre précédent. Ceci signifie qu’une certaine souplesse est autorisée sur la position de ces primitives le long de l’axe du cylindre précédent. On parle ici seulement de la position est non de la forme (taille) des primitives.

La sélection entre ces deux modèles se fait sur le critère suivant :

– après un tore, on ajuste un cylindre sécant avec le cylindre précédant le tore

– après un cylindre sécant, on ajuste un «tore après cylindre». S’il se trouve que le tore obtenu ne semble pas réellement être un tore (en pratique si R > 20r), on le remplace par un cylindre sécant.

Pourquoi ce critère R > 20r ? La lecture de tables de coudes standards [TC89] semble indiquer une valeur limite de cet ordre sur le ratio grand rayon sur petit rayon des coudes.

D’autre part, afin d’améliorer l’ajustement d’une séquence «cylindre-tore-cylindre» déjà construite, la primitive «tore entre cylindres» a été introduite (Figure3.39). Cette primitive est un tore qui fait la jonction entre un cylindre et un «cylindre sécant de rayon fixé». Après l’ajustement de ce «tore entre

3.3. MODÉLISATION D’UNE LIGNE DE TUYAUTERIE 85

FIG. 3.39 – Séquence cylindre-tore-cylindre

cylindres», l’affectation des points à chaque primitive est mise à jour (voir la définition précise de cette primitive au chapitre4).

Croissance

Cas du cylindre La méthode de croissance du cylindre sécant est la même que celle décrite pour le cylindre initial, excepté le fait qu’elle est effectuée dans une seule direction (direction de propagation).

Cas du tore La méthode de croissance du tore est l’équivalent de celle du cylindre, mais au niveau angulaire. En effet, on ajoute de la même façon les points qui se situent à une distance inférieure à ke du tore.

Critères d’arrêt de la propagation De la même manière que pour l’algorithme d’extraction, les itérations précédentes s’arrêtent :

– si on ne trouve plus assez de points dans le voisinage, ou/et

– si l’erreur d’ajustement est trop élevée. Plus précisément, si le résidu courant est supérieur au résidu du cylindre initial multiplié par un certain facteur (égal à 10 en pratique).

Résultats et discussion

Les figures3.40,3.41, et3.42montrent quelques résultats de cet algorithme.

La discussion concernant la construction du cylindre initial a déjà été présentée à la section3.2.6, page74.

Concernant la propagation, les résultats ont permis de valider la méthode d’ajustement des primi- tives tore et cylindre contraints, ainsi que la possibilité de réaliser la modélisation avec cylindres et tores contraints de cette façon.

86 CHAPITRE 3. SEGMENTATION DE LIGNES DE TUYAUTERIE

FIG. 3.40 – Ligne de tuyauterie reconstruite à l’aide de cylindres et de tores

FIG. 3.41 – Résultat sur une scène constituée uniquement de cylindres

Cependant, on constate expérimentalement que la méthode est très sensible au point sélectionné au départ. En effet, le résultat obtenu avec un point cliqué à un bout de la tuyauterie est rarement le même que le résultat obtenu avec un point cliqué à l’autre bout. Aussi la qualité du résultat est-elle très variable, comme l’illustre la figure3.42. En particulier, il existe même des cas où on ne parvient pas à suivre la ligne en entier.

Cette instabilité a plusieurs origines.

1. La qualité du cylindre initial dépend du point sélectionné : s’il s’agit d’une zone où la partie cylindrique est longue, le cylindre initial est estimé sur un grand nombre de points, et on peut attendre une estimation précise de ses paramètres ; s’il s’agit d’un cylindre court, les paramètres sont estimés avec moins de précision.

2. Les contraintes utilisées sont fortes, et ceci du fait même de la définition des primitives. Ceci a pour conséquence que l’algorithme peut difficilement «rattraper» des écarts sur une primitive lors de la suite de la propagation. Au contraire, les erreurs tendent à se propager en s’amplifiant le long de la ligne de tuyauterie.

3. Enfin, la croissance est la plupart du temps imparfaite. D’une part, on ajoute des points par rapport à une primitive estimée localement, ce qui produit potentiellement des erreurs. D’autre part, comme cela a été mentionné au chapitre2, la jonction entre tube et coude est une jonction lisse. Ceci implique que la croissance d’un cylindre sur le coude qui suit déborde sur le tore,

3.3. MODÉLISATION D’UNE LIGNE DE TUYAUTERIE 87

FIG. 3.42 – Caractère instable de l’algorithme de modélisation : selon le point de départ spécifié, le résultat peut être fort différent.

comme l’illustre l’exemple de la figure3.43. Il résulte de ces erreurs de position que le voisinage construit pour la primitive suivante n’est pas très bon.

FIG. 3.43 – Exemple de croissance qui va trop loin au niveau d’une jonction lisse. A gauche : la scène et le cylindre construit ; à droite : les points considérés dans la croissance du cylindre.

On vient de voir que la méthode proposée est sensible au point initial. Cependant, si la séquence de primitives qui composent la ligne a été correctement trouvée, on peut envisager de raffiner globalement (et non plus localement) cette séquence sur les points. Ceci correspond à considérer une primitive composée, formée de plusieurs primitives simples. L’ajustement de ce type de primitive est un peu plus détaillé au chapitre 4, section4.5.5. A priori, la principale difficulté pour ajuster des primitives composées réside dans les valeurs initiales. Dans cette optique, ce qui a été fait dans cette partie peut être perçu comme un moyen de fournir de telles valeurs initiales.

88 CHAPITRE 3. SEGMENTATION DE LIGNES DE TUYAUTERIE

La sélection de modèle entre tore et cylindre décrite ici est un peu sommaire et ne correspond pas toujours à la réalité. En effet, il existe des tuyauteries qui sont effectivement constituées de cylindres sécants, et qui produisent par cet algorithme des tores qui vérifient le critère sur le ratio du grand rayon sur le petit rayon. C’est le cas de la ligne calorifugée de la figure3.41. Une approche qui paraît plus prometteuse est de réaliser une sélection de modèle après ajustement des deux primitives «cylindre sécant de rayon fixe» et «tore après cylindre» (voir section5.1), tout en gardant la contrainte R < 20r pour éliminer les tores douteux.

Une autre critique que l’on peut faire à ce procédé est qu’il ne garantit pas de trouver les orientations des parties rectilignes. Or, ces orientations devraient pouvoir être déterminées, soit à partir de l’image de Gauss (qui est estimée ici), soit par une méthode d’extraction des cylindres principaux (par exemple par une méthode d’extraction globale du type de celles décrites au chapitre 6). Il paraît notamment possible d’exploiter l’image de Gauss de manière plus globale.

Enfin, a posteriori, l’algorithme de modélisation étant destiné à être utilisé après la phase d’ex- traction, il semble dommage de ne pas y avoir exploité toute l’information obtenue à l’issue de la phase d’extraction. Nous avons tenté de combler ce vide à travers la méthode que nous présentons maintenant, qui fait le lien entre extraction et modélisation.