• Aucun résultat trouvé

5.2 Validation de modèle

6.1.2 Extraction multi-résolution sur voisinages emboîtés

On souhaite ici extraire une primitive sans spécifier de taille de voisinage fixe. On souhaite éga- lement trouver la taille «optimale», c’est-à-dire la taille du plus gros voisinage autour du point x0qui

ne contient que la surface que l’on souhaite extraire.

taille du voisinage Erreur d’ajutement 0 optimale taille

FIG. 6.4 – Voisinages emboîtés autour du point (schéma de gauche) et graphe de l’erreur en fonction de la taille (schéma de droite)

Principe

Le principe est ici un ajustement de primitive sur des voisinages emboîtés autour du point x0. Pour

chaque taille de voisinage, on évalue l’erreur associée à la primitive correspondante. Logiquement, si l’on se place dans la situation où :

1. le point est sur une primitive du type recherché, 2. d’autres surfaces sont présentes dans la scène,

alors l’erreur d’ajustement doit être stable tant que le voisinage ne contient que la primitive, et aug- menter rapidement lorsque le voisinage commence à englober des points appartenant à d’autres sur- faces. Cette idée est illustrée sur la figure6.4. La figure6.5montre cette notion sur un cas réel. Les graphes de la figure6.6, qui correspondent à l’exemple de la figure6.5, montrent également de ma- nière claire qu’il existe une partie stable au niveau des paramètres estimés et donc au niveau de l’erreur d’ajustement.

162 CHAPITRE 6. EXTRACTION DE PRIMITIVES GÉOMÉTRIQUES 0 20 40 60 80 100 120 0 200 400 600 800 1000 1200 1400 1600 Erreur quadratique Nombre de points

FIG. 6.5 – Présentation du principe sur une scène réelle.

A gauche : la scène «CGP» (issue du scanner Cyrax, société Cyra) et le point cliqué par l’utilisateur (indiqué par le «+»).

A droite : Graphe de l’erreur d’ajustement (erreur quadratique) des points par rapport au cylindre en fonction de la taille du voisinage (en nombre de points) sur la situation à gauche. Ici chaque taille a été testée. Dans l’algorithme multi-résolution développé, on ne teste en fait que quelques tailles (indiquées par des «+» sur le graphe).

200 250 300 350 400 450 500 550 600 0 200 400 600 800 1000 1200 1400 1600

ParamŁtre : Rayon du cylindre

Nombre de points 11500 12000 12500 13000 13500 14000 14500 15000 0 200 400 600 800 1000 1200 1400 1600 ParamŁtre a Nombre de points 2.52 2.54 2.56 2.58 2.6 2.62 2.64 2.66 2.68 2.7 0 200 400 600 800 1000 1200 1400 1600

ParamŁtre: angle Theta

Nombre de points

FIG. 6.6 – Graphes des paramètres du cylindre en fonction de la taille de voisinage sur l’exemple de la figure6.5. le rayon (à gauche), le paramètre a (au centre), le paramètreθ(à droite).

6.1. EXTRACTION LOCALE D’UNE PRIMITIVE DE TYPE FIXÉ 163

Algorithme

Comment repérer le saut et trouver une taille «optimale» ? Ceci met en œuvre un procédé d’ajus- tement multi-résolution.

On procède en deux phases :

1. expansion jusqu’à détection du saut, puis 2. dichotomie.

La taille optimale est cherchée entre deux tailles (nombres de points) Tmin et Tmax. L’algorithme est

164 CHAPITRE 6. EXTRACTION DE PRIMITIVES GÉOMÉTRIQUES

Pseudo-code de l’algorithme d’extraction locale multi-résolution Phase préliminaire

VTmax← Recherche des Tmaxplus proches voisins du point x0dans le nuage

(et tri simultané de ces Tmaxpoints en fonction de la distance à x0)

Pré-traitement (estimation des normales) de VTmax si besoin

Initialisation ¯

e ← 0 (erreur moyenne sur les tailles testées jusqu’à présent)

Continuer← Vrai

Phase1← Vrai (Si vrai : phase d’expansion, si faux : dichotomie)

i ← 0 T ← Tmin

Tant que (Continuer = Vrai) faire

VT ← T premiers points de VTmax

Ajustement d’une primitive sur VT (utilisation éventuelle des normales)

Evaluation de l’erreur quadratique e (sur VT)

¯

e ← (i ¯e + e)/(i + 1)

Si (Phase1= Vrai) faire (Phase d’expansion) Si (e <αe) faire¯

