Reconstruction 3D avec VisualSFM

Ce wiki a été archivé en 2018.

Le nouveau wiki se trouve à: ressources.labomedia.org

Les fonctionnalités sont désactivées: vous pouvez faire une recherche sur Google site:https://wiki.labomedia.org et découvrir La Labomedia.

De Centre de Ressources Numériques - Labomedia
Aller à : navigation, rechercher


Installation sur Ubuntu 12.04 64 bits. Le SFM permet de reconstruire en 3D un objet à partir de photos. Cette reconstruction demande beaucoup de calcul, donc c'est mieux sur un système 64 bits.

Ressources

Exemple d'utilisation

Un fil sur le forum Ubuntu Photogrammétrie: équivalents linux de 123d catch d'autodesk?

  • Scan photo rapide avec VisualSFM
  • essai avec une gopro

Problème du fond des images du modèle

Pour une table tournante qui ne devrait modéliser que le modèle, il faut optimiser le fond de l'image.

Test avec des images construites dans Blender

Conclusion

  • Déplacement de la caméra en spirale: VisualSFM utilise le déplacement de la caméra, des cercles parallèles autour du modèles sont rejetés. La table tournante doit permettre un déplacement vertical pas à pas de la caméra.
  • Le fond ne doit pas comporter de zone de couleur unie (par exemple tout blanc).
  • Les zones floue et de couleurs variable ne sont pas modélisée.
  • Si le fond est variable et bien net, il sera modélisé: facile à supprimer dans meshlab, car bien détaché du modèle, mais le calcul sera long, et demandera beaucoup de RAM.
  • Photos grand format mais maxi 3200x3200
  • 8 Go de RAM

Exemple 250 images 2000x1500

  • Sur Quad core 2.4 Ghz, 4 Go de RAM, 4 Go de SWAP
  • Calcul en 3 heures, 2 Go utilisé dans la SWAP, ce qui ralenti considérablement.
  • Suzanne 0117.jpg Une image du rendu Blender.
  • Chemin camera.png Chemin caméra avec un Track to vers suzanne.
  • Matrice 05.png Matrice: il faudrait n'avoir que la diagonale au centre.
  • Suzanne 3D.png Sortie VisualSFM.
  • Gros nettoyage dans Meshlab, Reconstruction Poisson des faces.
  • Comparaison dans Blender: Le suzanne vert est le reconstruit.

05 cote cote.png Sp05 superpose.png

Dans la vie réelle

50 Photos prises avec un compact simple, format 2272x1704, pas suffisamment nettes sur le modèle, fond et ciel très saturé blanc, surtout vers le soleil derrière les nuages. Masque 05 mesh.png Masque 5 024.jpg

Installation

CUDA

CUDA, pour faire les calculs sur la carte graphique (Nvidia), ne sert que pour calculer la correspondance des points. Ce calcul prend peu de temps par rapport aux autres calculs, et le gain est faible, expression diplomatique pour dire: ça ne sert à rien, inutile de se casser les pieds avec ça.

Ressources:

Résumé pour CUDA 4

Ouvrir un terminal dans votre home:

sudo apt-get install libxi-dev libxmu-dev freeglut3-dev build-essential binutils-gold
wget http://developer.download.nvidia.com/compute/cuda/4_2/rel/toolkit/cudatoolkit_4.2.9_linux_64_ubuntu11.04.run

Noter les commandes suivantes sur un papier:

sudo /etc/init.d/lightdm stop
chmod +x cudatoolkit_4.2.9_linux_*
sudo ./cudatoolkit_4.2.9_linux_*

Se déconnecter avec:

Ctrl + Alt + F1

Login, mot de passe, puis les commandes notées sur le papier: Arréter le serveur X avec:

sudo /etc/init.d/lightdm stop

Puis

chmod +x cudatoolkit_4.2.9_linux_*
sudo ./cudatoolkit_4.2.9_linux_*

Laisser les chemins par défaut, redémarrer.

Les 2 premières lignes sont pour la session actuelle, les 2 suivantes pour les suivantes, ça copie dans bash_profile:

export PATH=$PATH:/usr/local/cuda/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib:/usr/local/cuda/lib64
echo 'export PATH=$PATH:/usr/local/cuda/bin' >> ~/.bash_profile
echo 'export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib:/usr/local/cuda/lib64' >> ~/.bash_profile

Vérifiez avec Cycles dans Blender !

Compilation avec le tuto

Il y a beaucoup de problèmes et erreurs. Les solutions sont dans le post ou les commentaires: faire une recherche dans la page avec l'erreur.

Il y a aussi le script de compilation fournit ici : https://github.com/anders-dc/vsfm-linux-x86_64 qui fonctionne pas mal, la seule chose que j'ai eu à modifier lors du make est le chemin d'install d'un utilitaire nvidia (nvcc) qui dans son makefile est indiqué par défaut à /usr/local/bin/nvcc alors que dans mon cas il était bêtement rangé dans /usr