/pyceres

Factor graphs with Ceres in Python

Primary LanguageC++Apache License 2.0Apache-2.0

pyceres

This repository provides minimal Python bindings for the Ceres Solver and the implementation of factor graphs for bundle adjustment and pose graph optimization.

Installation

Wheels for Python 8/9/10/11/12 on Linux, macOS 10+ (both Intel and Apple Silicon), and Windows can be installed using pip:

pip install pyceres

To build from source, follow the following steps:

  1. Install the Ceres Solver following the official instructions.
  2. Clone the repository and build the package:
git clone https://github.com/cvg/pyceres.git
cd pyceres
python -m pip install .

Alternatively, you can build the Docker image:

docker build -t pyceres -f Dockerfile .

Factor graph optimization

Factors may be defined in Python (see examples/test_python_cost.py) or in C++ with associated Python bindings. PyCOLMAP provides the following cost functions in pycolmap.cost_functions:

  • reprojection error for different camera models, with fixed or variable pose and 3D points
  • reprojection error for multi-camera rigs, with fixed or variable rig extrinsics
  • error of absolute and relative poses
  • Sampson error for epipolar geometry

See examples/ to use these factors.

Credits

Pyceres was inspired by the work of Nikolaus Mitchell for ceres_python_bindings and is maintained by Philipp Lindenberger and Paul-Edouard Sarlin.