Skip to main content

Caliscope

Multicamera Calibration for Motion Capture

PyPI - Downloads PyPI - License PyPI - Version GitHub last commit pytest

3D motion capture requires knowing each camera's intrinsic properties (focal length and lens distortion), as well as where the cameras sit relative to each other in space. With these parameters, observations from multiple cameras can be triangulated into accurate 3D coordinates.

Caliscope efficiently estimates these parameters with a scriptable Python API as well as a GUI that offers visual feedback during each stage of the calibration.

Demo

Note that the workflow below is from v0.9.0. There have recently been a number of improvements. I hope to have more recent samples/walkthroughs soon.

https://github.com/user-attachments/assets/b8bb78de-866e-4ba2-b5c7-674e3a33dd9e

Install

uv pip install caliscope        # calibration library + scripting API
uv pip install caliscope[gui]   # adds desktop app, 3D visualization, and pose tracking
caliscope                       # launch the app

Full instructions at mprib.github.io/caliscope/installation.

Features

Feature What it does
Pairwise PnP initialization Chains stereo pair estimates transitively, so the target never needs to be visible to all cameras at once
Flexible targets ChArUco boards, ArUco markers, and chessboards. A single marker on a sheet of paper can calibrate a wide volume
Mirror boards A board printed on both sides links cameras that never share a common view
Outlier filtering Filter by reprojection error and re-solve
Aniposelib export camera_array_aniposelib.toml for Pose2Sim, anipose, and other aniposelib-compatible tools

Scripting API

The base install exposes calibration as Python functions. See the scripting docs for a walkthrough.

Reconstruction

A basic reconstruction pipeline is included for verifying calibration quality: ONNX pose tracking, triangulation, and CSV/TRC export. For production reconstruction, use Pose2Sim or anipose with Caliscope's exported calibration.

Getting started

Sample project with downloadable data. Full documentation.

Bugs: Issues. Questions: Discussions.

Acknowledgments

Inspired by anipose, created by Lili Karashchuk, PhD.

License

BSD 2-Clause

Metadata

Release files for caliscope 0.11.8

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for caliscope 0.11.8
File Size Uploaded
caliscope-0.11.8.tar.gz 570.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for caliscope 0.11.8
File Interpreter ABI Platform
caliscope-0.11.8-py3-none-any.whl Python 3 none any Details

Total release size: 1.0 MB

Release files / caliscope-0.11.8.tar.gz

Download URL caliscope-0.11.8.tar.gz
Size 570.1 kB
Tags Source
SHA-256 checksum
How to use checksums
1d6232f45dcb7f3d87b8115b64cfd5a40a6e23e9fad0a9b5aa88e613e827763d
BLAKE2b-256 checksum
How to use checksums
d8dcb158dfb6f0605e903ab419f0c33f52924e5c1a9d7200495f4bd39346fbdf
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.9.18 {"installer":{"name":"uv","version":"0.9.18","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release files / caliscope-0.11.8-py3-none-any.whl

Download URL caliscope-0.11.8-py3-none-any.whl
Size 439.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
590b55635b2d4dedca6dcc26f1813c6ac27d8b7c8ff1f71f1ec4bea4c5c7a390
BLAKE2b-256 checksum
How to use checksums
4c3ddd0cfdf6888f61eaf1e316620600498d88376d393c79cfcdcfe7ee76a557
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.9.18 {"installer":{"name":"uv","version":"0.9.18","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release history Release notifications | RSS feed

This release

0.11.8 This release

2 release files

0.11.6

2 release files

0.11.4

2 release files

0.11.3

2 release files

0.11.2

2 release files

0.11.1

2 release files

0.11.0

2 release files

0.10.0

2 release files

0.9.0

2 release files

0.8.5

2 release files

0.8.4

2 release files

0.8.3

2 release files

0.8.2

2 release files

0.8.1

2 release files

0.8.0

2 release files

0.7.5

2 release files

0.7.4

2 release files

0.7.3

2 release files

0.7.2

2 release files

0.7.1

2 release files

0.7.0

2 release files

0.6.9

2 release files

0.6.8

2 release files

0.6.7

1 release file

0.6.6

1 release file

0.6.5

2 release files

0.6.4

2 release files

0.6.1

2 release files

0.6.0

2 release files

0.5.4

2 release files

0.5.3

2 release files

0.5.2

2 release files

0.5.1

2 release files

0.5.0

2 release files

0.4.2

2 release files

0.4.1

2 release files

0.4.0

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page