[Tm, TM] ← [T, 2T ]

T ← TM

Si (T > Tmax) faire : Continuer← faux

Sinon

(Fin de la phase d’expansion, début de la phase de dichotomie) Phase1 ← faux TM← T T ← (Tm+ TM)/2 Fin Si Sinon (Phase de dichotomie) Si (e <αe) faire :¯ Tm← T Sinon faire : TM← T Fin Si

Si (TM− Tm<∆Tmin) faire : Continuer ← faux T ← (Tm+ TM)/2

Fin Si

i ← i + 1

Fin Tant que

Retourner la taille optimale T et la primitive correspondante (paramètres, erreur d’ajustement, incer- titude sur les paramètres, sous-nuage de points)

Entrées : nuage de N points, point x0, type de primitive.

Sorties : Primitive et sous-nuage associé

6.1. EXTRACTION LOCALE D’UNE PRIMITIVE DE TYPE FIXÉ 165

Choix de Tmin Le choix de la taille Tmin(en nombre de points) est important. Implicitement, on suppose que si le point se trouve bien sur la primitive de type recherché, il y a au moins Tminvoisins du point qui se trouvent sur cette primitive.

D’autre part, Tmin doit être suffisant pour éviter le caractère aléatoire lié aux petites tailles (se

reporter à la discussion de la section6.1.2, page167).

Dans les tests de validation de l’algorithme d’extraction de ligne de tuyauterie présenté section3.2, page51, Tmina été fixé à la valeur 100.

Erreur d’ajustement Dans notre application, l’erreur d’ajustement utilisée est la moyenne quadra- tique des distances des points à la primitive, encore appelée résidu quadratique moyen, définie par :

e(t) = s 1 t x∈V

t d2(x, Primitive(V t))

où Vt désigne le voisinage de t points, c’est-à-dire l’ensemble des t plus proches voisins du point

x0. Nous désignons encore cette erreur d’ajustement par le terme : erreur quadratique. Cette quan-

tité semble appropriée ici en ce qu’elle est très sensible à la présence de points aberrants. On peut remarquer que l’estimation de la primitive de moindres carrés utilise cette fonction comme fonction coût.

Voisinages Les voisinages utilisés ici sont définis comme l’ensemble des T plus proches voisins (au sens de la norme euclidienne de R3) du point sélectionné. La taille T (en nombre de points) d’un tel voisinage varie entre des valeurs minimum et maximum, Tminet Tmax. L’intérêt de cette définition est d’être indépendante des dimensions de la primitive (diamètre, longueur, ...), par opposition à un rayon de sphère de voisinage fixe. Par contre, ceci dépend de la densité de points locale.

En pratique, pour l’extraction de cylindre initial de l’algorithme de la section3.2, page51, les tailles Tminet Tmaxont été fixées à 100 points et 2000 points.

Procédé Il est coûteux de réaliser l’ajustement pour chaque taille entre Tminet Tmax. Aussi procède- t-on un peu plus grossièrement en ne considérant que quelques valeurs de tailles (Tminmultiplié par des puissances de 2, le tout restant inférieur à Tmax). A l’aide d’un critère sur l’erreur, on repère la taille où l’erreur a augmenté de manière significative. On obtient ainsi un encadrement de la taille optimale. Ensuite, on souhaite être plus précis : une valeur de taille plus précise est évaluée par dichotomie dans l’intervalle obtenu. La figure6.7présente une illustration du procédé.

Construction des voisinages La construction des voisinage emboîtés se fait comme suit :

– Recherche des Tmaxplus proches voisins du point. Ceci fait intervenir un tri des Tmaxpoints par ordre croissant de la distance au point (algorithme page158).

– Pour déterminer les T plus proches voisins (avec T < Tmax), il suffit de prendre les T premiers éléments de la liste triée des Tmaxpoints.

L’intérêt de ceci est que l’on effectue la recherche de voisins qu’une seule fois.

Pré-traitement Les procédés d’initialisation correspondant à l’ajustement de certaines primitives nécessitent l’estimation des normales estimées en chaque point (voir chapitre4). Ceci est également fait une seule fois lors du pré-traitement, pour les Tmax points (voir algorithme d’estimation en an- nexeB).

166 CHAPITRE 6. EXTRACTION DE PRIMITIVES GÉOMÉTRIQUES 0 10 20 30 40 50 60 70 80 90 100 200 300 400 500 600 700 800 Erreur quadratique Nombre de points

