Atualização : uma versão python deste código com suporte para CPU/GPU pode ser encontrada aqui.
Código CUDA/C++ para fundir vários mapas de profundidade registrados em um volume de voxel de função de distância assinada truncada projetiva (TSDF), que pode então ser usado para criar malhas de superfície 3D de alta qualidade e nuvens de pontos. Testado no Ubuntu 14.04 e 16.04.
Procurando uma versão mais antiga? Veja aqui.
tsdf2mesh.m
agora gera corretamente uma malha nas coordenadas da câmera em vez de coordenadas de voxel.SaveVoxelGrid2SurfacePointCloud
no código de demonstração para permitir a criação de visualizações de nuvem de pontos com apenas um quadro de profundidade. Esta demonstração funde 50 mapas de profundidade registrados do diretório data/rgbd-frames
em um volume de voxel TSDF projetivo e cria uma nuvem de pontos de superfície 3D tsdf.ply
, que pode ser visualizada com um visualizador 3D como o Meshlab.
Nota : Os mapas de profundidade de entrada devem ser salvos no formato: PNG de 16 bits, profundidade em milímetros.
./compile.sh # compiles demo executable
./demo # 3D point cloud saved to tsdf.ply and voxel grid saved to tsdf.bin
[Opcional] Esta demonstração também salva o volume de voxel calculado em um arquivo binário tsdf.bin
. Execute o seguinte script no Matlab para criar uma malha de superfície 3D mesh.ply
, que pode ser visualizada com Meshlab.
tsdf2mesh ; % 3D mesh saved to mesh.ply
Este repositório faz parte do 3DMatch Toolbox. Se você achar este código útil em seu trabalho, considere citar:
@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}
}