Modifications

Scan3D

7 041 octets ajoutés, 10 mars 2015 à 16:12
kinect
à 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
==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)
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...  ==autres =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à : à tester un reconstructeur assez simple dhttp://combiencaporte.blogspot.fr/2012/07/la-photogrammetrie-visualsfm-et-meshlab.html j'abordai testé mais pas trouvé concluant
==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===
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/
0
6 691
modifications