Pour le 22/12/2008
Vision et Reconstruction 3D
Projet : Retimer
Pol Grasland-Mongrain
1) Objectifs
Prendre une séquence ordonnée de photos (si possible en mode rafale) d'un sujet animé. Retrouver
des points communs à toutes les images, les mailler et générer des images intermédiaires par
interpolation du maillage et des couleurs. On s'attachera plus à la robustesse de la détermination des
points qu'à d'éventuels raffinements ou post-traitements qui permettraient l'obtention d'images
parfaites.
J'ai écrit toutes les fonctions citées ci-dessous, à l'exception de dist2.m (qui fait 1 ligne), harris.m
(que j'ai légèrement modifié) et delaunay (qui est une fonction interne à Matlab)
2) Structure de l'algorithme
Le fichier principal à lancer s'appelle main.m. Toutes les variables intéressantes à modifier pour
l'utilisateur se trouvent dans le fichier initialisation.m.
Cet algorithme :
1. Initialise certaines variables (fonctions initialisation.m)
2. Importe les images et les transforme en niveaux de gris
3. Trouve les points d'intérêts par la méthode de Harris (fonction harris.m)
4. Supprime les points d'intérêts trop proches (fonction removeNeighboor.m)
5. Trouve les descripteurs associés à chaque point d'intérêt (fonction descriptor.m) : il s'agit du
patch de 9 pixels * 9 pixels autour du point d'intérêt
6. Calcule la « distance » entre tous les descripteurs, c'est à dire leur ressemblance - ce n'est
pas une distance euclidienne (fonction dist2.m)
6. Met en correspondance les descripteurs et supprime toutes les correspondances douteuses :
quand un point correspond à deux autres, lorsque sa direction est très différente des autres,
et lorsque son déplacement est trop important, et rajoute les coins de l'image dans les
descripteurs (fichier matches.m)
7. Affiche les 2 images côte-à-côte, montre les points d'intérêt dans les 2 images et leur
correspondances
8. Pour les ceil(n/2) premières images :
1. Réalise une triangulation de Delaunay pour les points d'intérêt de l'image a (fonction
delaunay)
2. Trouve l'appartenance de chaque pixel de l'image a à un ou plusieurs des triangles de
Delaunay (fonction presenceTriangle.m)
3. Calcule les transformations affines qui permettent de passer des 3 points d'intérêt
formant un triangle de l'image a à 3 autres correspondants dans l'image b, et applique ces
transformations à chaque triangle de l'image, et ce pour l'image a
9. S'il y a plus de 2 images intermédiaires, réalise les étapes 8,9 et 10 pour les floor(n/2)