victorprad / InfiniTAM

A Framework for the Volumetric Integration of Depth Images
http://www.infinitam.org
Other
930 stars 351 forks source link

Error in implementation of Keller's point(surfel) based "Reconstruction in Dynamic Scenes" #78

Closed zhangxaochen closed 7 years ago

zhangxaochen commented 7 years ago

Hi~ @victorprad thanks for your excellent code! I notice that the InfiniTAM v3 has implemented Keller's paper [1], which is also introduced in the (news page)[http://www.robots.ox.ac.uk/~victor/infinitam/]:

an implementation of Keller et al.’s surfel-based reconstruction approach.

However, when running the executable with surfel-based reconstruction enabled (libMode = LIBMODE_BASIC_SURFELS), I find this implementation could not handle reconstruction in dynamic scenes, as shown in the figure below: image

When I move my left hand AWAY, it could not update the model by eliminating the non-existing hand, which is unlike Keller's system demoed on YouTube.

How can we fix this?

References: [1] Keller M, Lefloch D, Lambers M, et al. Real-time 3d reconstruction in dynamic scenes using point-based fusion[C]//3DTV-Conference, 2013 International Conference on. IEEE, 2013: 1-8.

sgolodetz commented 7 years ago

@zhangxaochen: Since surfel support is in beta, the hierarchical region growing component of [1] is not currently implemented unfortunately (see the footnote in the technical report). To fix the problem noted, it would be necessary to implement it - I'm unlikely to get a chance to implement it any time soon, but if lots of people want it then it may happen for a future version of InfiniTAM.

shane7226107 commented 5 years ago

Hi guys,

Since this issue is been closed, I assume that Keller's method is implemented.

But how do I switch to Keller's mode?

thanks!

sgolodetz commented 5 years ago

To try the implementation of surfels that's there, change the libMode to LIBMODE_BASIC_SURFELS in ITMLibSettings.cpp. As mentioned, the dynamic scenes part of Keller's method is not currently implemented (and honestly is not something I'm likely to have time to look at as things stand - currently very busy with other things).

Note that if you want to run voxel and surfel reconstructions alongside each other for comparison, you can do that using SemanticPaint (https://github.com/torrvision/spaint) - you just need to specify the --mapSurfels flag on the command line and then change one of the subwindows to show the surfel map (see the help by pressing H). You can also test surfel-based tracking using --trackSurfels (otherwise it tracks against the voxel scene).

shane7226107 commented 5 years ago

I got it, thank you very much @sgolodetz !