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