Sekunde / 3D-SIS

[CVPR'19] 3D-SIS: 3D Semantic Instance Segmentation of RGB-D Scans
Other
379 stars 72 forks source link

Question for Depth Mask in projection #21

Closed Sirius-zn closed 4 years ago

Sirius-zn commented 4 years ago

Congrats! Great work! Thank you for making the reproduction process so easy for this repo!

I have a question regarding this line: https://github.com/Sekunde/3D-SIS/blob/master/lib/layer_utils/projection.py#L103

When we are creating the depth mask at this line, why are we clipping against voxel_size here?

Thank you for your time in advance!

Sekunde commented 4 years ago

It is not clipping, it is range checking. When we do back projection, we project from 3D to 2D. For each voxel, we check its corresponding pixel location, and its depth value on the depth map, to see whether this voxel is on the surface. As you know, the depth value can not be exactly the same due to rounding error, we set depth value +/- voxel size as the range. If the voxel falls into this depth range, we think this voxel is on the surface.

Sirius-zn commented 4 years ago

Why set the depth range using voxel_size particularly? Is there any geometric insight behind this choice? Would any other choice of range also work as fine, for example, sqrt(3)voxel_size, which represents the diagonal length across the voxel, or sqrt(2)voxel_size, which is the 2D diagonal length, or simply +- 0.1 m?

Sekunde commented 4 years ago

the other choice would also work, e.g. +- 0.1m, but this could influence the final number. The reason why we chose one voxel size because we think the rounding error mostly can not be larger than one voxel.

Sirius-zn commented 4 years ago

Thanks for the clarifications!