• Stars
    star
    233
  • Rank 172,230 (Top 4 %)
  • Language
    C++
  • License
    Apache License 2.0
  • Created almost 3 years ago
  • Updated 3 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Factor graphs with Ceres in Python

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

  1. Clone the repository and its submodule by running:
git clone --recursive [email protected]:cvg/pyceres.git
cd pyceres
  1. Install COLMAP 3.8 - make sure to use tag 3.8.

  2. Build the package:

pip install -e .

Factor graph optimization

For now we support the following cost functions, defined in _pyceres/factors/:

  • camera reprojection error (with fixed or variable pose)
  • rig reprojection error (with fixed or variable rig extrinsics)
  • relative pose prior
  • absolute pose prior

All factors support basic observation covariances. Reprojection error costs rely on camera models defined in COLMAP. Absolute poses are represented as quaternions and are expressed in the sensor frame, so are pose residuals, which use the right-hand convention as in the GTSAM library.

Examples

See the Jupyter notebooks in examples/.

TODO

  • Define a clean interface for covariances, like in GTSAM
  • Add bindings for Ceres covariance estimation
  • Use proper objects for poses, e.g. from Sophus
  • Proper benchmark against GTSAM

Credits

The core bindings were written by Nikolaus Mitchell for ceres_python_bindings and later adapted by Philipp Lindenberger for pixel-perfect-sfm.

More Repositories

1

LightGlue

LightGlue: Local Feature Matching at Light Speed (ICCV 2023)
Python
3,261
star
2

Hierarchical-Localization

Visual localization made easy with hloc
Python
3,054
star
3

nice-slam

[CVPR'22] NICE-SLAM: Neural Implicit Scalable Encoding for SLAM
Python
1,415
star
4

pixel-perfect-sfm

Pixel-Perfect Structure-from-Motion with Featuremetric Refinement (ICCV 2021, Best Student Paper Award)
C++
1,317
star
5

pixloc

Back to the Feature: Learning Robust Camera Localization from Pixels to Pose (CVPR 2021)
JavaScript
745
star
6

glue-factory

Training library for local feature detection and matching
Python
702
star
7

limap

A toolbox for mapping and localization with line features.
C++
676
star
8

GlueStick

Joint Deep Matcher for Points and Lines ๐Ÿ–ผ๏ธ๐Ÿ’ฅ๐Ÿ–ผ๏ธ (ICCV 2023)
Jupyter Notebook
543
star
9

SOLD2

Joint deep network for feature line detection and description
Jupyter Notebook
541
star
10

DeepLSD

Implementation of the paper "DeepLSD: Line Segment Detection and Refinement with Deep Image Gradients"
Jupyter Notebook
453
star
11

sfm-disambiguation-colmap

Making Structure-from-Motion (COLMAP) more robust to symmetries and duplicated structures
Python
277
star
12

visloc-iccv2021

ETH-Microsoft dataset for the ICCV 2021 visual localization challenge
203
star
13

EMAP

[CVPR'24] 3D Neural Edge Reconstruction
Python
147
star
14

nicer-slam

[3DV'24 Best Paper Honorable Mention] NICER-SLAM: Neural Implicit Scene Encoding for RGB SLAM
Python
146
star
15

nerf-on-the-go

[CVPR'24] NeRF On-the-go: Exploiting Uncertainty for Distractor-free NeRFs in the Wild
Python
124
star
16

VP-Estimation-with-Prior-Gravity

Vanishing Point Estimation in Uncalibrated Images with Prior Gravity Direction (ICCV 2023)
C++
90
star
17

glace

[CVPR 2024] GLACE: Global Local Accelerated Coordinate Encoding
Python
68
star
18

px-ros-pkg

A repository for PIXHAWK open source code running on ROS
C
50
star
19

LabelMaker

Jupyter Notebook
50
star
20

raybender

Fast CPU rendering in Python using the Intelยฎ Embree backend
C++
38
star
21

pcdmeshing

Point cloud meshing with CGAL
C++
38
star
22

implicit_dist

C++
23
star
23

hololens_ros

C#
12
star
24

depthsplat

DepthSplat: Connecting Gaussian Splatting and Depth
5
star
25

spot_pose_estimation

Python
2
star