andyzeng / tsdf-fusion

Fuse multiple depth frames into a TSDF voxel volume.
http://andyzeng.github.io/
BSD 2-Clause "Simplified" License
712 stars 133 forks source link

Point cloud #9

Open HelliceSaouli opened 6 years ago

HelliceSaouli commented 6 years ago

Hello I 'm just wondering is there a way to go back from Point cload to a TSDF volume ?

andyzeng commented 6 years ago

Hello! Yes - one straightforward way would be to construct a voxel grid around your point cloud, where the value of each voxel is the distance to the nearest point in the point cloud. Distance values that are too large are truncated. You can then multiply voxels "inside" the point cloud by -1 and multiply voxels "outside" the point cloud by +1.

If you don't have this notion of "inside" vs "outside", then you won't be able to recover the sign of your distance values, in which case the representation is termed TDF. Matlab and C++/CUDA code to compute TDF volumes from point clouds and meshes can be found in the 3DMatch Toolbox.

chuyaqifei commented 2 years ago

Hi~ I just read a paper about this. Before converting a pointcloud to a TSDF volume, the pose at which the point is observed should be saved. Then the ray casting method can be used to recover the occupancy of each volume. The paper is called "Coxgraph ...." published in IROS 2021.

mpottinger commented 1 year ago

Hi~ I just read a paper about this. Before converting a pointcloud to a TSDF volume, the pose at which the point is observed should be saved. Then the ray casting method can be used to recover the occupancy of each volume. The paper is called "Coxgraph ...." published in IROS 2021.

Yes I have learned something similar from the vdbfusion library. https://github.com/PRBonn/vdbfusion

This repository here was the first that helped me understand how tsdf fusion works, but the disadvantage is that it operates on a fixed size dense voxel grid. Vdbfusion showed me it is possible to do tsdf fusion in a sparse grid with a pointoud and camera pose as input.