mirror of
https://github.com/ceres-solver/ceres-solver.git
synced 2026-08-29 16:40:38 +08:00
Merge branch 'master' of https://code.google.com/p/ceres-solver
This commit is contained in:
+3
-3
@@ -126,7 +126,7 @@ CostFunction* cost_function
|
||||
Dimension of y -------------------+
|
||||
\end{minted}
|
||||
|
||||
In this example, there is usually an instance for each measumerent of k.
|
||||
In this example, there is usually an instance for each measurement of k.
|
||||
|
||||
In the instantiation above, the template parameters following
|
||||
\texttt{MyScalarCostFunction}, \texttt{<1, 2, 2>} describe the functor as computing a
|
||||
@@ -150,7 +150,7 @@ In the instantiation above, the template parameters following
|
||||
To get a numerically differentiated cost function, define a subclass of
|
||||
\texttt{CostFunction} such that the \texttt{Evaluate} function ignores the jacobian
|
||||
parameter. The numeric differentiation wrapper will fill in the jacobians array
|
||||
if nececssary by repeatedly calling the \texttt{Evaluate} method with
|
||||
if necessary by repeatedly calling the \texttt{Evaluate} method with
|
||||
small changes to the appropriate parameters, and computing the slope. For
|
||||
performance, the numeric differentiation wrapper class is templated on the
|
||||
concrete cost function, even though it could be implemented only in terms of
|
||||
@@ -582,7 +582,7 @@ Note that this requires a version of Ceres built with protocol buffers.
|
||||
|
||||
The finite differencing is done along each dimension. The
|
||||
reason to use a relative (rather than absolute) step size is
|
||||
that this way, numeric differentation works for functions where
|
||||
that this way, numeric differentiation works for functions where
|
||||
the arguments are typically large (e.g. 1e9) and when the
|
||||
values are small (e.g. 1e-5). It is possible to construct
|
||||
"torture cases" which break this finite difference heuristic,
|
||||
|
||||
+5
-1
@@ -11,9 +11,13 @@ Ceres relies on a number of open source libraries, some of which are optional. H
|
||||
\item{\cmake~\footnote{\url{http://www.cmake.org/}}} is the cross-platform build system used by Ceres.
|
||||
\item{\eigen~\footnote{\url{http://eigen.tuxfamily.org}}} is used for doing all the low level matrix and
|
||||
linear algebra operations.
|
||||
|
||||
\item{\glog~\footnote{\url{http://code.google.com/p/google-glog}}} is used for error checking and logging.
|
||||
|
||||
Note: Ceres requires \texttt{glog}\ version 0.3.1 or later. Version 0.3 (which ships with Fedora 16) has a namespace bug which prevents Ceres from building.
|
||||
|
||||
\item{\gflags~\footnote{\url{http://code.google.com/p/gflags}}} is used by the code in
|
||||
\texttt{examples}. It is not required to build the core Ceres library.
|
||||
\texttt{examples}. It is also used by some of the tests. While technically it is not required to build the core library, we do not recommend building Ceres without it.
|
||||
\item{\suitesparse~\footnote{\url{http://www.cise.ufl.edu/research/sparse/suitesparse/}}} is used for sparse matrix analysis,
|
||||
ordering and factorization. In particular Ceres uses the
|
||||
\amd, \colamd\ and \cholmod\ libraries. This is an optional
|
||||
|
||||
+1
-1
@@ -179,7 +179,7 @@ the constraint that no two \texttt{e\_block} co-occur in a residual
|
||||
block means that if we were to treat the sparsity structure of the
|
||||
block matrix $H$ as a graph, then the set of \texttt{e\_block}s is an
|
||||
independent set in this graph. The larger the number of
|
||||
\texttt{e\_block}, the smaller is the size of the Schur complement $S$. Indeed the reason Schur based solvers are so efficient at solving bundle adjustment problems is because the numner of points in a bundle adjustment problem is usually an order of magnitude or two larger than the number of cameras.
|
||||
\texttt{e\_block}, the smaller is the size of the Schur complement $S$. Indeed the reason Schur based solvers are so efficient at solving bundle adjustment problems is because the number of points in a bundle adjustment problem is usually an order of magnitude or two larger than the number of cameras.
|
||||
|
||||
Thus, the aim of the \texttt{SCHUR} ordering algorithm is to identify the largest independent set in the graph of $H$. Unfortunately this is an NP-Hard problem. But there is a greedy approximation algorithm that performs well~\cite{li2007miqr} and we use it to identify \texttt{e\_block}s in Ceres.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user