Précédent : Logiciels Remonter : Rapport activite 1997
Suivant : Actions industrielles
Participants : Marie-Odile Berger , Edmond Boyer , Claude
Inglebert , Vincent Lepetit , Sylvain Petitjean , Gilles Simon ,
Brigitte Wrobel-Dautcourt
Résumé : Notre principal résultat cette année est la conception d'un système très robuste de recalage temporel 3D/2D pour la réalité augmentée. Nous avons particulièrement mis l'accent sur la minimisation de l'interaction entre l'utilisateur et l'application.
Nous avons réalisé cette année un système de recalage temporel 3D/2D, capable de suivre dans une séquence d'images un objet 3D dont le modèle est connu, et ceci de manière parfaitement autonome. L'année dernière, nous avions déjà présenté une boucle de réalité augmentée, mais celle-ci utilisait des correspondances de points (primitives qui ne sont pas toujours disponibles), et n'était pas parfaitement autonome (l'utilisateur devait notamment intervenir lorsque de nouvelles primitives apparaissaient). L'objectif des travaux présentés ici est de pouvoir calculer le point de vue de façon robuste, à partir de correspondances 3D/2D de primitives quelconques (points, droites et courbes 3D non nécessairement définies paramétriquement), et de pouvoir mettre à jour automatiquement les nouvelles primitives apparaissant dans la séquence.
Après une phase d'initialisation, qui comporte la détermination des paramètres internes de la caméra (par un calibrage classique), et le calcul du point de vue dans la première image (à partir de la correspondance 3D/2D de quatre points désignés par l'utilisateur), le système détecte automatiquement les primitives 2D qui seront suivies dans les images suivantes, puis parcourt une boucle autonome comprenant le suivi des primitives, le calcul du point de vue et la mise à jour des primitives 2D.
Le suivi des primitives est effectué en utilisant un algorithme que nous avons précédemment développé (une estimation grossière du champ des vitesses permet d'obtenir une prédiction de la localisation du contour, puis les contours actifs sont utilisés pour détecter le contour correspondant à partir de cette prédiction). Cette méthode est fiable, rapide et capable de prendre en compte des mouvements suffisamment grands. Cependant, le suivi peut quelquefois échouer si le contour actif est attiré par des maxima de gradient locaux, ou si l'étape de prédiction échoue (en raison de l'instabilité du calcul du flot). Ainsi, parmi l'ensemble des contours suivis, un petit nombre d'entre eux peuvent être mal détectés ou complètement erronés. Il est donc primordial de pouvoir calculer le point de vue de façon très robuste.
Nous utilisons pour cela un algorithme de type Iterative Closest Point . Notre méthode se distingue des travaux précédents par l'utilisation d'estimateurs robustes (M-Estimateurs) dans un processus à deux niveaux : un niveau local, qui calcule un résidu robuste pour chaque primitive, et un niveau global qui minimise une fonction robuste de ces résidus. L'intérêt de cet algorithme est double : d'une part il permet de calculer le point de vue de façon robuste en n'utilisant que les parties des primitives 2D qui correspondent au modèle 3D, et d'autre part il permet de détecter les primitives erronées.
Enfin, les correspondants 2D des nouvelles primitives 3D apparaissant dans la séquence sont automatiquement déterminés en calculant le point de vue à partir des primitives suivies et des contours 2D qui sont suffisamment proches de la projection du contour 3D. Les contours qui ne sont pas éliminés sont alors fusionnés pour former la primitive 2D recherchée.
Nous travaillons actuellement sur la décomposition automatique du modèle en primitives 3D pertinentes, celles-ci étant pour le moment désignées par l'utilisateur dans une étape préliminaire. Nos résultats actuels sur l'application des ponts de Paris sont disponibles sous la forme d'une séquence MPEG accessible sur Internet.
Comme nous l'avons déjà souligné, la gestion correcte des occultations entre scène réelle et objets virtuels est un élément très important pour le réalisme des scènes composées. Malheureusement, cette gestion est le plus souvent manuelle dans les systèmes existants. Nous avons donc commencé cette année à développer des méthodes permettant de gérer les occlusions en minimisant les interactions avec l'utilisateur.
Nous considérons donc deux images successives de la séquence,
le mouvement entre ces deux images ayant été calculé
préalablement (cf. § ). Notre objectif est de calculer
le masque d'occultation correspondant aux objets virtuels,
c'est-à-dire la partie visible de ces objets, une fois qu'ils ont
été insérés dans la scène.
Comme le modèle de la scène n'est pas connu, la première méthode qui vient à l'esprit est de reconstruire la scène au voisinage des objets à incruster puis de comparer cette carte de profondeur avec l'objet virtuel. Cependant, la précision des reconstructions de type stéréo n'est pas suffisante pour obtenir des masques d'occultation corrects. Nous avons donc développé une méthode ne nécessitant pas de reconstruction, qui s'appuie fortement sur les contours détectés dans l'image.
L'idée de base est d'étiqueter les points de contours
devant ou derrière , en fonction de leur position
par rapport à l'objet à incruster. À l'aide d'un outil de suivi
de courbes, il est facile de suivre les contours entre deux
images et de déterminer les points homologues en
utilisant le mouvement calculé entre deux images. Il est ensuite
relativement simple de comparer la profondeur du point 3D de la
scène correspondant à
avec la profondeur de
l'objet virtuel se projetant en
. En effet, la projection
dans l'image 2 d'un point de profondeur
, dont la projection
dans l'image 1 est
, est une homographie de la profondeur
dont les coefficients dépendent des positions relatives
de la caméra entre les images. La profondeur de l'objet virtuel
étant parfaitement connue, il est alors facile d'inférer la
position du point correspondant de la scène.
On peut ainsi étiqueter les points de contours. Il reste ensuite à inférer le masque d'occlusion. Comme plusieurs objets réels peuvent venir occulter l'objet virtuel, on forme un graphe dont les noeuds sont les contours étiquetés devant . Deux noeuds sont reliés si la distance entre les contours correspondants est inférieure à un certain seuil. La recherche des cliques maximales permet alors de regrouper les contours appartenant à un même objet occultant.
Il est bien clair que des erreurs d'étiquetage peuvent se
produire, dues en particulier à des imprécisions sur la mise en
correspondance. Par ailleurs, il se peut que certains contours
fondamentaux du masque d'occlusion n'aient pas été détectés (si
l'échelle d'observation est trop grosse). Nous avons donc choisi
une méthode de régularisation permettant de tenir compte de ces
problèmes, afin de détecter la forme la plus régulière possible
s'appuyant sur les points de contours étiquetés : en utilisant
les contours actifs sur le champ de force créé par ces contours,
nous obtenons un résultat satisfaisant. Les premiers résultats
sont prometteurs (Fig. ) et sont décrits dans [15].
Figure: Un exemple de composition
d'image.
Participants : Laurent Alonso , Xavier Cavin , François
Cuny , Nicolas Holzschuch , Slimane Merzouk , Jean-Claude Paul ,
Sylvain Petitjean , Christophe Winkler
Résumé : Cette année a été une étape de reconstruction des bases de l'activité synthèse dans le projet. Ainsi, nous avons conçu d'une part une nouvelle approche théorique du calcul de l'équation de radiance. Cette approche, numérique, exploite une technique de résolution hiérarchique et est fondée sur une méthode de décomposition de domaines qui permet de réduire les calculs géométriques dans chaque sous-domaine à leur plus simple expression. D'autre part, nous avons développé une plate-forme logicielle et un ensemble d'algorithmes robustes qui nous permettent d'expérimenter certaines méthodes, mais également de générer des images de grande qualité dans un contexte applicatif en vraie grandeur. Enfin, nous avons travaillé dans le domaine de la visualisation, pour développer des applications de réalité virtuelle en architecture et en géophysique.
Nous avons proposé tout d'abord un nouvel algorithme plus simple pour construire un arbre de partitionnement binaire (BSP). Cet algorithme opère dans n'importe quelle dimension et sa construction BSP est de taille linéaire. Nous ajoutons les informations de voisinage entre les cellules de l'arbre. Puis, nous construisons les liens entre les cellules feuilles de l'arbre BSP. Ces liens sont construits en utilisant une simple traversée de l'arbre BSP.
La formulation de l'équation de radiance et le schéma itératif que nous avons utilisé pour la résoudre en utilisant le partitionnement géométrique sont les suivants :
Considérons la formulation en terme de transport d'énergie
entre trois points de la radiance incidente sur les surfaces
. Nous supposons que la fonction de radiance
arrivant en
du point
a été
projetée dans une base de fonctions
de l'espace des distributions de radiance, de
façon à avoir :
En effectuant le même traitement pour la fonction de radiance
sur la surface
, on obtient alors
la formulation discrète :
où est le coefficient de transport.
Nous avons utilisé comme fonctions de base plusieurs classes d'ondelettes. Notons que pour former des fonctions de base 4D pour les besoins ci-dessus, nous utilisons la base d'ondelettes non standard construite à partir du produit tensoriel des fonctions de base unidimensionnelles. En outre, les coefficients des fonctions de base ne sont pas associés à un élément individuel, comme c'est le cas pour la radiosité, mais plutôt à une paire de surfaces. Ainsi les liens de visibilité sont entre paires d'éléments de surfaces.
L'algorithme consiste alors à diviser récursivement chaque
élément là où le noyau de la radiance n'est pas suffisamment
régulier, et ensuite à utiliser un schéma de résolution pour
propager l'énergie et résoudre le transport discret. Nous avons
implanté plusieurs types de règles de quadrature pour le calcul
des coefficients de transport. Les quadratures de Gauss-Legendre
ont prouvé leur efficacité pour notre calcul. Si nous utilisons
les ondelettes de Haar, qui ont un support fini, les intégrales
6D de peuvent s'évaluer avec une règle produit de
quadratures, car le domaine d'intégration est un hypercube 6D.
Cependant les quadratures sont aussi connues pour avoir des
problèmes de précision. Comme décrit ci-dessus, le nombre total
de points de quadrature est
ou
, suivant la
situation considérée. L'étape suivante consiste à résoudre le
système pour calculer la fonction de radiance. Tous les liens de
visibilité de la hiérarchie sont triés dans une << queue de
priorité >> dépendant de leur énergie. À chaque étape, le
plus énergétique des liens est choisi et transmet l'énergie aux
éléments avec lesquels il interagit. Dans notre algorithme,
chaque élément envoie l'énergie à un nombre constant d'éléments.
Cette résolution progressive permet de prendre en compte
rapidement les liens les plus importants.
Nous n'avons pas encore expérimenté complètement notre méthode, qui permet de calculer la radiance, mais nous espérons qu'elle permettra une avancée significative. Elle est d'un niveau de complexité raisonnable. En outre, elle est particulièrement adaptée à une mise en oeuvre parallèle. Les expérimentations que nous avons menées jusqu'ici sur la parallélisation de l'algorithme de radiosité, qui dans sa version hiérarchique est de nature irrégulière et dynamique, montrent en effet le rôle que peuvent jouer des stratégies comme les méthodes de décomposition de domaines, dans la mesure où elles favorisent l'exploitation de la localité des données. Nous pensons également que la méthode est susceptible de faciliter l'introduction de variations temporelles dans les simulations.
Nous avons développé une architecture permettant d'implanter les algorithmes et les structures de données nécessaires pour résoudre l'équation de radiance [9]. Les objectifs que nous avons voulu donner à cette architecture sont :
La satisfaction de ces objectifs a orienté les principes de conception de notre architecture.
Plusieurs algorithmes sont actuellement implantés, qui concourent à la résolution de l'équation de radiance de la manière suivante :
Une configuration particulière de ces différents algorithmes permet actuellement de calculer une solution de radiosité. Cette configuration utilise les propriétés hiérarchiques des ondelettes, et plusieurs variantes de cet algorithme général sont proposées.
En outre, des solutions intégrant des fonctions physiques plus complexes (general brdf), des problématiques de contrôle de l'erreur différentes (discontinuity meshing, importance error-driven), ou des techniques de calcul par raffinement plus élaborées (clustering, ddm) peuvent être intégrées à notre architecture, en réutilisant une grande partie du code, et en conservant une bonne stabilité et de bonnes performances.
Participants : Christian Ah-Soon , Philippe Dosch , Gérald
Masini , Karl Tombre
Résumé : Nous nous intéressons actuellement à la reconstruction d'ensembles architecturaux à partir de l'analyse de plans de type avant-projet. Cette année, nos efforts ont principalement porté sur la mise au point d'une méthode de reconnaissance de symboles architecturaux efficace et aussi générique que possible, ainsi que sur le développement d'un logiciel permettant à l'utilisateur de piloter le processus d'analyse en interagissant si nécessaire à toutes les étapes.
Pour simuler des environnements architecturaux et urbains
complexes, et pouvoir y naviguer de manière virtuelle, il est
nécessaire de les modéliser. Quand les environnements sont d'une
grande complexité, les modèles qu'il est actuellement possible
d'obtenir par les techniques de vision sont insuffisants, à la
fois en précision et en densité. En nous appuyant sur les
compétences de l'équipe en analyse de documents
graphiques [12,20,25], nous nous intéressons à
l'analyse des plans disponibles pour ces environnements, qui
permet d'obtenir des modèles plus robustes et plus complets. Les
informations fournies par ces plans peuvent être utilisées seules
ou être fusionnées avec d'autres données [16].
C'est dans ce contexte que nous travaillons en particulier sur
l'analyse de plans d'architecture pour la modélisation d'un
édifice. L'idée est de numériser et d'analyser des plans de type
avant-projet (permis de construire), pour aboutir à une
modélisation en termes d'entités architecturales, permettant en
particulier la << navigation >> virtuelle dans
l'édifice. Dans un premier temps, nous abordons le problème de
l'analyse 2D du plan de chaque étage pris individuellement. Un
premier ensemble de méthodes a été mis au point, permettant de
séparer les << couches >> géométriques (traits forts,
hachurage, traits fins, annotations) et de reconnaître les
entités de base telles que les murs, les cloisons intérieures, et
les principales menuiseries (fenêtres et portes), par simple
analyse structurelle. Une seconde approche a ensuite été
développée, privilégiant la recherche des pièces, puis l'analyse
de leurs dispositions relatives, et enfin la reconnaissance des
éléments de séparation et des menuiseries, ce qui permet une
description de l'édifice en termes d'espaces
architecturaux [13,22]. Les figures et
montrent un résultat typique de
cette analyse spatiale.
Figure: Élévation 3D obtenue après
analyse spatiale du plan de la Fig. . Figure: Un plan
numérisé.
Un point faible de ces deux approches restait la reconnaissance des menuiseries, qui peuvent être très variées. Nous nous sommes donc concentrés cette année sur la mise au point d'un système générique de reconnaissance de symboles architecturaux. Les modèles des différents symboles possibles sont représentés sous forme d'un ensemble d'entrées composées principalement d'une liste de contraintes portant sur les primitives de l'image (segments et arcs) censées constituer les symboles. Ces contraintes sont de deux types : contraintes de connexion, qui décrivent les relations de connexion entre les primitives, et contraintes simples, qui décrivent tous les autres types de relations, en utilisant des égalités, des inégalités, les caractéristiques des primitives, des opérations arithmétiques et des prédicats simples. Pour réduire le coût algorithmique du système, l'ensemble des modèles est regroupé dans un réseau unique de contraintes, à travers lequel on propage les hypothèses de mise en correspondance, qui sont progressivement agglomérées en hypothèses de plus haut niveau, jusqu'à la reconnaissance finale [14].
En complément de ce travail, nous avons démarré fin 1996 un
contrat avec le CNET
(cf. § ), qui porte également sur la
reconstruction 3D d'intérieurs de bâtiments à partir des plans
d'architecture, mais avec une approche plus interactive.
L'application sous-jacente est l'aide au positionnement
d'antennes pour la propagation d'ondes hertziennes (téléphonie
mobile en intérieur...). Tout en exploitant dans toute la mesure
du possible les résultats déjà obtenus en analyse automatique, il
s'agit dans ce contexte de prévoir la présence de <<
l'homme dans la boucle >> à chaque étape du processus, donc
de proposer une méthode semi-automatisée de reconstruction. Le
maximum de tâches est bien entendu réalisé par le système, mais
avec une interface homme-machine adaptée et une intégration
complète de méthode d'édition et d'interaction à chaque étape de
la reconstruction.
Le logiciel MICA est ainsi en cours de
développement. Il s'appuie sur la plate-forme Isadora
(cf. § ) et offre la possibilité
d'apporter une aide à la décision entre chaque phase de
l'analyse, soit par l'activation d'un traitement spécifique à
effectuer en fonction de la nature des données traitées, soit par
le choix manuel des paramètres du traitement, soit encore par la
correction interactive des données intermédiaires (données
vectorielles, symboles, texte...) [24]. Les modules de traitement
de bas-niveau et d'analyse globale sont d'ores et déjà implantés,
ainsi que les interactions élémentaires sur les données
vectorisées. L'utilisateur peut ainsi visualiser et manipuler de
manière conviviale les différents résultats obtenus. Outre
l'implantation du module de reconnaissance de symboles décrit
précédemment, nous développons actuellement, au sein de
l'interface, un module de << tuilage >> permettant de
découper de grosses images, difficiles à manipuler sous cette
forme, de traiter séparément les différentes << tuiles
>> et de fusionner ensuite les résultats obtenus. La
figure
est une copie d'écran du logiciel
MICA en mode édition vectorielle.
Figure: Le logiciel MICA en mode édition sur la vectorisation du plan de
la Fig. .