Dear Theia team,
I have recently worked with several colleagues on writing new solvers for calibrated trifocal geometry estimation, and we are in the process of incorporating this into widely used software such as Theia. I would like to know if there is interest in this community on the ability to bootstrap the SfM pipelines from three views instead of two. If so, I can work on a pull request as the C++ code is ready for Theia, only depends on Eigen, has unit tests, is easy to maintain, and so on.
The idea is that the usual technique of starting SfM from an essential matrix that requires 5 points between two views, then using P3P, sometimes fails from lack of reliable point features or camera configuration degeneracies. Specially in indoor and man-made scenes (also cars, mechanical parts, etc), it might be desirable to use our technique that allows only 3-4 correspondences or mixed point-line correspondences across 3 views, as points, lines and curves are widely available in these common scenarios.
What the code provides is
* A solver for reconstructing 3-view camera pose (calibrated) from three corresponding points and a corresponding line, which can be used inside RANSAC.
* A solver for reconstructing 3-view camera pose from three corresponding points, where at least two of the points are attributed with a tangential direction (or incident line). This occurs when observing curves (points in curves which have tangents), vector fields such as fluid particle velocities, and also corners, which have multiple directions attributed to a point.
Please let me know if in your opinion this code can be useful for Theia. The present version of the code runs in the order of 1s per solve, in many cases a lot faster. However, this can be useful even for offline bootstrapping a hard low-texture indoor scene, and also when RANSAC is not used. In some aplications, such as in indoor metrology, the user actually clicks corresponding features, and the object (such as an indoor fluid tank) has not enough point features, but plenty of lines. The above techniques actually uses the available points, if any, since usually even hard scenes provide a couple of reliable points.
The code is generic and can be further extended as a general-purpose solver for other feature combinations or the uncalibrated case as well. I will be happy to contribute the code to Theia if desired.
Ricardo.