FIG. 6.7 – Résultat sur la scène «CGP». A gauche : graphe des erreurs pour les tailles testées lors du procédé multi-résolution. La ligne brisée suit la phase d’expansion puis la phase de dichotomie jusqu’à la taille optimale (les sommets de la ligne brisée sont les mêmes que les «+» apparaissant dans la figure6.5). A droite : le cylindre extrait de la scène à l’issu du procédé multi-résolution.

Croissance De même que pour l’algorithme précédent, il est possible d’effectuer une croissance de la primitive obtenue. Ceci peut être souhaité dans certains cas.

Valeurs des paramètres Pour l’extraction de cylindre utilisée dans le chapitre 3, les valeurs sui- vantes ont été choisies pour les paramètres : Tmin=100 points, Tmax=2000 points,∆Tmin=25 points,

α=1.5, Nombre de voisins pour l’estimation des normales : 10. Résultats et discussion

Résultats Cette méthode a été implémentée pour chacune des primitives libres du chapitre 4. Les figures6.8,6.9et6.10montrent des exemples pour le tore, le cône et la sphère. Dans la figure6.10, il

FIG. 6.8 – Extraction locale d’un tore dans la scène «CGP» (les extrémités du tore n’ont pas été calculées ici).

s’agit d’une sphère servant au recalage, que l’on place dans la scène. Notons que puisque l’on connaît précisément le rayon de ces sphères, on pourrait également réaliser une extraction ou un ajustement de sphère contrainte (de rayon fixe).

6.1. EXTRACTION LOCALE D’UNE PRIMITIVE DE TYPE FIXÉ 167

FIG. 6.9 – Extraction locale d’un cône.

FIG. 6.10 – Extraction locale d’une sphère.

Cette méthode est utilisée avec les cylindres pour l’étape du «cylindre initial» de l’algorithme d’extraction de lignes de tuyauterie du chapitre 3, section3.2, page51.

Discussion

Choix de Tmin La primitive construite par ce procédé est correcte, tant que la valeur de Tminn’est pas trop grande. Plus précisément, tant que les Tminplus proches voisins du point x0se trouvent sur la

même primitive. Ceci est problématique dans des zones où la densité de points est faible et où il existe des surfaces proches. Dans ce cas, il se peut que le paramètre Tminne permette pas de sélectionner des points appartenant seulement à la primitive recherchée.

En fait, deux types de cas à problèmes se produisent concernant cette taille :

– Il existe des cas pour lesquels une telle taille Tminest trop grande. La situation est ici le cas où

la taille optimale est plus petite que Tmin. Vu que l’on cherche les valeurs plus grande que Tmin,

on ne peut pas trouver la bonne valeur de T . La primitive peut ainsi être complètement fausse. – Si Tminest trop petite (e.g., de l’ordre de 10 points), l’algorithme peut détecter un saut de l’erreur

quadratique avant la taille optimale. La primitive peut là aussi être complètement fausse. En effet, prenons l’exemple d’une zone très dense, contenant un cylindre de gros diamètre. Dans ce cas, les voisinages les plus petits représentent un étalement angulaire très faible sur le cylindre, ce qui fait que l’on peut encore se trouver dans la zone aléatoire, et stopper de manière précoce. Plusieurs méthodes sont envisageables pour traiter ce problème :

1. utiliser une valeur de Tminfaible en changeant le critère de détection du saut. Il s’agit de dépasser la zone aléatoire, par exemple en faisant intervenir l’incertitude sur les paramètres du modèle

168 CHAPITRE 6. EXTRACTION DE PRIMITIVES GÉOMÉTRIQUES

dans le critère d’arrêt.

2. utiliser des méthodes deδ-connexité, ou de maillage surfacique pour déterminer quels sont les vrais voisins au lieu de considérer des voisinages sphériques. Notons que ce procédé ne permet pas de traiter tous les cas !

3. faire appel à des méthodes d’extraction au sein même des voisinages sphériques (éventuelle- ment avec des points aléatoires). L’idée est ici de considérer que l’hypothèse H’ n’est peut-être pas vérifiée sur ce voisinage et de considérer des méthodes du6.5.

A propos du critère de détection du saut Le critère pour stopper la phase montante est basé sur une heuristique et la valeur paramètreαarbitraire. La difficulté ici est que la forme du graphe de l’erreur en fonction de la taille n’est pas la même suivant la primitive et les surfaces qui se trouvent proches.

Cependant, on peut envisager d’utiliser d’autres informations que l’écart-type e des écarts pour valider ou invalider le modèle à chaque taille (section5.2). Cette possibilité n’a pas encore été testée.