3

I've been trying to use COLMAP to produce 3D meshes from photographs, but all I can get is useless point clouds.

I've studied various YouTube tutorials, but the results I get differ from what I am seeing, mainly in that I can never get a solid 3D mesh.

In order to get consistent exposure I bought an iPhone app called ProMovie+ that can shoot in 4K with the exposure locked but will focus on the subject as needed. (iPhone's built-in AE/AF Lock feature was leaving many shots out of focus, but the app solved that.)

Next I saved still PNG images from the resulting 4K video. Everything seems to be high enough quality as far as the source images are concerned.

At first captured 1 PNG per second of footage. After not getting good results with that I tried increasing the FPS in various increments, even up to 30fps (which is what I shot at, and I think is overkill). So I am now ruling out a problem of not enough frame data. There must be something else causing my captures to be poor.

Here is what I end up with:

COLMAP is generating point clouds, but no mesh

Camera positions are represented in red, and since I used so many frames of data (nearly 500) in hopes of getting usable results, it shows as one big red solid line. Can you see that yellow thing sticking up in the point cloud? That's the object I attempted to capture. Doesn't look like much of anything...

I expected results more like this (taken from a video tutorial):

A 3D mesh generated using COLMAP

Clearly I'm doing something very wrong, because COLMAP doesn't produce anything close to this for me. Once I get a .ply file exported from COLMAP into MeshLab I can distinguish the colors in the vertices when I crank up the Point Size slider.

Vertex colors are more visible in MeshLab, but I can't get a mesh

But it's only showing vertex colors and since there are no faces on my geometry I'm stuck, not knowing whether it's possible to generate faces or use this 3D data at all.

Update: I've found a much better tutorial than the others I had been following. It explains in detail how sparse reconstruction is the first part of the process, and dense reconstruction is the second part. Unfortunately, the developers of COLMAP did something not nice by providing no way to perform dense reconstruction without CUDA.

Dense stereo reconstruction requires CUDA, which is not available on your system.

They offer the poor excuse that doing it on a CPU would be slow. I guess they're telling me to go buy a new computer.

So now I am researching whether there is other software that can fill this gap, or a way to hack COLMAP to use the CPU.

Update #2: Tried installing VSFM for the dense stereo reconstruction, but no installers are provided so I have to build it. Here's how well that went:

VSFM application failed to build, halting.
Mentalist
  • 1,143
  • 14
  • 26

1 Answers1

3

Yeah you're right, this is a sparse point cloud. You can use a dense matching algorithm to pipe your sparse point cloud into such as CMVS and PMVS2. COLMAP actually offers export function for these libraries explained here. If you needed help with this id suggest giving it a go and opening a new question.

Once you have your dense point cloud you can look into meshing the point cloud if COLMAP doesn't offer a meshing algorithm. MeshLab is free and can be used for this.

If you want a SfM pipeline that can handle sparse and dense reconstruction OpenSfM (python) is a good bet. It is all open-source and easy to follow. Another good open-source tools but requires a bit more of a learning step is Micmac. Micmac is great for high-quality results but very difficult to follow along with in comparison to OpenSfM.

From my experience VisualSfM is quite temperamental and i've never had much luck with it.

Last note... if you wanted to go commercial, Agisoft PhotoScan is brilliant.

D.Griffiths
  • 1,823
  • 3
  • 8
  • 26