cdcseacave / openMVS

open Multi-View Stereo reconstruction library
http://cdcseacave.github.io
GNU Affero General Public License v3.0
3.31k stars 907 forks source link

Theory behind mesh reconstruction and cleaning #588

Open raphaelsulzer opened 4 years ago

raphaelsulzer commented 4 years ago

Hi,

you state that your mesh reconstruction (and refinement) is based on "Exploiting Visibility Information in Surface Reconstruction to Preserve Weakly Supported Surfaces M. Jancosek et al. 2014." (and High Accuracy and Visibility-Consistent Dense Multiview Stereo HH. Vu et al. 2012.). Would it be appropriate to use the results of your implementation as a representation of these algorithms in a scientific publication (also giving proper credit to your implementation)? In other words, are there any major differences between your implementation and these papers?

I did some benchmarking on the ETH3D dataset, and noticed that the mesh cleaning options and the iterative fixNonManifold function you implemented usually improve the qualitative and sometimes even quantitative results of a mesh reconstruction a lot. Both of the papers above do not really mention these cleaning steps, or at least not in detail. Is there any publication related to these steps, or would you be able to explain the theory behind them in a bit more detail?

Kind regards

cdcseacave commented 4 years ago

Hi Raphael,

OpenMVS modules are all based (inspired) on ideas originally presented in some papers (as listed in Wiki). However, a paper rarely presents all needed steps to implement the presented idea (and often not even the entire idea), so even if one wants to 100% implement a paper, in the end he can only guess it is how the author implemented it.

On top of that, I never implemented a paper exactly as described. Before I implemented any of the OpenMVS modules I read hundreds of papers on the topics, and during implementation I blended ideas from all of them, plus original ideas. I think mesh reconstruction and texturing are the modules most closely implementing the original papers. Please note that mesh reconstruction, while implements the weak surfaces support, it is disabled by default, as I found it creating problems more often than solving.

So I have no problems citing the original papers, but is you responsibility to check that OpenMVS code you use is exactly what the paper describes.

Regards!

raphaelsulzer commented 4 years ago

Thanks a lot for the answer!

You wouldn't remember from where you drew inspiration for the mesh cleaning steps?

cdcseacave commented 4 years ago

I don't think there is any paper describing that