Géométrie numérique : du réel au virtuel
Transcription
Géométrie numérique : du réel au virtuel
Géométrie numérique : du réel au virtuel Franck Hétroy-Wheeler Enseignant-chercheur Grenoble INP – Ensimag En délégation à l'Inria (équipe Morpheo) Point commun ? Point commun ? (c) Forest Research (c) Inria/Univ. Grenoble (c) UPC (Barcelone) (c) Grenoble INP - Ensimag (c) UJF/CHU Grenoble Géométrie numérique Maths + informatique Quoi ? γη μετρον : Fragment des Elements d'Euclide (source : Wikipedia) Numérique : 001011... γη ? Et aussi : bâtiments, avions/trains/trams/voitures, usines, objets mécaniques, ... μετρον ? Dimensions Mouvement (fluide, ...) Autres : couleur, quantités pour certains paramètres, ... Pourquoi ? Impossible Trop long Trop compliqué Trop dangereux sur le modèle (objet, personnage, organe) réel SOMMAIRE 1. Introduction : quoi et pourquoi ? 2. Comment ? 3. Exemples SOMMAIRE 1. Introduction : quoi et pourquoi ? 2. Comment ? 3. Exemples Processus général Modèle réel Processus général Modèle Numérisation Modèle virtuel réel de bas niveau Processus général Modèle Numérisation Modèle virtuelTransformation Modèle de réel de bas niveau haut niveau Informations additionnelles (dépendant du domaine et/ou de l'application) Processus général Utilisation/ Modèle Numérisation Modèle virtuelTransformation Modèle de interprétation réel de bas niveau Informations additionnelles haut niveau (dépendant du domaine et/ou de l'application) Processus général Modèle Numérisation Modèle virtuel réel de bas niveau Numérisation : scanners Objectif : récupérer un ensemble de points sur la surface du modèle Principe : envoi d'un rayon laser et retour → Balayage Types : Temps de vol Décalage de phase Triangulation Lumière structurée Etc. Scanner laser (petit modèle) NextEngine → Un exemple : http://www.youtube.com/watch?v=3oDp33mwPkE Scanner laser (grand modèle) SALCA, (c) Salford University Numérisation : imagerie Objectif : récupérer une image 2D ou 3D (un volume) permettant de distinguer le modèle de son environnement Principes : caméras, capteurs, rayons, ... Exemples : Systèmes multi-caméras (images ou vidéos) Caméra + capteurs (profondeur, ...) Imagerie par résonance magnétique Tomographie (rayons X) Echographie (ultrasons) Etc. Systèmes multi-caméras GrImage, (c) Inria http://www.youtube.com/watch?v=VDTJmKE0EyA I.R.M. (source : Wikipedia) Caméra + capteurs Kinect, (c) Microsoft Processus général Modèle Numérisation Modèle virtuel réel de bas niveau Modèle bas niveau : nuage de points Un point = un ensemble de coordonnées (x,y,z), dans un référentiel connu (cf. numérisation) Parfois d'autres informations : Couleur Vecteur normal à la surface Modèle bas niveau : maillage non régulier Nuage de points + informations de voisinage (sur la surface) Formellement : triplet (V, E, F) V = sommets (les points) E = arêtes (segments entre points voisins) F = faces polygonales/polyédrales Modèle bas niveau : image Image (2D ou 3D) = grille régulière, mais pas de distinction explicite modèle ↔ environnement Autres informations dépendent des capteurs : Couleur Profondeur Etc. Temps de vol (source : Wikipedia) Problèmes Bruit/imprécision (occultations, points erronés, …) Redondance ou données inutiles Modèles non manipulables/analysables facilement Par un utilisateur non expert Données incomplètes Besoin d'autres informations ou modèles à fusionner → Données discrètes, non continues ! Processus général Modèle Numérisation Modèle virtuelTransformation Modèle de réel de bas niveau haut niveau Informations additionnelles (dépendant du domaine et/ou de l'application) Transformations Nombreuses ! Filtrage/lissage Remaillage → Simplification ou approximation Par un modèle paramétrique (continu) Segmentation (séparation en sous-ensembles) Si plusieurs modèles : mise en correspondance Etc. (c) Zichun Zhong et al., Univ. of Texas, Univ. of Hong-Kong, Inria, NVIDIA SOMMAIRE 1. Introduction : quoi et pourquoi ? 2. Comment ? 3. Exemples Exemple introductif (niveau ~ 1ère S) Objectif : définir une courbe continue dans le plan interpolant ou approchant un ensemble de points. Des idées ? Remarque On peut trier ces points (par exemple par abscisse croissante) Comment avoir une courbe plus lisse ? Remarque (bis) Si on suppose points d'abscisses différentes (sinon on peut perturber), on cherche une fonction ! Comment avoir une courbe plus lisse ? Exemple d'application (pour vos élèves) x = temps, points = positions d'un personnage de jeu vidéo On cherche une trajectoire lisse pour le personnage, avec des contraintes (positions aux moments clés). Solution Décomposer en sous-fonctions (f continue par morceaux) et assurer continuité des tangentes ! Entre xi et xi+1, f(x) = fi(x), avec : fi(xi) = yi fi(xi+1) = yi+1 fi'(xi) = ti fi'(xi+1) = ti+1 Comment calculer fi ? Question Peut-on utiliser un polynôme de degré 2 ? ∀i, fi(x) = ai + bi x + ci x2 4 contraintes : fi(xi) = yi fi(xi+1) = yi+1 fi'(xi) = ti fi'(xi+1) = ti+1 Une autre idée ? Réponse Il faut un polynôme de degré 3 ! ∀i, fi(x) = ai + bi x + ci x2 + di x3 Supposons xi = 0 et xi+1 = 1. fi(0) = yi fi(1) = yi+1 fi'(0) = ti fi'(1) = ti+1 Que valent ai, bi, ci et di ? Réponse (bis) On obtient : fi(0) = ai = yi fi(1) = ai + bi + ci + di = yi+1 fi'(0) = bi = ti fi'(1) = bi + 2 ci + 3 di = ti+1 Et on en déduit : fi(x) = yi + ti x + (-3yi + 3yi+1 – 2ti – ti+1) x2 + (2yi -2yi+1 + ti + ti+1) x3 On appelle la courbe donnée par f(x) = fi(x) entre xi et xi+1 une spline cubique d'Hermite. Charles Hermite Mathématicien français (1822-1901) Source : Wikipedia Remarque fi peut aussi s'écrire : fi(x) = yi (2x3 – 3x2 +1) + yi+1 (-2x3 + 3x2) + ti (x3 – 2x2 + x) + ti+1 (x3 – x2) Source : Wikipedia Question Comment choisir les tangentes ? ∀i fi(xi) = yi et fi(xi+1) = yi+1 → 2n contraintes si n fonctions fi ∀i fi'(xi+1) = fi+1'(xi+1) → n-1 contraintes Or 4n inconnues (les ai, bi, ci et di) → il manque n-1 contraintes ! Solutions possibles Solution 1 : continuité des dérivées secondes Solution 2 : fixer les tangentes, par exemple parallèles à yi-1yi+1 : ∀ i, fi'(xi) = k (yi+1 – yi-1) ∀ i, fi'(xi+1) = k (yi+2 – yi) → on parle de spline cardinale Le résultat (spline d'Hermite) Qu'a-t-on fait ? On a retrouvé une approximation continue de notre modèle, à partir des données virtuelles discrètes. Problème : les points sont bruités, et la courbe a trop d'oscillations Solution Trouver une courbe lisse qui approche les points, au lieu de les interpoler. Pierre Bézier Ingénieur français (1910-1999) Images Pierre Bézier Source : Renault et Christophe Rabut A lire sur http://www-gmm.insa-toulouse.fr/~rabut/bezier/ Source : patronsdefrance.fr Carrière chez Renault sur la conception de voitures à partir de systèmes à commandes numériques Courbes de Bézier f(x) = ∑ fi(x) yi avec ∀i, fi(x) = Bin(x) si n+1 points Bin = polynôme de Bernstein : Bin(x) = Cin xi (1-x)n-i Exemple : pour 4 points : ∀i, f(x) = B03(x) y0 + B13(x) y1 + B23(x) y2 + B33(x) y3 = (1-x)3 y0 + 3(1-x)2x y1 + 3(1-x)x2 y2 + x3 y3 Comment calculer ? On cherche où est situé f(x), pour un x donné Bin polynômes de degré n → instabilité numérique, temps de calcul … mais les Bin ont de bonnes propriétés Idée : Calculer les points yi1 := x yi + (1-x) yi+1 Recommencer : yi2 := x yi1 + (1-x) yi+11 … n fois : y0n = f(x) Preuve : remonter de y0n aux yi Niveau 1ère S ! Paul de Faget de Casteljau Ingénieur français (né en 1930) Source : H.P. Bieri et H. Prautzsch Carrière chez Citroën, en parallèle (et sans collaborer) avec Bézier Algorithme (1959) antérieur aux travaux (plus formels) de Bézier ! Pour aller plus loin Autres splines : B-splines, β-splines, N.U.R.B.S., ... Autres fonctions de base fi Différentes propriétés Surfaces splines : produit tensoriel Très utilisées en conception assistée par ordinateur Logiciel Catia, (c) Dassault Systèmes Wiggly splines, (c) Pixar Transformations Nombreuses ! Filtrage/lissage Remaillage → Simplification ou approximation Par un modèle paramétrique (continu) Segmentation (séparation en sous-ensembles) Si plusieurs modèles : mise en correspondance Etc. Source : Zichun Zhong et al., Univ. of Texas, Univ. of Hong-Kong, Inria, NVIDIA Problème concret Objectif : mesures sur l'arbre/la plante (volume de bois, surface foliaire, …) Temps nécessaire : 1 homme.semaine par arbre ! Numérisation : → 1 homme.jour Une première étape Objectif intermédiaire : distinguer les feuilles des branches – Semi-automatiquement – Peu de paramètres Collaborateurs : Eric Casella (Forest Research) Dobrina Boltcheva (Univ. Nancy) Rémy Cumont (stagiaire Ensimag) Problèmes Nuage de points non organisé Densité non uniforme (occultations, …) Beaucoup de points aberrants → On ne peut utiliser que : Coordonnées (x,y,z) des points Connaissances a priori, ou expertise de l'utilisateur Objectif Etiquetage de chaque point du nuage : Branche/tige n° i Pétiole n° j Feuille n° k 1 couleur par étiquette → Méthode 3 étapes : 1. Calcul d'un voisinage approché pour chaque point 2. “Réduction de dimension” Projection des données dans un nouvel espace Espace défini par les “directions intrinsèques” principales du modèle 3. Algorithme de segmentation des données réduites Informations de voisinage requises Paramètres 3 principaux : Angle a minimum entre 2 voisins d'un point Vus depuis ce point Estimation d du nombre de directions intrinsèques de la plante/de l'arbre Nombre e d'entités élémentaires (i.e. d'étiquettes) désiré En pratique : Robuste au choix de a et d Calculer avec un petit e, puis relancer sur chaque sous-ensemble 1. Calcul d'un voisinage Pour chaque point : Les k plus proches ? → difficile de fixer k Tous ceux dans un rayon ε autour du point ? → difficile de fixer ε Notre idée : Regarder successivement les k plus proches Si angle avec un plus proche déjà sélectionné < a, éliminer 2. Réduction de dimension Besoin de maths évoluées ! La décomposition spectrale de l'opérateur laplacien appliqué aux coordonnées des points donne les “directions intrinsèques” principales de la forme étudiée ∆ f = div grad f Existe aussi en version discrète : ∆ f(x) ~ f(x) – (1/n) ∑ f(vi) vi voisin de x S'écrit sous forme de matrice L Vecteurs propres et valeurs propres : Lv=λv Source : Bruno Lévy, Inria Pour en savoir plus : B. Lévy, in Shape Modeling International 2006 En pratique Besoin de connaître les voisins d'un point pour calculer L ! Paramètre d = nombre de directions intrinsèques On projette les points dans l'espace défini par les d premiers vecteurs propres V – Nouvelles coordonnées (d par point) = lignes de V Les points deviennent “alignés” → Robuste au bruit d=3 3. Algorithme de segmentation Et maintenant un peu d'informatique ! Objectif : découper les données selon les “branches” Idée : calculer un “squelette” et attacher chaque point à la branche du squelette la plus proche Outil informatique : algorithme de Dijkstra (1959) Edsger Wybe Dijkstra Informaticien néerlandais (1930-2002) Source : Wikipedia Célèbre pour son algorithme de calcul de plus courts chemins … mais aussi la programmation structurée (Algol) et l'autostabilisation GOTO Algorithme de Dijkstra Dans un graphe (V,E) Plus courts chemins d'un point (nœud source) vers tous les autres Principe : propagation de front Outil principal : file de priorité Q de nœuds accessibles, mais non atteints Algorithme de Dijkstra Initialisation : Atteints := { source }, Q := { voisins de source, avec leurs distances } Boucle : Tant que Q n'est pas vide faire – p := élément de Q le plus proche de source – Enlever p de Q et l'ajouter à Atteints – Ajouter à Q les voisins p' de p qui n'y sont pas, et mettre à jour les distances de ceux qui y sont : d(source, p') = d(source,p) + d(p,p') Résultat : distances de source à tous les points atteignables avec les plus courts chemins Dans notre contexte Idée : un plus court chemin sera une “branche” du squelette 0. Trouver une “extrémité” du graphe : point le plus distant d'un point quelconque 1. Chemin extrémité-point le plus distant = branche principale 2. Recommencer (e-1)/2 fois en mettant à 0 les distances entre points des branches calculées - Chemin de la branche au point le plus lointain = nouvelle branche + coupe une branche en deux - e = nombre de branches (ou régions) désirées 3. Recommencer une dernière fois pour associer à chaque point la branche la plus proche Méthode 3 étapes : 1. Calcul d'un voisinage approché pour chaque point 2. “Réduction de dimension” Projection des données dans un nouvel espace Espace défini par les “directions intrinsèques” principales du modèle 3. Algorithme de segmentation des données réduites Informations de voisinage requises Quelques résultats Marronnier commun Chêne rouge d'Amérique Châtaignier commun SOMMAIRE 1. Introduction : quoi et pourquoi ? 2. Comment ? 3. Exemples 1. Interpolation/approximation spline 2. Segmentation de plantes 3. Modélisation 4D Processus général Utilisation/ Modèle Numérisation Modèle virtuelTransformation Modèle de interprétation réel de bas niveau haut niveau Informations additionnelles (dépendant du domaine et/ou de l'application) http://morpheo.inrialpes.fr/ http://www.4dviews.com/ (vidéo) Quelques applications possibles (1) Visualisation, mesure, … interaction ! Cinéma/télévision/jeux vidéos Art http://react-project.eu/ http://www.youtube.com/watch?v=h9ruNyQpYi4 http://www.infra-visionair.eu/ http://alpes.france3.fr/2013/11/13/premiere-mondialele-clone-d-une-danseuse-en-direct-356773.html Quelques applications possibles (2) Sport http://www.creamove.fr/demonstrateurs/ http://www.youtube.com/watch?v=gcgUazxEB_w Médecine/kinésithérapie/biologie http://morpheo.inrialpes.fr/people/reveret/ethomice http://www.inria.fr/centre/nancy/innovation/rii/demos/plat eforme-de-simulation Numérisation : infrastructure Un exemple : http://kinovis.inrialpes.fr/ Numérisation 1. Calibrer les caméras 2. A chaque pas de temps : 2.1. Pour chaque image, déterminer la silhouette du modèle 2.2. Fusionner ces silhouettes : enveloppe visuelle → géométrie ! Limitations actuelles 1. Silhouettes : a priori sur le fond → Difficile en extérieur → Espace restreint 2. Volume ? Cohérence temporelle Reconstruction indépendante à chaque pas de temps → Pas de cohérence temporelle Mise en correspondance Utilisation de la photométrie Suivi de modèle Besoin d'un modèle référence et/ou d'un modèle de déformation Méthodes probabilistes, apprentissage (vidéo) Vers un modèle de haut-niveau (1) Cohérence temporelle Segmentation en parties quasi-rigides (vidéo) 1. Mise en correspondance modèles 2. Calcul transformations rigides des points 3. Regroupement spectral (cf. plantes) Vers un modèle de haut-niveau (2) Calcul de descripteurs spatio-temporels SOMMAIRE 1. Introduction : quoi et pourquoi ? 2. Comment ? 3. Exemples 1. Interpolation/approximation spline 2. Segmentation de plantes 3. Modélisation 4D Conclusion Géométrie numérique : passer à une représentation virtuelle pour mesurer (au sens large) des modèles Problème : la numérisation fait perdre la structure/le sens On les retrouve à l'aide d'informations a priori dépendant du contexte mais aussi grâce aux maths et à l'informatique – Maths : géométrie (par exemple pour retrouver la forme d'un objet), mais aussi algèbre linéaire, probabilités, ... – Informatique : algorithmique, programmation, mais aussi hardware, calcul distribué, I.H.M., ... Pour en savoir plus Le webzine de vulgarisation scientifique de l'Inria Projets étudiants Ensimag https://interstices.info/ (mot-clé géométrie) http://ensiwiki.ensimag.fr/index.php/Galerie_de_projets_ARV Maths et programmation pour les lycéens http://mobinet.imag.fr/ Merci pour votre attention [email protected] [email protected] morpheo.inrialpes.fr/people/hetroy