Mise à jour : une version python de ce code avec prise en charge CPU/GPU peut être trouvée ici.
Code CUDA/C++ pour fusionner plusieurs cartes de profondeur enregistrées dans un volume de voxel de fonction de distance signée tronquée projective (TSDF), qui peut ensuite être utilisé pour créer des maillages de surface 3D et des nuages de points de haute qualité. Testé sur Ubuntu 14.04 et 16.04.
Vous recherchez une ancienne version ? Voir ici.
tsdf2mesh.m
génère désormais correctement un maillage avec les coordonnées de la caméra au lieu des coordonnées du voxel.SaveVoxelGrid2SurfacePointCloud
dans le code de démonstration afin de permettre la création de visualisations de nuages de points avec une seule image de profondeur. Cette démo fusionne 50 cartes de profondeur enregistrées à partir de data/rgbd-frames
dans un volume de voxel TSDF projectif et crée un nuage de points de surface 3D tsdf.ply
, qui peut être visualisé avec une visionneuse 3D comme Meshlab.
Remarque : Les cartes de profondeur en entrée doivent être enregistrées au format : PNG 16 bits, profondeur en millimètres.
./compile.sh # compiles demo executable
./demo # 3D point cloud saved to tsdf.ply and voxel grid saved to tsdf.bin
[Facultatif] Cette démo enregistre également le volume de voxel calculé dans un fichier binaire tsdf.bin
. Exécutez le script suivant dans Matlab pour créer un maillage de surface 3D mesh.ply
, qui peut être visualisé avec Meshlab.
tsdf2mesh ; % 3D mesh saved to mesh.ply
Ce référentiel fait partie de 3DMatch Toolbox. Si vous trouvez ce code utile dans votre travail, pensez à citer :
@inproceedings{zeng20163dmatch,
title={3DMatch: Learning Local Geometric Descriptors from RGB-D Reconstructions},
author={Zeng, Andy and Song, Shuran and Nie{ss}ner, Matthias and Fisher, Matthew and Xiao, Jianxiong and Funkhouser, Thomas},
booktitle={CVPR},
year={2017}
}