Bonsoir,
Je m'intéresse beaucoup aux différentes solutions permettant de reconstruire en 3D un objet à partir de photos prises à différents angles.
Après quelques recherches, je suis tombé sur un projet très intéressant qui a l'air d'être à la base de plusieurs autres scripts (VisualSfm, PMVS2, CMVS...) qui donnent des résultats impressionnants. Le projet en question s'appelle Bundler : http://phototour.cs.washington.edu/bundler/
L'intérêt est qu'il permet de générer des nuages de points assez denses à partir de photos non triées et sur lesquelles on n'a a priori pas d'informations.
J'aimerais essayer de bien comprendre la méthode utilisée par Noah Snavely, et je cherche donc à dégager les grandes étapes de l'algo mais je suis un peu dans le flou, aussi je sollicite votre aide.
Voilà ce que j'ai compris :
1) On extrait des points d'intérêts de chaque image, à l'aide des descripteurs SIFT
2) Pour chaque paire d'image, on cherche des correspondances entre leurs points d'intérêt (K-plus-proches voisins)
3) Si on dépasse un certain seuil de correspondances, nos deux images contiennent une même zone de l'objet. On peut donc utiliser ces images pour faire une sorte de triangulation et récupérer les coordonnées des caméras ayant photographié nos images.
4) On fait une rétroprojection pour transférer les coo d'un point d'intérêt du référentiel de la caméra au référentiel 3D
5) "Bundle adjustment" : On réitère les opérations 3 et 4 de façon à minimiser l’erreur géométrique (ie la somme des erreurs de rétroprojection), jusqu'à stabilisation
Alors déjà j'aimerais savoir si j'ai globalement compris le principe ou bien je suis totalement à côté de la plaque ?
Est-ce que j'ai inversé / oublié des étapes importantes ou pas ?
D'autre part, je souhaiterais avoir des précisions sur la façon de réaliser les étapes 3 et 4 (celles sur lesquelles j'ai le plus de difficultés de compréhension).
Voilà, et si vous connaissez d'autres algos (open-source de préférence) similaires ou des approches différentes du problème, n'hésitez pas à me les indiquer.
Merci d'avance =)
Partager