AndreiBarsan / DynSLAM

Master's Thesis on Simultaneous Localization and Mapping in dynamic environments. Separately reconstructs both the static environment and the dynamic objects from it, such as cars.
BSD 3-Clause "New" or "Revised" License
578 stars 178 forks source link

Voxel GC #7

Closed AndreiBarsan closed 7 years ago

AndreiBarsan commented 7 years ago

It seems that much of the noisy voxels in the reconstruction which stem from the noise in the depth estimation can be singled out by looking at their weight. In the following image, red areas correspond to voxels with weight = 1, i.e., which were only "seen" once:

image

The blue voxels are those with the maximum allowed weight (in our case, just 10, since the camera is moving quite quickly; the original InfiniTAM had ~100).

A quick and dirty solution would be to simply not render low-weight voxels, but that would also require modifications to the mesh generation algorithm.

A better solution would be to (efficiently) trim all voxels with age > k but weight < l, effectively regularizing the resulting reconstruction. This is what I'll be implementing in the end.

Subtasks:

AndreiBarsan commented 7 years ago

May be worth implementing #19 first to simplify the bookkeeping.

AndreiBarsan commented 7 years ago

I implemented #19 and, together with it, added full support for voxel gc, complete with correct block freeing and recycling. Everything is done, except the dedicated GUI button, which is low-priority and should be a different issue anyway.