Organisme d'accueil : Laboratoire Jean Kuntzmann 2ème année mathématiques-informatique Stage d'excellence Année 2011/2012 Rapport de stage Modélisation géométrique et CAO Calcul géométrique et géométrie différentielle Stagiaire : BRENIER ROXANE Maitre de stage : Mr SZAFRAN NICOLAS Tuteur universitaire : Mme DARRACQ MARIE-CECILE Période de stage : 04/06/2012 13/07/2012
Table des matières I. Introduction... 3 II. Présentation du laboratoire Jean Kuntzmann.....4 (a) Locaux...4 (b) Historique et présentation...4 (c) Activités et thèmes de recherche...4 III. Projet et travail réalisé....5 (a) Courbes de Bezier...5 (b) Interpolation et influence du paramétrage...7 (c) Schémas de subdivision...9 (d) Généralisation des procédés d'interpolation sur une surface...13 IV. Bilan personnel... 15 2/15
I.Introduction Mon stage s est déroulé dans le département géométrie et image du laboratoire Jean Kuntzmann pour une période de 6 semaines. Ce département s'intéresse par exemple à la représentation d'image 3D sur l'ordinateur. L objectif de mon stage était de découvrir le monde de la modélisation géométrique, de la CAO et du calcul géométrique. Le stage s'est déroulé en plusieurs étapes que nous détaillerons dans la suite : Apprentissage du logiciel Scilab Découverte et tracés de courbes de Bezier Interpolation avec des courbes de Bezier Influence du paramétrage (équidistant, cordal, itération) Réflexion sur les schémas de subdivision (convergence et régularité de la courbe résultat en fonction du masque A) Généralisation des procédés sur une surface Bilan (du travail réalisé et avis sur le stage) Ce rapport présente, dans une première partie, le laboratoire où s'est déroulé le stage. Dans un second temps, une description du projet et les notions nécessaires à sa compréhension. Ensuite, nous verrons en détail le travail effectué avec son organisation et ses difficultés. 3/15
II. Présentation du laboratoire Jean Kuntzmann (a) Locaux Le laboratoire LJK comporte trois sites différents. Mon stage s'est déroulé sur le site du campus de Saint-Martin-d'Hères. (b) Historique et présentation Le laboratoire Jean Kuntzmann est un laboratoire de Mathématiques Appliquées et d'informatique. Il doit son nom à Jean Kuntzmann (1912-1992) pionnier de l'informatique et des mathématiques appliquées à Grenoble. Ce laboratoire est associé au CNRS, à l'ujf, à l'inp Grenoble, à l'inria. (c) Activités et thèmes de recherche Le laboratoire est structuré en 3 départements : - Géométrie-Image regroupe des équipes de modélisation géométrique, de traitement, d'analyse et de synthèse d'images et de vidéos et vision par ordinateur. - Le département Modèles et Algorithmes Déterministes centre ses activités sur la modélisation (par systèmes dynamiques, par équations aux dérivées partielles) et sur des outils pour le calcul numérique et symbolique. - Le département Probabilités/Statistique regroupe quant à lui des probabilistes, statisticiens et spécialistes de l'analyse des données et du traitement du signal. J'ai réalisé mon stage dans le département géométrie-image et plus spécifiquement avec l'équipe MGMI (Modélisation Géométrique & Multirésolution pour l'image). Cette équipe mène des projets de recherche et enseigne dans plusieurs filière à l'ujf (Université Joseph Fourier); notamment en Master 1 et 2 de mathématiques, informatique et mathématiques appliquées. Les principaux thèmes de recherche pour ceux qui sont intéressés : http://wwwljk.imag.fr/mgmi/recherche.html 4/15
III. Projet et travail réalisé (a) Courbes de Bezier Les courbes de Bézier sont des courbes polynomiales paramétriques décrites pour la première fois en 1962 par l'ingénieur français Pierre Bézier qui les utilisa pour concevoir des pièces d'automobiles à l'aide d'ordinateurs, notamment pour représenter la carrosserie. Le problème est le suivant : à partir d'un certain nombre de points appelés points de contrôle, on voudrait tracer une courbe la plus régulière possible. Pour cela, on se place dans la base de Bernstein définie comme suit : Par exemple pour n = 2, B0(t) = (1-t)2 B1(t) = 2t(1-t) B2(t) = t2 On a des propriétés remarquables sur cette base : - la somme des Bi(t) est toujours égale à 1 - pour tout t appartenant à [0,1], Bin(t) est positif Ceci signifie qu'une courbe définie dans la base des polynômes de Bernstein est dans l'enveloppe convexe. A partir de points de contrôle Pi, on veut définir une courbe C(t) telle que : C(t) = Pi * Bin(t) Pour cela on applique l'algorithme de De Casteljau. Soient P 1,...,Pn des points de contrôle définissant un polygone de contrôle. L'algorithme consiste à subdiviser l'intervalle pour obtenir un nouveau point qui se rapproche de la courbe désirée : En prenant t = ½ on obtient : 5/15
On voit qu'après seulement trois itérations, les points sont proche de la courbe finale. A l'étape k, on a 2k-1 +1 points de contrôle ce qui permet de converger très rapidement vers la courbe. Nous avons réalisé un scripte Scilab permettant de dessiner une courbe de Bezier en utilisant l'algorithme de De Casteljau. Exemples de tracés obtenus sous Scilab : Dans la suite du stage, nous avons découvert ce qu'était l'interpolation par une courbe de Bezier, ce que je vais exposé dans cette nouvelle partie. 6/15
(b) Interpolation et influence du paramétrage Les données sont un ensemble de points Q0,...,Qn de R2 et un paramétrage t0,...,tn.. On souhaite obtenir la courbe de Bezier interpolant (approchant) ces points en fonction du paramétrage donné. C'est ce que nous avons réalisé; les résultats seront exposés sous forme d'exemples. Nous avons étudié spécifiquement trois paramétrages différents : - ti = i/n (appelé paramétrage équidistant) - ti = (i/n)^2 - t0 = 0; di = d(qi-1,qi) = Qi-1Qi et et d = di ti = ti-1 + di/d (appelé paramétrage cordal) Nous avons comparé les différents paramétrage : les croix symbolisant les points à interpoler (4 ici) paramétrage équidistant (bleu) comparé à (i/n)2 (vert) paramétrage équidistant (vert) comparé au paramétrage cordal (bleu) On peut remarquer que le paramétrage cordal donne une courbe plus régulière (dérivable) que le paramétrage équidistant. Il permet en effet une meilleur interpolation lorsque la distance entre les points beaucoup; l'exemple ci-dessus à droite l'illustre bien ( (0;0) (0.5;0.8) (0.55;0.8) (1;0) étant les points interpolés). Cependant, quand les distances entre les points sont du même rapport, les deux paramétrisations se valent quasiment (exemple ci-dessous) : 7/15
Pour la suite, nous avons donc gardé la paramétrisation cordal qui donne de meilleurs résultats dans tous les cas. Pour améliorer encore l'interpolation de points par une courbe de Bezier, nous avons implanter un nouveau paramétrage. Un paramétrage t0,...,tn est dit normalisé si la vitesse de la courbe obtenu avec celui-ci a une vitesse constante. En général, il est impossible de trouver un tel paramétrage. Cependant, on peut faire en sorte que la longueur de la courbe C(t) entre les points ti-1 et ti soit proportionnelle à ti ti-1. Pour réaliser ce nouveau paramétrage sous Scilab, nous avons utilisé une méthode itérative qui approxime le paramétrage décrit ci-dessus (pour initialiser le paramétrage, on a utilisé le paramétrage cordal). Après dix itérations du procédé voici le résultat : Légende: - courbe bleu = paramétrage normalisé (itération) - courbe noir = paramétrage cordal Points interpolés: - à droite : (0;0) (0.5;0.8) (0.55;0.8) (1;0) - à gauche : (0;0) (0;0.2) (1;0.2) (1;0) 8/15
Pour les courbes bleus, en observant les valeurs nous avons bien trouvé que la vitesse entre deux points du paramétrage (intégrale entre ti et ti-1 de la norme de la vitesse) était proportionnelle à ti ti-1. Le paramétrage joue un grand rôle dans la représentation d'une courbe sur un ordinateur; plus la courbe est régulière, meilleur est le paramétrage choisit. Nous concluons qu'il faut utiliser le paramétrage normalisé parmi ceux explicités dans le rapport. Il faut savoir que l'interpolation par les courbes de Bezier n'est pas la seule (Lagrange, B-splines, ) et selon le cas de figure, il serait intéressant de comparer les résultats obtenus. Je vais maintenant présenter ce qu'est un schéma de subdivision, ainsi que les recherches que nous avons pu mener sur ce sujet. (c) Schémas de subdivision Les schémas de subdivision sont très importants dans les sciences et l'ingénierie; notamment utilisés en compression d'image et en analyse multirésolutionnelle (sujet traité dans le département Modélisation Géométrique & Multirésolution pour l'image). L'idée des schémas de subdivision est la suivante : on combine un polygone de contrôle choisi au départ avec un ensemble de coefficients A = (a1,...,an) appelé masque du schéma de subdivision, ce qui détermine un nouveau polygone de contrôle, et on itère jusqu'à ce que le résultat soit satisfaisant. Les points de controles à l'étape k + 1 sont donnés par : C(p+1)2i = a2j*c(p)i-j C(p+1)2i+1 = a2j+1*c(p)i-j (k) On appelle alors S le schéma de subdivision qui à partir des points {C } donne les {C C'est une suite définie comme suit : (k+1) }. C(p) = SC(p-1) =... = SpC(0) On s'est intéressé aux conditions sur le masque a pour que la courbe obtenue soit 1 convergente et régulière (continue, dérivable, C...). Pour cela, nous avons étudié l'article de Nira Dyn (http://www.math.tau.ac.il/~niradyn/papers/subincagd.pdf ). Voici quelques définition nécessaires à la compréhension : - Soit S un schéma de subdivision et A son masque. Le polynôme caractéristique de S est : - Soit S un schéma de subdivision. Il existe S1 un schéma de subdivision tel que dfk = S1dfk 1 où. 9/15
Ce nouveau schéma S1 est appelé schéma dérivé de S. Je vais exposé les résultats les plus importants sur la convergence et la régularité du schémas de subdivision S au masque A = (a1,...,an) associé. Résultats sur la convergence de S : Une condition nécessaire à la convergence de S et que son masque A associé vérifie les conditions suivantes : a2j = 1 et a2j+1 = 1 Ce résultat permet d'éliminer les schémas trivialement non convergent. Un résultat intéressant est le suivant : le schéma de subdivision S est uniformément convergent si et seulement si (1/2)*S1 converge uniformément vers la fonction nulle quel que soit l'ensemble de points de contrôle initiaux f0. Dans la pratique, ce résultat permet de réduire le problème à un schéma de subdivision plus simple. Résultat sur la régularité : Je vais énoncé un seul résultat très important dans ce compte-rendu; il permet d'obtenir à partir d'un schéma convergent, une courbe interpolante avec la régularité souhaitait. Soit un schéma de subdivision dont le polynôme caractéristique est de la forme : Soit le schéma de subdivision Q dont le polynôme caractéristique est q(z). Si Q est un schéma de subdivision convergent alors les courbes générées par S sont de classe C k. Cependant, pour avoir une courbe avec une régularité élevée, on utilise souvent des schémas de subdivision non linéaire. Nous avons réalisé sur scilab une implémentation d'un algorithme qui à partir d'un masque A et de points de contrôles Pi, trace une courbe. Pour chaque étape de subdivision, nous avons tracé le polygone de contrôle correspondant. Nous avons pu vérifier au travers d'exemples les théorèmes cités précedemment. Exemple1 : A = ( 0.4, 0.5, 0.5, 0.4 ) On voit que la condition nécessaire de convergence sur le masque n'est pas vérifiée et que cela entraîne effectivement la non convergence du schéma de subdivision. 10/15
Exemple2: A = ( 1, 1 ) On a convergence du schéma (critère nécessaire satisfait) mais on peut voir que la courbe ne sera jamais dérivable, quelques soient le nombre d'itérations effectuée. On peut également remarquer que la courbe obtenue interpole les points de contrôles. Exemple3 : A = ( 0.25, 0.75, 0.75, 0.25 ) Ce schéma de subdivision est classique et est obtenue grâce à l'algorithme de Chaikin. On constate bien sur le graphique que : C(p+1)2i = (3/4)C(p)i-1 + (1/4)C(p)i C(p+1)2i+1 = (1/4)C(p)i-1 + (3/4)C(p)i Ce schéma converge très rapidement vers une courbe lisse (3 itérations effectué sur le graphe). Quand on applique ce masque à 4 points, comme ci-dessus, on l'appelle une spline de degré 2. Les splines étant des polynômes par morceaux qui remplacent souvent les courbes de Bezier car elles permettent de tracer une courbe à partir d'un grand nombre de points sans élever le degré du polynôme. 11/15
Exemple4 : A = ( 0, - 0,0625, 0, 0.5625, 1, 0.5625, 0, - 0,0625 ) La encore, la courbe converge (3 itérations), est lisse et interpole les points. En effet, un autre moyen d'interpoler est d'utiliser les schémas de subdivision. Le schéma S est interpolant si et seulement si C 2i+1 = 1 ou C 2i = 1. Beaucoup de recherches portent sur les schémas de subdivision interpolant à 4 points à partir de B-Splines et sur le fait que la courbe soit plus ou moins esthétique. Cas général : A = ( 0, - ω, 0, ω + 1/2, 1, ω + 1/2, 0, - ω ) Pour ce type de schémas, nous avons d'autres résultats de convergence et de régularité qui sont les suivants : (p+1) (p+1) - ω < 1/2 condition nécessaire de convergence - 0 < ω < 1/4 condition nécessaire et suffisante pour une courbe C1 1 Dans l'exemple 4, on a choisi ω = 1/16, la courbe obtenue est donc C. Le schéma à 4-points est intéressant car applicable à un plus grand nombre de points et où chaque point à l'étape k+1 dépend de 4 points de l'étape k. Comme dans le cas de l'interpolation avec des courbes de Bezier, on peut généraliser le schéma à 4 points par des paramétrisations non-uniforme. On change la paramétrisation uniforme ti = i par une paramétrisation qui prend en compte la distance entre les points : ti+1 = ti + Pi+1 + Pi (paramétrisation en longueur d'arc). Beaucoup d'autres paramétrisations prenant en compte la distance existent (on met Pi+1 + Pi à la puissance a, a étant compris entre 0 et 1). Elles permettent dans le cas de rapports entre les distances élevés d'avoir une meilleure approximation. 12/15
(d) Généralisation des procédés d'interpolation à une surface Le principe est le même que précédemment : on dispose d'un certain nombre de points Pi et l'on veut interpoler ces points par une courbe. Seulement dans le cas d'une surface, on veut que la courbe interpolante reste sur celle-ci. On résonne comme en dimension 2 et on cherche une approximation de la courbe par subdivision des P i. L'idée pour réaliser cette subdivision est d'utiliser des géodésiques (ou plus court chemin) entre deux points. Grâce à ça, on se ramène à une schéma interpolant à 4 points équivalent au plan. Le majeur problème de cette méthode est d'arriver à calculer une géodésique ou un plus court chemin. En général, il n'existe pas d'expression analytique ni de moyen de les calculer de manière exacte. Cependant, sur certaines surfaces, on sait le faire : - cône et cylindre circulaire (surface développable = peut être mis à plat sans déformation) - sphère (non développable) Exemple (géodésique sur une sphére en scilab) : Les points vert et bleu foncé sont les points donnés par l'utilisateur. (A et B) Le point bleu cyan est le milieu. Le point rose est situé à 2* ω fois la distance AB. Une fois les géodésiques tracés, pour un schéma à 4 points, on prend le milieu des deux géodésiques, on en trace une nouvelle passant par ces deux nouveaux points ; puis on fait 2 ω fois la distance de la géodésique obtenue. On a alors trouvé un nouveau point par subdivision (le point rose ici). Et on réitère cet algorithme. 13/15
Au même titre que dans le plan, il est possible d'améliorer le paramétrage pour obtenir des schémas non-uniformes (paramétrage en longueur d'arc). Nous n'avons pas fini le script scilab permettant d'interpoler des points sur une surface d'où l'absence d'exemple dans cette partie. Pour les surfaces où l'on ne sait pas calculer exactement les géodésiques, les chercheurs actuels fonctionnent en subdivisant la surface par de multiples sous-surfaces (par exemple des triangles) pour obtenir une approximation de la géodésique. Plusieurs méthodes existent et peuvent être comparées, mais c'est un autre sujet. En bilan du travail réalisé, j'ai pu constater que le tracé de courbes sur ordinateur n'est pas facile. Mais l'enjeu derrière ces petits travaux de modélisation géométrique est de reconstituer des images 3D le plus fidèlement et esthétiquement possible sur un ordinateur. La science est déjà allé très loin dans ce sujet mais de nombreux problèmes sont toujours en suspend, ces problèmes retournant souvent des mathématiques plutôt que de l'informatique. 14/15
IV. Bilan personnel Ce stage m'a permis d'entrevoir le vaste monde de la recherche et plus particulièrement le domaine de la modélisation géométrique. J'ai découvert que le métier de chercheur était loin de la perception que j'en avais; en effet, de nos jours, les domaines de travail sont très restreint, par exemple, mon maître de stage appartient à une équipe de 9 chercheurs s'intéressant exclusivement à une partie de la modélisation géométrique. Le stage permet d'aller plus loin que les cours de l'année universitaire, mais également de voir leurs applications concrètes. Dans ce stage de mathématiques appliquées, on voit l'importance d'avoir bien comprit les notions de bases et les algorithmes à implanter sans quoi on n'arrive pas au résultat escompté. Ce stage fournit une première expérience professionnelle dans un laboratoire et permet donc d'infirmer ou de confirmer son choix d'orientation très tôt dans le cursus universitaire. Pour ma part, il confirme mon envie de devenir enseignante exclusivement. Grâce à ce stage, j'ai découvert le logiciel Scilab, langage de programmation utilisé en mathématiques qui pourra notamment m'être utile pour passer l'agrégation qui nécessite son utilisation. Cependant, je trouve qu'on manque d'informations avant le stage, vis à vis du travail et de la mission à réaliser. De plus, mon stage a consisté en un travail personnel, aidé par le maître de stage; et je pense qu'au vu du niveau de connaissance d'un élève en L1, L2 et de la courte durée du stage (incapacité d'aller très loin dans un sujet), il serait intéressant d'accompagner l'enseignantchercheur à ses conférences, de découvrir sur quoi et comment il travaille. Ceci permettrait de se forger une réelle idée sur les métiers de chercheur. Globalement, j'ai trouvé ce stage très intéressant et je tiens à remercier toutes les personnes qui permettent à celui-ci d'exister. Je remercie particulièrement M. SZAFRAN Nicolas, qui nous a aidé et soutenu tout au long du stage. 15/15