mirror of
https://github.com/ceres-solver/ceres-solver.git
synced 2026-08-30 00:50:37 +08:00
956ed7e8f2
1. Unused variable warnings and fixes. 2. Minor documentation update. Change-Id: I815588a5806df1030a7c8750f4fb594c503f8998
80 lines
2.7 KiB
ReStructuredText
80 lines
2.7 KiB
ReStructuredText
.. _chapter-introduction:
|
|
|
|
============
|
|
Introduction
|
|
============
|
|
|
|
Solving nonlinear least squares problems [#f1]_ comes up in a broad
|
|
range of areas across science and engineering - from fitting curves in
|
|
statistics, to constructing 3D models from photographs in computer
|
|
vision. Ceres Solver [#f2]_ [#f3]_ is a portable C++ library for
|
|
solving non-linear least squares problems. It is designed to solve
|
|
small and large sparse problems accurately and efficiently.
|
|
|
|
At Google, Ceres Solver has been used for solving a variety of
|
|
problems in computer vision and machine learning. e.g., it is used to
|
|
to estimate the pose of Street View cars, aircrafts, and satellites;
|
|
to build 3D models for PhotoTours; to estimate satellite image sensor
|
|
characteristics, and more.
|
|
|
|
|
|
Features:
|
|
|
|
#. A friendly :ref:`chapter-modeling`.
|
|
|
|
#. Automatic and numeric differentiation.
|
|
|
|
#. Robust loss functions and local parameterizations.
|
|
|
|
#. Multithreading.
|
|
|
|
#. Trust-Region (Levenberg-Marquardt and Dogleg) and Line Search
|
|
(Nonlinear CG and L-BFGS) solvers.
|
|
|
|
#. Variety of linear solvers.
|
|
|
|
a. Dense QR and Cholesky factorization (using `Eigen
|
|
<http://eigen.tuxfamily.org/index.php?title=Main_Page>`_) for
|
|
small problems.
|
|
|
|
b. Sparse Cholesky factorization (using `SuiteSparse
|
|
<http://www.cise.ufl.edu/research/sparse/SuiteSparse/>`_ and
|
|
`CXSparse <http://www.cise.ufl.edu/research/sparse/CSparse/>`_) for
|
|
large sparse problems.
|
|
|
|
c. Specialized solvers for bundle adjustment problems in computer
|
|
vision.
|
|
|
|
d. Iterative linear solvers with perconditioners for general sparse
|
|
and bundle adjustment problems.
|
|
|
|
#. Portable: Runs on Linux, Windows, Mac OS X and Android. An iOS port is
|
|
underway.
|
|
|
|
|
|
|
|
.. rubric:: Footnotes
|
|
|
|
.. [#f1] For a gentle but brief introduction to non-linear least
|
|
squares problems, please start by reading the
|
|
:ref:`chapter-tutorial`.
|
|
|
|
.. [#f2] While there is some debate as to who invented the method of
|
|
Least Squares [Stigler]_, there is no debate that it was
|
|
`Carl Friedrich Gauss
|
|
<http://en.wikipedia.org/wiki/Carl_Friedrich_Gauss>`_ who
|
|
brought it to the attention of the world. Using just 22
|
|
observations of the newly discovered asteroid `Ceres
|
|
<http://en.wikipedia.org/wiki/Ceres_(dwarf_planet)>`_, Gauss
|
|
used the method of least squares to correctly predict when
|
|
and where the asteroid will emerge from behind the Sun
|
|
[TenenbaumDirector]_. We named our solver after Ceres to
|
|
celebrate this seminal event in the history of astronomy,
|
|
statistics and optimization.
|
|
|
|
.. [#f3] For brevity, in the rest of this document we will just use
|
|
the term Ceres.
|
|
|
|
|
|
|