Majeure "Mathématiques et Informatique"
Enseignement d'approfondissement
"Images: Analyse et Synthèse"

Reconstruction Stéréo

Projet Réalisé par Grégory Massal(promo 97)

Visitez ma page web:
http://www.polytechnique.fr/eleves/1997/massal/

Récuperez le rapport complet au format postscript compressé:
rapport.zip (1,53 Mo)

 

Description du projet

 Il s'agit à partir d'une série de 3 vues distinctes d'une même scène 3D, de reconstruire cette scène. Pour cela on extrait les contours des images, sous forme de segments puis on tente d'apparier ces segments trois à trois, ce qui par triangulation donne le segment d'origine en 3D.

cliquez sur les images pour les afficher en grand.

 

Résultats obtenus

Les résultats sont assez peu spectaculaires, le programme tourne longtemps pour un résultat peu parlant. J'ai passé plus de temps à écrire mes fonctions et à les déboguer qu'à pouvoir jouer avec les paramètres pour voir où se posaient les problèmes de la détection proprement dite. Le projet gagnerait à être revu en partie et à être grandement optimisé.

Ceci est une capture d'écran d'une reconstitution 3D sous Geomview de l'image de départ.
La scène est à peu près reconnaissable. (cliquez sur l'image pour un agrandissement)

Par contre dès que l'on dévie un peu du point de vue des images de départ,
on se rend compte que la reconstruction est loin d'être parfaite..
Sur cette image on commence à avoir du mal à reconnaitre l'image originale.

Le temps m'a manqué pour déterminer si ce genre de problème est lié à une mauvaise détection des contours, à une mauvaise définition de la géométrie des caméras dès le départ (bien que les matrices de projection aient été fournies au départ), à des erreurs dans le processus de reconstruction proprement dit, où à la sélection des appariements qui étaient mauvaise.

 

Techniques utilisées et problèmes rencontrés

- Une grande partie du temps imparti a servi à apprendre à programmer en C/C++, ce qui était nouveau pour moi. Heureusement, mes expériences précédentes en caml, java et pascal m'ont un peu aidé, même si finalement j'ai passé beaucoup de temps sur ce point notamment lors du déboguage.

- La détection de contour s'est faite sans trop de problème, je disposais des algorithmes nécessaires grâce à un programme réalisé précédemment: il s'agissait de rechercher les points de contour aux maximums du gradient dans la direction du gradient. Le découpage des contours se fait par un algorithme de "split/merge" qui doit s'assurer que