1 .. _chapter-introduction: 2 3 ============ 4 Introduction 5 ============ 6 7 Solving nonlinear least squares problems [#f1]_ comes up in a broad 8 range of areas across science and engineering - from fitting curves in 9 statistics, to constructing 3D models from photographs in computer 10 vision. Ceres Solver [#f2]_ [#f3]_ is a portable C++ library for 11 solving 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 46 At Google, Ceres Solver has been used for solving a variety of 47 problems in computer vision and machine learning. e.g., it is used to 48 to estimate the pose of Street View cars, aircrafts, and satellites; 49 to build 3D models for PhotoTours; to estimate satellite image sensor 50 characteristics, 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