Closed Sirius-zn closed 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.
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?
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.
Thanks for the clarifications!
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!