cdcseacave / openMVS

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

How to use more then one PC? #231

Open xuelinchao opened 7 years ago

xuelinchao commented 7 years ago

how can i use more then one PC to compute one model? can i use 2 or 3 PC to run openMVS together?

cdcseacave commented 7 years ago

sorry, this is not supported

mrgloom commented 6 years ago

How memory(RAM) requirements depends on number of images? Any a rough estimate?

cdcseacave commented 6 years ago

OpenMVG just released a new version (v1.2) that is able to cluster the scene in smaller peaces and process them individually in OpenMVS, thus overcome the memory limit and process virtually any number of images. See: SfM_Data clustering for chunk post-processing in MVS.

pmoulon commented 6 years ago

You can checkout master there: https://github.com/openMVG/openMVG and look to the binary called openMVG_main_ComputeClusters

bkjohnson commented 6 years ago

I was able to get OpenMVG's ComputeClusters to work all the way up through creating a dense point cloud in OpenMVS. However, when I try to call ReconstructMesh I always end up with an empty mesh (I've tried 0, 0.5, and 10 for the --quality-factor and --thickness-factor:

17:32:56 [App     ] Scene loaded (131ms):
    20 images (20 calibrated) with a total of 9.89 MPixels (0.49 MPixels/image)
    95780 points, 0 vertices, 0 faces
Points inserted 95780 (100%, 691ms)                
17:32:57 [App     ] Delaunay tetrahedralization completed: 95780 points -> 46352 vertices, 271490 (+226) cells, 543093 (+339) faces (729ms)
Points weighted 46352 (100%, 12ms)
17:32:57 [App     ] Delaunay tetrahedras weighting completed: 271716 cells, 543432 faces (212ms)
17:32:57 [App     ] Delaunay tetrahedras graph-cut completed (0 flow): 0 vertices, 0 faces (270ms)
17:32:57 [App     ] Mesh reconstruction completed: 0 vertices, 0 faces (1s275ms)
17:32:57 [App     ] Scene saved (1ms):
    20 images (20 calibrated)
    0 points, 0 vertices, 0 faces
17:32:57 [App     ] MEMORYINFO: {
17:32:57 [App     ]     VmPeak:   800992 kB
17:32:57 [App     ]     VmSize:   717784 kB
17:32:57 [App     ] } ENDINFO

My goal was to create meshes from the chunks, refine & texture them and then merge them back together, but after thinking some more about it I'm not sure it is possible. Merging point clouds is one thing, but merging meshes together seems much more difficult.

So, is ComputeClusters only designed for creating chunks up until the point cloud stage?

cdcseacave commented 6 years ago

Is ReconstructMesh working for a normal scene (not clustered)?

pmoulon commented 6 years ago

@bkjohnson ComputeClusters is used to cut a large scene into tiny chunks. It is mostly helpful to compute point clouds. As you saw merging mesh is a tedious task.

The ideal solution for use would be to make a open source version of Scalable Surface Reconstruction from Point Clouds with Extreme Scale and Density Diversity - CVRP17

bkjohnson commented 6 years ago

@cdcseacave I keep getting inconsistent results with ReconstructMesh and I haven't figured out why yet. I will use the exact pipeline on the same dataset and sometimes I'll get a great mesh, sometimes it will be empty, and other times it looks very bad. I don't want to hijack this issue with my unrelated problem, so I'll try for a few more days to figure it out and if it is still inconsistent I'll open a new issue with more details. I guess the short answer is "sometimes it works".

@pmoulon that looks exciting! I read the article but I'll need to familiarize myself with more of the theory in order to make sense of it.