next up previous contents
suivant: Sujet du stage monter: Rapport de Stage sur précédent: Résumé   Table des matières

Sous-sections

Présentation détaillée du projet et de l'existant

Le projet porte sur une technique de reconstruction 3D d'objets à partir de séquence de prise de vues en couleurs de l'objet. Le projet contient toutes les étapes de la reconstruction d'un objet, à partir des prises de vues jusqu'à la visualisation.

La technique utilisée pour la reconstruction est le calcul de l'intersection volumique des cônes de vision qui tient compte des paramètres intrinsèques et extrinsèques de la caméra.

Le projet ACOHIR fait suite à un autre projet, comme l'étude à laquelle nous nous rapportons fait suite à une autre. C'est pourquoi ce projet était déja implémenté au début de notre stage et que les logiciels peuvent présenter plusieurs méthodes, les nouvelles méthodes se greffant aux anciennes dans les mêmes programmes.

Plusieurs reconstruction avaient déja été faites sur quelques objets dont la statue coignard, la céramique et le cheval

Ce projet peut se découper en plusieurs parties, en suivant la chronologie d'une construction d'un modèle 3D:

  1. l'acquisition des images;
  2. la calibration;
  3. la reconstruction;
  4. la visualisation.

L'acquisition des images

l'acquisition des images est une tâche difficile dont dépend le résultat final. En effet, si les prises de vues ne sont pas réalisées dans de bonne conditions, toute la reconstruction peut en être afféctée.

Il y a trois types d'image à acquérir:

Les images pour la calibration
sont des prises de vues dans différentes positions d'une mire à points. Ces images vont servir à calculer les paramètres intrinsèques de la caméra (focale, centre optique et coefficients des polynômes de distortion radiale et tangeantielle) ainsi que les paramètres extrinsèques: la matrice de passage entre une position dans l'espace et sa projection dans le plan de l'image. (cf section 2.2)

Figure 1: la mire de calibration lors de l'acquisition de la statue au Louvre.
\begin{figure}
\begin{center}
\psfig {figure=images/mire.eps, width=6cm} \end{center}\end{figure}

Les images pour la texture
sont les images qui seront utilisées pour la coloration du modèle 3D. Dans le cas d'une reconstruction par particules, il faut attribuer une couleur à chaque particule. Dans le cas d'une reconstruction par maillage de triangle, il faut assigner une texture à chaque triangle qui a été généré. Un éclairage diffus permet d'obtenir une texture optimale.

Les images pour la silhouette
sont des images de l'objet prises avec un éclairage spécial qui permet d'obtenir l'ombre chinoise de l'objet. Ces silhouettes seront utilisées pour la reconstruction 3D. Pour obtenir les silhouettes de l'objet, la technique utilisée est de saturer en lumière le fond derrière l'objet. Les angles sous lesquels sont prises les images des silhouettes sont en pratique les mêmes que ceux des images de la deuxième séquence, par facilité pratique et non par obligation (il faudrait sinon recalibrer la camera).

Pour un même objet, on peut réaliser plusieurs prises de vue avec des angles différents (horizontalement, en plongée ou en contre-plongée). Pour chaque prise de vue, il est nécéssaire de réaliser une série d'images de calibration, une série d'images en éclairage normal et une dernière série d'images de silhouettes.

L'objet est placé sur une table tournante, pilotée par informatique, la plus précise possible. En théorie, l'idéal serait que la derniére image prise coincide exactement avec la première 3. Malheureusement, ce n'est pas le cas avec le matériel du Louvre.

Si c'est possible, on place la mire devant l'objet pour éffectuer la calibration, sinon, il faut effectuer la calibration sans l'objet ce qui pose problême car l'objet ne doit pas bouger entre deux séquences. 4

Une séquence est réalisée en faisant tourner l'objet (NB la table) et en prenant des images à intervalle régulier (5 ou 10 degré courament, soit 36 ou 72 images, 36 étant étant un seuil pour obtenir une bonne qualité de reconstruction). Pour chaque image de texture, on prend en pratique une image de la silhouette sous le même angle . Ainsi, même si interviennent des problèmes de reconstruction liés aux concavités, on pourra observer le même objet si l'on se replace dans le même angle de vue.

Au final, le nombre d'image de l'objet peut atteindre 250, comme ce fût le cas lors de notre deuxième prise de vue au L.R.M.F. 5.


La calibration

Pour pouvoir exploiter chaque vues de l'objet, il est nécessaire de calculer deux séries de paramètres:

Les paramètres intrinsèques de la caméra qui rassemble à sa focale, le centre de l'image et ses paramétres de distortion. Ils permettent de projeter un point dans l'espace sur le plan de l'image.

Les paramètres extrinsèques correspondent à la matrice de transformation qui va permettre de passer du repère de l'objet á celui de la caméra. Soit trois rotations, une translation.

Ces valeurs sont obtenues d'après la séquence d'image de la mire de calibration (cf fig 1). La mire utilisée est connue et les coordonées relative de ses points ont été calculées avec précision.

