Jafar
Classes | Functions
Module bundle

Detailed Description

Version:
0.1
Author:
martial.sanfourche@laas.fr

The bundle adjustment (BA) is a technique for simultaneously refining 3D structure and viewing parameters to obtain a reconstruction which is optimal in comparison with the noise affecting the observed image features (and other sources of information : like camera pose given by an odomertry sensor, like position of some 3D features in the World Frame). BA amounts to minimizing an non linear least squares criterion, non linear because the predictive model is non linear in terms of the sought parameters. For more information, I advise you to read the Bill Triggs's review.

In our implementation, we have introduced two additive terms permitting to add a priori on structure parameters and/or camera pose parameters. Then the global criterion is :

\[ C_{BA}\left( \left\{ \mathit{\mathbf{M}}_k \right\}_{1\leq k \leq K}, \left\{ \mathit{\mathbf{X}}_n \right\}_{1\leq n \leq N} \right) = \sum_{k} \sum_{n} \left|\left| \mathit{\mathbf{x}}_{k,n}^{obs} - \mathit{\mathbf{x}}_{k,n} \left(\mathit{\mathbf{M}}_k, \mathit{\mathbf{X}}_n \right) \right|\right|_{\Sigma_{2D}}^2 + \sum_{k} \left|\left| \mathit{\mathbf{M}}_k - \mathit{\mathbf{M}}_k^{obs} \right|\right|_{\Sigma_{MOT}}^2 + \sum_{n} \left|\left| \mathit{\mathbf{X}}_n - \mathit{\mathbf{X}}_n^{obs} \right|\right|_{\Sigma_{STR}}^2 \]

The bundle modules includes two algorithms :

This implementation is widely inspired by the C implematation coded and documented by Manolis Lourakis. Another contributor is Gunter Winkler for his implementation of conjugated gradient method for solving linear system (much faster than LU decomposition method when the number of equation is high).

How to Use

To run our Bundle Adjustment implementation, the user need to fill an configuration file on the model of paramBA_default.bun (located in the doc directory of bundle jafar-module). This file gives information on :

Input file format

All data-loading functions wait for binary files. The format of files depends on the recorded data. Now, I'm going list the different files potentially needed by bundle adjustement.

Output file format

At the end of the optimization process, two files are generated : one to store position of the 3D structure elements in the format of the 3D structure initialization file and an other to store refined extrinsic parameters in the format of the motion initialization file.

History

Macro

Extra doc for macro can go here... (you can delete this section if not relevant)

Tcl interface (generated by swig)

The interface of the module is generated from the following files:

Classes

class  jafar::bundle::observation
 Base class of observation object. More...
class  jafar::bundle::observationsContainer
 Container for all observations used by the BA algorithm. More...
class  jafar::bundle::bundleDimension
 Container for problem dimensions (Number of cameras, number of 3D points, ...) More...
class  jafar::bundle::BundleException
 Base class for all exceptions defined in the module bundle. More...
class  jafar::bundle::bundleParameters
 Container for bundle parameter storage. More...
class  jafar::bundle::bundleVariables< Sensor >
 Base class for parameters to refine during optimization process The class is templated in order to be generic with rapport to camera model. More...
class  jafar::bundle::bundleLinearSys
 Mathematical part of our Bundle Adjustment implementation. More...
class  jafar::bundle::SBAObservation
 class SBAObsevation Holds structure of observed point. More...
class  jafar::bundle::SBACamera
 class SBACamera Holds intrinsic and extrinsic camera parameters. More...
class  jafar::bundle::SparseBundleAdjustment
 class SparseBundleAdjustment It's an interface to Lourakis Sparse Bundle Adjustment
I started recoding in cpp templated way but haven't time to finish it. More...

Functions

template<typename CamType >
void jafar::bundle::computeResidual (observationsContainer &obs, bundleVariables< CamType > &variables)
 Update all residual vectors (2D, 3D structure and extrinsic parameters) from current variables estimation (variables) and from observations (obs)
template<typename CamType >
void jafar::bundle::bundleGN (std::string paramFile)
 Bundle adjustment algorithm using the Gauss-Newton minimization algorithm.
template<typename CamType >
void jafar::bundle::bundleLM (std::string paramFile)
 Bundle adjustment algorithm using the Levenberg Marquardt minimization algorithm.
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines

Generated on Wed Oct 15 2014 00:37:30 for Jafar by doxygen 1.7.6.1
LAAS-CNRS