/ulavalSFM

Manager to do parallel sift detection, matches and structure from motion

Primary LanguagePythonGNU General Public License v2.0GPL-2.0

Author : Émile Robitaille @ LERobot
Major contribution : Yannick Hold @ soravux

What is ulavalSFM ?

ulavalSFM is a set of linux scripts and softwares to prepare structure from motion in parallel. It consists of three parts, pre-computation on images, Lowe's sift points search and matching of those points. You'll find explanations below to install dependencies, ulavalSFM and how to run it. A ultra-script will helps you install all the dependencies. Another will helps you run all softwares in one command. The extern softwares used to make a complete reconstruction are BundlerSFM, CMVS, PMVS2.

If you want to read about Structure From Motion, here's a list of great papers :

Dependencies

Here's what you have to install before running anything. All the specified versions are tested ones, it should work with others. If no version are given, use the last release :

Used to build openCV libraries

Used to build BundlerSFM, CMVS, PMVS2

This link helps me to find all this dependencies

Used to build ulavalSFM softwares

Used by scripts

Because it's pretty simple to install and reliable, I strongly recommend anaconda python 3.4 package http://continuum.io/downloads#34 (make sure it is python 3.4). Be sure that your python bin path is $HOME/anaconda3/bin/ and it should work on any clusters.

Installation

cd "wherever_you_want_:)"
git clone https://github.com/lvsn/ulavalSFM
cd <ulavalSFM>/
bash install.sh

This script will :

  • Adds the new library path to your local LD_LIBRARY_PATH
  • Adds the new executable paths to your local PATH
  • Adds their associated export commands in your home .bashrc
  • Clones BundlerSFM~~, CMVS and PMVS2 to the dependencies/ repository~~
  • Builds BundlerSFM~~, CMVS and PMVS2~~
  • Moves all their associated libraries in the lib/ repository
  • Moves all their associated binaries to the bin/ repository
  • Builds ulavalSFM and install it in bin/ repository

Run it

The easy way

cd "in_your_dataset_repo"
ulavalSFM.py

The hard way

Use all the softs separately. It is more flexible though. You can change some options.

Pre-Computation

Usage

Lowe's sift points search

Usage

What's printed on the screen :

This is ulsift (ulavalSFM sift). Use it to find sift points on a dataset.
Louis-Émile Robitaille @ L3Robot
usage: mpirun -n [numberOfCores] ulsift [-v] [-o Path] [workingDirectory]
      -v verbose mode, print a progress bar (default false)
      -o [siftPath] set the sift files repository (default ulsift/)

More explanations :

  • -v toggle the verbose mode, so it will basically print information about the work distribution and a progress bar.
  • -o You can choose another destination than ulsift/ for your sift points files

Matching phase

Usage

What's printed on the screen :

This is ulmatch (ulavalSFM match). Use it to match the sift points you found.
Louis-Émile Robitaille @ L3Robot
usage: mpirun -n [numberOfCores] ulmatch [-vg] [-s Path] [-o Path] [-f Path] [workingDirectory]
      -v verbose mode, print a progress bar (default false)
      -g geometry mode, do some geometric computations (default false)
      -s [siftPath] set the sift directory path (default ulsift/)
      -o [matchFilePath] set the match file path (default matches.init.txt)
      -f [geoFilePath] set the geometric file path (default ulavalSFM.txt)

More explanations :

  • -v toggle the verbose mode, so it will basically print information about the work distribution and a progress bar
  • -s you can indicate another sift path if you have written sift point files elsewhere
  • -o You can choose another destination and name than matches.init.txt for your match information

Geometry mode is not yet perfect, but prunes more bad matches and compute certain geometric information needed by the structure from motion.

Questions ? / Comments ?

Don't hesitate, send me an email emile.courriel@gmail.com