La mire est photographiée selon un protocole précis:

L'ensemble de la technique de calcul des paramêtres est décrite dans [3] et [4]

La calibration est une phase très importante dans la reconstruction, si le passage entre les images et le modèle 3D n'est pas précise, la reconstruction sera incorrecte.

Il existe trois programmes pour éffectuer la calibration:

find_tache
et find_tache_mod, qui sont des programmes interactifs destinés à obtenir les coordonées des points de la mire sur chaque image de calibration. Find_tache est un programme interactif, c'est à dire que l'image s'affiche et que l'utilisateur doit cliquer sur chaque points, dans un ordre donné. A chaque clic de souris, le programme calcule, grâce à une analyse de la zone du clic, le centre de la tache. Find_tache_mod est le même programme mais en semi-intéractif, l'utilisateur ne doit cliquer que sur 4 points et pas sur les 24;


                01                               01
                11                               ..
            14      12                       ..      ..
          15          11                   ..          ..
         16     26     10                 ..     ..     ..
        17    27  25    09               ..    ..  ..    ..
     02      28    24      00         02      ..    ..      00
        18    29  23    08               ..    ..  ..    ..
         19     22     07                 ..     ..     ..
          20          06                   ..          ..
            21      05                       ..      ..
                04                               ..
                03                               03
               (a)                               (b)

cali
rempli deux fonctions: déterminer les paramètres intrinsèques de la caméra, à partir de toutes les images de la calibration en les faisant converger. Puis, calculer la matrice de passage avec les images de rotation de la mire. C'est pourquoi il est nécessaire de l'exécuter deux fois;

rot_center
enfin va calculer les matrices de passage de chaque vues de l'objet, à partir des résultats obtenus avec cali.

Tous les programmes de calibration ont été écrits en langage C.

La reconstruction

La reconstruction de l'objet s'éffectue en deux temps et peut être réalisée de plusieurs manières différentes. Tout d'abord, on commence par construire un modèle 3D de l'objet:

Avec la méthode par octree, on va donc construire l'octree, arbre octaire (qui peut avoir huit fils par noeud) dont chaque noeud peut être assimilé à un voxel, un cube dans l'espace, et dont les feuilles sont l'ensemble des points de la surface de l'objet. Chacun des différents niveaux de l'arbre correspondant à un niveau de détail, permettant ainsi à l'utilisateur, lors de la visualisation de ne charger que le niveau suffisant à ses besoins ou à ses moyens. Le niveau de détail maximal, où se trouvent les feuilles est configurable et doit être calculé en fonction de la résolution des images utilisées pour obtenir le meilleur résultat possible. Pour retrouver l'ensemble des points appartenant à la surface de l'objet, on utilise une fonction volumétrique qui, grâce aux silhouettes de l'objet, va déterminer le type du cube, à l'intérieur de l'objet, à l'extérieur de l'objet ou enfin les deux, donc sur la surface de l'objet. Si le cube est sur la surface de l'objet, il est inclus dans l'arbre sinon il est supprimé.

Il y a une deuxième possibilité de reconstruction par la méthode octree: au lieu de générer des particules comme ci-dessus, l'octree va générer des triangles. On peut également construire directement un maillage de triangle grâce à une technique par buffer tournant, qui avait été implémentée par un stagiaire précédent, et qui a été conservée. L'avantage de générer des triangles au lieu de particules est de pouvoir se suffire d'un niveau de détail peu élevé, la texture trompant l'oeil.

La deuxième phase concerne les couleurs, et il y a deux possibilités selon le choix de la méthode de construction du modèle:

Le programme de reconstruction s'appelait implicit (il a été repris et rebaptisé depuis) et avait été devellopé en C++.

La visualisation

Evidement, en fonction de la méthode de reconstruction choisie, la méthode de visualisation va être différente. Il existe donc deux programmes, devellopés en C et utilisant la bibliothèque Mesa pour pouvoir faire un rendu OpenGL et assurer la compatibilité avec Windows, cette bibliothèque y ayant été portée.

isosurf:
rebaptisé aujourd'hui triviewer, et qui permet de visualiser les fichiers de triangle (qui portent l'extention ``tri''). Un deuxième fichier est nécéssaire pour la visualisation de l'objet: le fichier de texture courament appelé patchwork.ppm.

viewer:
rebaptisé octreeviewer et qui permet de visualiser les fichiers de particule octree (qui portent l'extention .pts).

Ceux sont les seuls programmes qui ont une contrainte de temps et d'ergonomie. La reconstruction ne doit se faire qu'une seule fois, ce n'est donc pas grave si elle prend du temps, tout en restant raisonnable bien sûr. Par contre, la visualisation se doit d'être rapide, même dans les niveaux de détails élevés. De plus, l'interface doit être soigné et facile d'utilisation pour permettre à n'importe qui de l'utiliser facilement.


next up previous contents
suivant: Sujet du stage monter: Rapport de Stage sur précédent: Résumé   Table des matières
FOUQUIER Geoffroy
2000-01-11