Scan 3D
Sommaire
Introduction
Dans le cadre de la cinquième année nous avons pour consigne de réaliser un projet en rapport avec notre formation. Nous avons choisi de travailler sur le projet du Scan 3D car nous sommes tous les deux intéressé par l'utilisation des capacités de la Kinect.
Ce projet est un projet industriel en lien avec la société Oxylane. Au sein de cette dernière, beaucoup de prototypes ont été réalisés sans passer préalablement par une phase de conception 3D. Ce sont des prototypes uniques, des objets difficilement duplicables. De plus en plus de concepteurs, de designers et de chercheurs aimeraient pouvoir continuer à travailler sur ces objets physiques dans le monde virtuel. Oxylane cherche donc un moyen de scanner ces objets sans passer par des équipements très coûteux.
Présentation du projet
Ce projet consiste donc de réaliser un prototype de scanner 3D en utilisant la Kinect, permettant de transformer des objets réels en forme 3D. Les besoins les plus forts concernent actuellement les casques de vélo et les chaussures.
Cependant avant de se lancer directement dans le scan 3D, nous devons tout d'abord étudier ce qu'il est possible de faire actuellement avec la Kinect. De nombreux documents sont là pour nous aider ainsi qu'une base de logiciel permettant le scan 3D : Kinect Fusion (KinFu).
Etat de l'art
Réalisation
Lors des 4 premières séances de projets que nous avons pu faire, nous nous sommes intéressé à l'installation et à l'utilisation des OpenSources de Kinect Fusion.
Installation de OpenNi, Nite, SensorKinect
- Installer OpenNi Unstable
- Pré-requis
Obligatoires : 1) GCC 4.x apt-get install g++ 2) Python 2.6+/3.x apt-get install python 3) LibUSB 1.0.x apt-get install libusb-1.0-0-dev 4) FreeGLUT3 apt-get install freeglut3-dev 5) JDK 6.0 apt-get install openjdk-6-jdk
Optionel (Pour la documentation): 1) Doxygen apt-get install doxygen 2) GraphViz apt-get install graphviz
- Installation
cd ~/OpenNi/Platform/Linux/CreateRedist chmod +x RedistMaker ./RedistMaker cd ~/OpenNi/Platform/Linux/Redist/OpenNI-Bin-Dev-Linux-x64-v1.5.4.0 su ./install.sh
- Installation de SensorKinect :
cd ~/SensorKinect/Platform/Linux/CreateRedist chmod +x RedistMaker ./RedistMaker cd ~/SensorKinect/Platform/Linux/Redist/Sensor-Bin-Linux-x64-v5.1.2.1 ./install.sh
Installation de la PCL Expérimentale
Obligatoire :
- cmake
apt-get install cmake
- Boost ≥ 1.46
apt-get install libboost-all-dev
- Eigen ≥ 3.0
apt-get install libeigen3-dev
- FLANN ≥ 1.7.1
apt-get install libflann-dev
- VTK ≥ 5.6
apt-get install libvtk5-dev
Installation
cd ~Pcl/trunk mkdir build && cd build && cmake .. make make install
Utilisation de KinFu LargeScale
- d'après le tutoriel :
http://pointclouds.org/documentation/tutorials/using_kinfu_large_scale.php
- ./bin/pcl_kinfu_largeScale -r -et
- ./bin/pcl_kinfu_largeScale_mesh_output world.pcd
- Fusionner les mesh générés avec MeshLab et l'exporter dans KinFuSnapshots
- ./bin/pcl_kinfu_largeScale_texture_output KinFuSnapshots/merged_mesh.ply
Fonctionnment de Kinect Fusion
Afin de détecter la profondeur des objets présents dans la scène, Kinect Fusion utilise la caméra infra-rouge de la kinect. Un projecteur infrarouge projette une lumière invisible sur la scène. Il a été spécialement conçu pour projeter les points à la manière d'un laser de telle sorte que les points ne se dilatent pas avec la distance. Cette lumière est lu par la caméra infrarouge. Une fois que ce schéma est lu par la caméra infrarouge, le programme Kinect Fusion recherche des corrélations. Si il en trouve,le processeur dans le kinect est alors en mesure d'utiliser cette information pour trianguler la position 3D des points.
Réunion du 12 novembre avec Oxylane
Nous avons rencontré lors de cette réunion le responsable du service innovation de Oxylane. Nous lui avons montré nos avancements dans les tests de Kinect Fusion et nous nous sommes mis d'accord sur les trois points d'études suivants :
Etude des limites du programme Kinect Fusion (avantages, inconvénients, ajouts de fonctionnalités possibles). Tests avec la Kinect de bureau pour améliorer la précision. Tests pour la création d'un scénario complet de scan d'un casque de vélo.