1.. _chapter-introduction:
2
3============
4Introduction
5============
6
7Solving nonlinear least squares problems [#f1]_ comes up in a broad
8range of areas across science and engineering - from fitting curves in
9statistics, to constructing 3D models from photographs in computer
10vision. Ceres Solver [#f2]_ [#f3]_ is a portable C++ library for
11solving non-linear least squares problems accurately and efficiently.
12
13**Features**
14
15#. A friendly :ref:`chapter-modeling` API.
16
17#. Automatic and numeric differentiation.
18
19#. Robust loss functions and local parameterizations.
20
21#. Multithreading.
22
23#. Trust-Region (Levenberg-Marquardt and Dogleg) and Line Search
24   (Nonlinear CG and L-BFGS) solvers.
25
26#. Variety of linear solvers.
27
28   a. Dense QR and Cholesky factorization (using `Eigen
29      <http://eigen.tuxfamily.org/index.php?title=Main_Page>`_) for
30      small problems.
31
32   b. Sparse Cholesky factorization (using `SuiteSparse
33      <http://www.cise.ufl.edu/research/sparse/SuiteSparse/>`_ and
34      `CXSparse <http://www.cise.ufl.edu/research/sparse/CSparse/>`_) for
35      large sparse problems.
36
37   c. Specialized solvers for bundle adjustment problems in computer
38      vision.
39
40   d. Iterative linear solvers with preconditioners for general sparse
41      and bundle adjustment problems.
42
43#. Portable: Runs on Linux, Windows, Mac OS X and Android.
44
45
46At Google, Ceres Solver has been used for solving a variety of
47problems in computer vision and machine learning. e.g., it is used to
48to estimate the pose of Street View cars, aircrafts, and satellites;
49to build 3D models for PhotoTours; to estimate satellite image sensor
50characteristics, and more.
51
52`Blender <http://www.blender.org>`_ uses Ceres for `motion tracking
53<http://mango.blender.org/development/planar-tracking-preview/>`_ and
54`bundle adjustment
55<http://wiki.blender.org/index.php/Dev:Ref/Release_Notes/2.67/Motion_Tracker>`_.
56
57
58.. rubric:: Footnotes
59
60.. [#f1] For a gentle but brief introduction to non-linear least
61         squares problems, please start by reading the
62         :ref:`chapter-tutorial`.
63
64.. [#f2] While there is some debate as to who invented the method of
65         Least Squares [Stigler]_, there is no debate that it was
66         `Carl Friedrich Gauss
67         <http://en.wikipedia.org/wiki/Carl_Friedrich_Gauss>`_ who
68         brought it to the attention of the world. Using just 22
69         observations of the newly discovered asteroid `Ceres
70         <http://en.wikipedia.org/wiki/Ceres_(dwarf_planet)>`_, Gauss
71         used the method of least squares to correctly predict when
72         and where the asteroid will emerge from behind the Sun
73         [TenenbaumDirector]_. We named our solver after Ceres to
74         celebrate this seminal event in the history of astronomy,
75         statistics and optimization.
76
77.. [#f3] For brevity, in the rest of this document we will just use
78         the term Ceres.
79
80
81
82