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
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)
| File | Size | Uploaded | |
|---|---|---|---|
| caliscope-0.11.8.tar.gz | 570.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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}
|