3d code opencv programming vision

Structure-from-Motion Toy Lib Upgrades to OpenCV 3

The toy SfM library is upgraded to OpenCV 3.x and gets a ton of simplifications.

sfm toy lib
Hello again!
After a long hiatus I’m back with an update. Recently I’ve been upgrading the Structure-from-Motion Toy Library ( to OpenCV 3.x from OpenCV 2.4.x.

OpenCV 3 introduced some additional functions in the API that make it even easier to do SfM, such as:

  • findEssentialMat – to find the Essential matrix, whereas before we only had a function for the Fundamental matrix.
  • recoverPose – that basically retires the old decomposeEssentialMat, which saves the trouble of decomposing the Essential matrix to rotation and translation and looking for the right solution using a chirality check.
  • solvePnPRansac – adds a RANSAC version for the old solvePnP

In this new version I am making use of these functions, as well as making tons of updates and simplifications to the core. It’s basically a complete re-write, since I threw away most if not all of the old code and wrote it essentially from scratch. I’m also now relying more on a C++11 coding style, as well as just more structured better-documented coding style.
One major point I was trying to pursue is simplicity. Since far better and more flexible SfM libraries are already out there, I wanted to make this more of what it was originally designed to be – a soft tutorial to SfM using OpenCV. So I chucked all the GPU code paths, and the optical flow “feature detection”, and kept it simple with an ORB detector. I also got rid of the visualization, now just outputting PLY files that can be visualized with any other software (e.g. MeshLab).
I hope you guys like and learn from it…
Get the code on GitHub: