Replies: 3 comments 20 replies
-
Upon further experimentation & extending Open3D code, I believe voxel centers are directly represented by the multiple of voxel_size and the global coordinates, with no offset. This ultimately means spatial hash block coordinates will have an offset of 1/2 voxel from the nearest voxel center (since these have to include an N^3 cube of whole voxels), which may be relevant to any algorithms involving the hash blocks. |
Beta Was this translation helpful? Give feedback.
-
It is generally a matter of understanding. My interpretation is that the position at which we store the TSDF value is in practice the voxel center (which is, conceptually, usually regarded as a corner of the voxel where we need to add and subtract 0.5 voxel size back and forth). The surface extraction is based on the interpolation of isosurface values at these positions, and the TSDF values at these positions are computed with projective data association -- that being said, I would prefer to say that there is no bias/offset. In fact, when I imagine the representation in my head, I usually view it as a collection of grid points, instead of cubes. That perspective might be closer to the implementation. |
Beta Was this translation helpful? Give feedback.
-
Should we close this discussion @Algomorph ? |
Beta Was this translation helpful? Give feedback.
-
Question: internally, how are voxel centers treated in TSDF?
TLDR; for instance, when a mesh is extracted, it seems like currently there is no extra offset:
https://github.com/intel-isl/Open3D/blob/ad4455f09bf47db99c791257fda96e77859ffb80/cpp/open3d/t/geometry/kernel/TSDFVoxelGridImpl.h#L714-L716
https://github.com/intel-isl/Open3D/blob/ad4455f09bf47db99c791257fda96e77859ffb80/cpp/open3d/t/geometry/kernel/TSDFVoxelGridImpl.h#L761-L763
Am I correct in thinking then that
voxel_x_center_meters
=voxel_size
*voxel_global_x_coordinate
?Beta Was this translation helpful? Give feedback.
All reactions