來源wiki pedia: http://en.wikipedia.org/wiki/Bundle_adjustment
光束平差法的最終目的歸結為:減少觀測映像的點和參考映像(預測映像)的點之間位置投影變換(再投影)誤差。這最小化誤差演算法使用的是最小二乘演算法,目前
使用最為成功是Levenberg-Marquardt, 它具有易於實現,對大範圍的初始估計能夠快速收斂的優點。
Bundle adjustment amounts to jointly refining a set of initial camera and structure parameter estimates for finding the set of parameters that most accurately predict the locations of the observed points in the set of available images. More formally, assume
that 3D
points are seen in views
and let be
the projection of the th
point on image .
Let denote
the binary variables that equal 1 if point is
visible in image and
0 otherwise. Assume also that each camera is
parameterized by a vector and
each 3D point by
a vector .
Bundle adjustment minimizes the total reprojection error with respect to all 3D point and camera
parameters, specifically
where is
the predicted projection of point on
image and denotes
the Euclidean distance between the image points represented by vectors and .
Clearly, bundle adjustment is by definition tolerant to missing image projections and minimizes a physically meaningful criterion.
Software
- sba: A Generic Sparse Bundle Adjustment
C/C++ Package Based on the Levenberg–Marquardt Algorithm (C, Matlab)
- ssba: Simple Sparse Bundle
Adjustment package based on the Levenberg–Marquardt Algorithm (C) with LGPL license.
- OpenCv: Computer Vision library in the
contrib module.
- mcba: Multi-Core Bundle Adjustment
(CPU/GPU).
- libdogleg: General-purpose sparse non-linear
least squares solver, based on Powell's dogleg method. LGPL.
- ceres-solver: A Nonlinear Least Squares
Minimizer with BSD license