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:
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:
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.
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:
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)
Tous les programmes de calibration ont été écrits en langage C.
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++.
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.
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.