« Scan3D » : différence entre les versions
De fablabo
(50 versions intermédiaires par 2 utilisateurs non affichées) | |||
Ligne 1 : | Ligne 1 : | ||
à l'occasion de la fabacademy divers tests de scan 3D | à l'occasion de la [http://academy.cba.mit.edu/classes/scanning_printing/index.html fabacademy] j'ai réalisé divers tests de scan 3D avec différentes techniques | ||
==openMVG== | ==Photogramétrie== | ||
Cette technique issue de la photographie aérienne permet de déduire une forme 3D de plusieurs vues 2D d'un objet prises sous différents angles. | |||
elle peut être précise et est assez pratique de par le fait qu'elle utilise un simple appareil photo comme capteur. elle est aussi de ce fait adaptable à de différentes échelles d'objets. Par contre elle est difficile à mettre en oeuvre car les calculs mathématiques sont compliqués. | |||
Une version commerciale de cette technique est disponible en ligne depuis peu avec 123Dcatch d'autodesk. Mais il existe des solution libres. | |||
===openMVG=== | |||
librairies de reconstruction par homographie (plusieures prises de vues) | librairies de reconstruction par homographie (plusieures prises de vues) | ||
== | Cette librairie se veut simple...mais j'ai réussi à la compiler et à jouer les exemples, je n'ai pas compris comment m'en servir... | ||
===MicMac=== | |||
http://logiciels.ign.fr/?Micmac | |||
Développé à l'IGN, ce logiciel a l'air très performant (j'ai testé l'exemple bouddha) mais compliqué d'abord aussi | |||
[http://blog.serveurperso.ath.cx/wordpress/?p=134 un article en français] sur le sujet | |||
[http://forum-micmac.forumprod.com/how-to-takes-photos-for-micmac-tutorial-t174.html tutoriel en anglais] | |||
====Compilation de MicMac==== | |||
path2repertoire : repertoire d'installation du bidule | |||
cd path2repertoire | |||
hg clone https://culture3d:culture3d@geoportail.forge.ign.fr/hg/culture3d micmac-hg | |||
cd micmac-hg | |||
mkdir bin | |||
mkdir build | |||
cd build | |||
cmake ../ -DWITH_INTERFACE=1 | |||
make -j2 | |||
make install PREFIX=path2repertoire/micmac-hg/bin | |||
notes : | |||
- hg sous fedora est dans le paquet mercurial | |||
- l'option -DWITH_INTERFACE=1 permet d'activer la compilation de l'interface graphique | |||
- l'option -j2 compilation pour un cpu double cœur | |||
- l'option install PREFIX=path2repertoire/micmac-hg/bin fait l'installation dans le répertoire path2repertoire/micmac-hg/bin | |||
====bouddha==== | |||
c'est le fichier exemple fourni sur le site de l'ign: | |||
[[image:bouddha.jpg|400px]] | |||
Ceci est une des 30 images des données de départ | |||
[[image:boudha.meshlab.png|400px]] | |||
le nuage de points dans meshlab | |||
Ceci m'a permis de tester la reconstruction dans meshlab, avec le filtre "surface reconstruction poisson" | |||
[[image:Bouddha.render.png|400px]] | |||
Le rendu est très satisfaisant mais, | |||
même si j'ai réussi à le mettre en oeuvre, j'ai eu du mal à comprendre les réglages à réaliser. | |||
à creuser... | |||
====interface graphique==== | |||
j'ai trouvé une interface graphique : http://www.micmac.ign.fr/svn/micmac_data/trunk/DocInterface/ | |||
mais le fichier compilé contient un bug... | |||
===VisualSFM=== | |||
http://ccwu.me/vsfm/ | |||
plus facile apparement | |||
un tutoriel là : http://combiencaporte.blogspot.fr/2012/07/la-photogrammetrie-visualsfm-et-meshlab.html | |||
j'ai testé mais pas trouvé concluant | |||
==meshlab== | ==meshlab== | ||
Meshlab est un logiciel de traitement et reconstruction de maillage. il est très utile pour filtrer les résultats d'un scan | |||
===ouvrir des .ply en ascii 1.0=== | ===ouvrir des .ply en ascii 1.0=== | ||
Ligne 25 : | Ligne 116 : | ||
http://meshlabstuff.blogspot.fr/2009/09/meshing-point-clouds.html | http://meshlabstuff.blogspot.fr/2009/09/meshing-point-clouds.html | ||
==expérience avec la Lumière structurée== | |||
Cette technique offre plusieurs avantages : | |||
* dispositif de capture simple (caméra+projecteur) | |||
* changement d'échelle possible | |||
* simplicité du traitement | |||
J'avais déjà découvert cette technique en visitant l'institut [http://www.pprime.fr/?q=fr/la-photomecanique P Prime] à poitiers, qui l'utilise pour mesurer les déformations des matériaux. | |||
J'ai téléchargé et exploré le [http://academy.cba.mit.edu/classes/scanning_printing/light/index.html programme de Neil], pour voir jusqu'où je pouvais aller. | |||
C'est donc un programme en cours de construction que j'ai exploré. | |||
Comme j'étais chez moi sans les outils pour réaliser une capture, j'ai commencé par me focaliser sur le traitement du fichier de capture pour obtenir un fichier stl. | |||
===process de traitement=== | |||
Habitué à traité les images, j'ai trouvé simple de traiter l'essentiel des données sous cette forme, avant la transformation en stl. | |||
Les fichiers de départ sont le "diffs.png" et une image recomposée d'un scan d la zone vide. | |||
[[image:3Dscan.structuredLight.Process.png|1200px]] | |||
Les traitements ont été réalisés dans gimp, mais certains pourraient être automatisés, notamment à l'aide de la librairie opencv (déjà utilisée dasn le programme de Neil). | |||
Pour le passage du png en stl, j'ai utilisé le programme '''png_stl''' | |||
la dernière étape (visible sur l'image) a consisté à appliquer un modifieur "smooth" sous blender. | |||
Le résultat n'est pas si mal, mème si la régularité de la surface laisse encore à désirer. | |||
===Prise de vue=== | |||
Revenu à l'atelier, j'ai installé un dispositif pour réaliser une prise de vue expérimentale. | |||
* un videoprojecteur | |||
* une webcam HD (logitech hd1080) | |||
[[image:Structuredlight.All_color.png|400px]] | |||
après quelques réglages, notament le réglage manuel de la caméra via guvcview, j'ai obtenu les images suivantes : | |||
la théière : | |||
./coord teapot/teapot.png 0 /dev/video2 | |||
[[image:structuredlight.Teapot.png|400px]] | |||
le fond vide : | |||
./coord teapot/empty.png 0 /dev/video2 | |||
[[image:structuredlight.Empty.png|400px]] | |||
j'ai mélangé ces images : soustraction puis addition de teapot en "éclaircir seulement", puis re-soustraction du fond vide : | |||
[[image:Structuredlight.Teapot.sub.jpg|400px]] | |||
enfin, quelques retouches manuelles : | |||
[[image:structuredlight.Teapot.clean.png|400px]] | |||
le fichier est alors converti en stl avec la commande | |||
./png_stl teapot/teapot.clean.png teapot/teapot.stl 5 | |||
[[image:structuredlight.Teapot.stl.render.png|400px]] | |||
Dans blender j'ai rajouté un modifieur "smooth" à 1.8 et 5 passes. | |||
Dans meshlab : | |||
Filters > Smooth... > Laplacian smooth =10 | |||
puis | |||
Filters > Remeshing, simplification and construction > Quadratic Edge Collapse Detection | |||
paramètres : | |||
30% de reduction | |||
quality : 0.7 | |||
optimal position of simplified vertices = 1 | |||
post-simplification cleaning | |||
https://www.inkling.com/read/making-things-see-borenstein-1e/chapter-5/reduce-polygons-in-meshlab | |||
le résultat est encourageant. il faudrait améliorer les conditions de prise de vue : | |||
* noir complet lors de la prise de vue | |||
et effectivement la parallaxe est génante. | |||
==kinect== | |||
Le capteur kinect est adapté pour scanner des formes à échelle humaine. | |||
J'ai utilisé openkinect (freenect) avec l'utilitaire fakenect record, qui produit des capture brutes sous forme d'image png. | |||
Les scans bruts sont très bruités et avec des trous liés aux zones d'ombres de la projection infrarouge. | |||
[[image:D-1393711530.532692-2359237902.png|400px]] | |||
Pour améliorer le rendu, j'ai empilé des scans en "assombrir seulement" avec gimp. | |||
après quelques retouches manuelles j'ai obtenu un fichier à peut près propre | |||
[[image:kinect.Composite.png|400px]] | |||
après une transformation en stl avec l'utilitaire de Neil (png_stl) j'ai obtenu un fichier 3D exploitable | |||
[[image:Kienct.render.png|400px]] | |||
Dans blender, j'ai ajouté ici aussi un filtre "smooth" et "solidify", pour exporter un fichier stl imprimable. | |||
(il est vrai que ça aurai été mieux si j'avais été chez le coiffeur) | |||
Mon égo n'est pas assez développé pour que j'imprime mon effigie, mais j'ai validé que ce fichier est imprimable | |||
[[image:Kinect.printable.png|400px]] | |||
[[Catégorie:FabAcademy]] | |||
===autres pistes et ressources=== | |||
http://pointclouds.org/ |