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