Обновление : версию этого кода на Python с поддержкой как CPU, так и GPU можно найти здесь.
Код CUDA/C++ для объединения нескольких зарегистрированных карт глубины в объем вокселей проективной функции усеченного знака расстояния (TSDF), который затем можно использовать для создания высококачественных трехмерных поверхностных сеток и облаков точек. Протестировано на Ubuntu 14.04 и 16.04.
Ищете более старую версию? Смотрите здесь.
tsdf2mesh.m
теперь правильно генерирует сетку в координатах камеры, а не в координатах вокселей.SaveVoxelGrid2SurfacePointCloud
в демонстрационном коде, чтобы можно было создавать визуализации облака точек только с одним кадром глубины. Эта демонстрация объединяет 50 зарегистрированных карт глубины из каталога data/rgbd-frames
в проективный объем вокселей TSDF и создает трехмерное облако точек поверхности tsdf.ply
, которое можно визуализировать с помощью средства трехмерного просмотра, такого как Meshlab.
Примечание . Входные карты глубины следует сохранять в формате: 16-битный PNG, глубина в миллиметрах.
./compile.sh # compiles demo executable
./demo # 3D point cloud saved to tsdf.ply and voxel grid saved to tsdf.bin
[Необязательно] Эта демонстрация также сохраняет вычисленный объем воксела в двоичный файл tsdf.bin
. Запустите следующий скрипт в Matlab, чтобы создать трехмерную сетку поверхности mesh.ply
, которую можно визуализировать с помощью Meshlab.
tsdf2mesh ; % 3D mesh saved to mesh.ply
Этот репозиторий является частью 3DMatch Toolbox. Если вы найдете этот код полезным в своей работе, рассмотрите возможность цитирования:
@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}
}