Part 1: Photoscan | Part 2: VisualSFM+MeshRecon | Part 3: VisualSFM+PMVS+Meshlab | Part 4: OpenMVG + MVE | Part 5: MVE | Part 6: ReMake | Part 7: SMVS (+MVE) | Part 8: COLMAP | Part 9: 3DF Zephyr Free | Part 10: MicMac | Part 11: VisualSFM + openMVS, & COLMAP + openMVS | Part 12: Revisiting OpenMVG (with OpenMVS) [updated] | Part 13: Revisiting 3DFZephyr Free (v4.001) | Part 14: AliceVision Meshroom
Current Recommendation: Part 14, AliceVision Meshroom
This post was updated 27/5/17 – see end of post; turns out using COLMAP for sparse reconstruction let openMVS create an awesome mesh.
Normally I see OpenMVS mentioned in the same breath as OpenMVG, but I’m still having significant troubles with OpenMVG behaving with this dataset, so I’ll run the matching with VisualSFM.
Download VisualSFM here: http://ccwu.me/vsfm/
And Download OpenMVS binaries here: http://cdcseacave.github.io/openMVS/ (or build it yourself from source.)
It’s a while since I’ve used VisualSFM, preferring COLMAP recently. My word it is fast!
95 seconds to a full reconstruction of all 53 images:
Then SfM->Save nvmatch.
I’ve saved it in a folder called “work”, and named the file “Styrac.nvm”. My openMVS binaries are in a folder at the same level as work, called openMVS_binaries.
I’m running the following commands through powershell in windows.
..\openMVS_binaries\InterfaceVisualSFM.exe -i .\styrac.nvm
This was super quick.
Densify point cloud:
..\openMVS_binaries\DensifyPointCloud.exe -I styrac.mvs
Here’s what the dense cloud looks like:
It’s… well, it’s pretty noisy.
Time taken: 17 minutes 6 seconds.
We can run this on either the sparse or the dense point cloud.
I also ran this on the sparse cloud just for interest sake, and because the dense cloud was so noisy:
After reconstructing the mesh, we refine it. Again, I’ve done this on both the sparse and dense cloud:
..\openMVS_binaries\RefineMesh.exe styrac_dense_mesh.mvs –resolution-level 2
It’s worth noting that on my 16Gb ram machine, I ran out of memory while refining the mesh for the sparse cloud so needed to add the “resolution-level 2″ to reduce memory usage.
The sparse cloud has actually resulted in a mesh not too dissimilar to the dense cloud.
Use the command:
Well, sadly I didn’t manage to get amazing results. It looks like things fell apart on the Densify Point Cloud stage, and perhaps with a bit more digging I’ll be able to improve the results.
What is noteworthy is that meshing the sparse cloud actually resulted in a reasonably nice model, especially when textured, and could perhaps be useful for “quick’n’dirty” models.
As always, if time permits I’ll play a little more and see if I can improve these results. For now though, ColMap remains my Goto.
Turns out what you use for the sparse reconstruction matters. Even though VisualSFM looked good at the camera matching stage, it was the reason the final mesh from openMVS wasn’t great. The thread with the author of openMVS, at the sketchfab model above inspired me to try a different matching software. So I ran COLMAP and exported the cameras + sparse cloud as a *.nvm file, then did exactly the same with openMVS as described above. This was the result:
I’m sure you’ll agree that this is probably about the best model produced yet in this series!