homest is a C/C++ library for robust, non-linear homography estimation. A homography (sometimes also called a collineation) is a general plane to plane projective transformation whose estimation from matched image features is often necessary in vision tasks. It computes a homography estimate that minimizes an appropriate non-linear cost function defined on matching points (currently either non-symmetric transfer error, symmetric transfer error, Sampson error, or reprojection error) and includes robust regression techniques for coping with outliers (i.e., mismatched point pairs). It supports the estimation of fully projective (8 dof) and affine (6 dof) homographies.
levmar is a robust and efficient C/C++ implementation of the Levenberg - Marquardt (LM) optimization algorithm. LM solves the non-linear least squares problem, i.e. fitting a set of m observations with a model that is non-linear in n unknown parameters (m>=n). levmar includes double and single precision LM variants, both with analytic and finite difference approximated Jacobians. It also has some support for constrained non-linear least squares, allowing linear equation and box constraints to be imposed. For problems with sparse Jacobians, the sparseLM project might be more efficient.
sba is a generic sparse bundle adjustment C/C++ library based on the Levenberg-Marquardt algorithm. Bundle adjustment is almost invariably used as the last step of every feature-based multiple view reconstruction vision algorithm to obtain optimal 3D structure and motion (i.e. camera matrix) parameter estimates. Provided with initial estimates, BA simultaneously refines motion and structure by minimizing the reprojection error between the observed and predicted image points. sba is generic in the sense that it grants the user full control over the definition of the parameters describing cameras and 3D structure.
sparseLM is a software package for efficiently solving arbitrarily sparse non-linear least squares problems. It offers a generic implementation of the Levenberg - Marquardt optimization algorithm on top of a variety of sparse direct solvers, thus being applicable to problems with arbitrary sparseness. sparseLM accepts sparse Jacobians encoded in either compressed row storage (CRS) or compressed column storage (CCS, aka Harwell-Boeing) format. It is also possible to supply it just with the Jacobian's sparsity pattern and have its values be numerically approximated using finite differences, or even instruct it to attempt the automatic detection of the sparsity pattern corresponding to the Jacobian of the function to be minimized. Note that for dense non-linear least squares problems, project levmar is more appropriate.