FORTH technologies available for technology transfer agreements
Institute of Computer Science (ICS)
>> Visit ICS
|Title||SBA: Generic sparse bundle adjustment||>> See brochure|
|Laboratory||Computational Vision and Robotics|
|Contact person||Dr. Manolis Lourakis
Given a set of images depicting a number of 3D points from different viewpoints, Bundle Adjustment (BA)
is the problem of simultaneously refining the 3D coordinates of these points as well as the parameters
of the relative motion and the optical characteristics of the camera(s) employed to acquire the images,
according to an optimality criterion involving the corresponding image projections of all points. BA amounts
to a large-scale non-linear optimization problem on the 3D structure and viewing parameters (i.e., camera
pose and possibly intrinsic calibration and radial distortion). It is used as the last step of most feature-based
3D reconstruction vision algorithms, since its solution yields a reconstruction which is optimal under certain
assumptions regarding the noise pertaining to the observed image features: If the image error is zero-mean Gaussian,
then BA provides the Maximum Likelihood Estimator. Owing to the large number of the variables involved,
general-purpose numerical optimization codes incur high computational and storage costs when applied to BA.
BA boils down to minimizing the reprojection error between the image locations of observed and predicted image points, which is expressed as the sum of squares of a large number of nonlinear, real-valued functions. Thus, the minimization is achieved using nonlinear least-squares algorithms, of which Levenberg-Marquardt has proven to be of the most successful. By iteratively linearizing the function to be minimized in the neighborhood of the current estimate, the Levenberg-Marquardt algorithm involves the solution of linear systems known as the normal equations.
When solving the minimization problems arising in the context of BA, the underlying normal equations have a sparse block structure owing to the lack of interaction among parameters for different 3D points and cameras.
This can be exploited to gain tremendous computational benefits by employing a sparse variant of the Levenberg-Marquardt algorithm, which explicitly takes advantage of the normal equations zeros pattern, avoiding storing and operating on zero elements.
SBA is a C/C++ software package for generic sparse BA that is based on a sparse variant of the Levenberg-Marquardt algorithm tailored to the zero pattern of the normal equations arising in BA. It is generic in the sense that it grants the user full control over the choice of coordinate systems, parameters and functional relations describing cameras, 3D structure and image projections. SBA can be invaluable to researchers and practitioners in the fields of computational vision, robotics, image-based graphics, photogrammetry, surveying, cartography, etc. It is being used in several laboratories around the globe and is currently the only such software worldwide to be offered in source under the GNU General Public License (GPL) with the option of commercial licensing.
More details and the source code can be found at http://www.ics.forth.gr/~lourakis/sba.