Skip to main content

Rapid and reliable multicamera calibration with GUI and scripting API

Project description

Caliscope

Multicamera Calibration for Motion Capture Workflows

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

Caliscope calibrates multicamera systems for 3D motion capture. It estimates the intrinsic and extrinsic parameters of every camera, so downstream tools can triangulate 3D positions accurately. Bundle adjustment across 3+ cameras needs a good starting estimate to converge reliably. Caliscope produces that estimate and solves for a quality calibration.

Demo

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

Install

We recommend uv for installation. Full instructions (including uv setup and virtual environments) are in the docs.

# Calibration library (intrinsic/extrinsic calibration + triangulation)
uv pip install caliscope

# Desktop app with 3D visualization and pose tracking
uv pip install caliscope[gui]

The base install includes the full calibration pipeline as importable Python functions. Add [gui] for the interactive desktop application, which also includes ONNX pose tracking.

# Launch the app (with the virtual environment activated)
caliscope

Development setup

git clone https://github.com/mprib/caliscope.git
cd caliscope
uv sync --group dev --extra gui

Features

Feature What it does
Pairwise PnP initialization Estimates camera positions from stereo pairs chained transitively, so bundle adjustment starts from a reliable point
Flexible calibration targets ChArUco, ArUco, and chessboard targets. A single ArUco marker on a sheet of paper can calibrate a wide volume
Mirror board support A charuco board printed on both sides of a rigid surface links cameras that never share a common view
Visual feedback Inspect distortion models, 3D camera positions, reprojection errors, and world scale accuracy at each stage
Outlier filtering Filter calibration points by reprojection error and re-solve
Aniposelib export Generates camera_array_aniposelib.toml for use with aniposelib-compatible tools

Scripting API

The base install exposes intrinsic and extrinsic calibration as Python functions with Rich progress bars. See the Scripting API docs for a walkthrough.

Tracking and Reconstruction

Caliscope includes a basic reconstruction pipeline for verifying calibration quality. You can load ONNX pose estimation models (RTMPose, SLEAP, DeepLabCut, or custom) and export 3D trajectories as CSV or TRC (OpenSim).

For full reconstruction workflows, anipose and Pose2Sim are better suited. Caliscope exports an aniposelib-compatible calibration file, making it simple to calibrate here and hand off to those tools.

Getting Started

For a walkthrough with sample data, see the sample project.

Community & Support

To report a bug or request a feature, open an issue. For questions, post in Discussions.

Acknowledgments

Caliscope was inspired by anipose, created by Lili Karashchuk, PhD, which demonstrated the value of accessible multicamera calibration for the research community.

License

Caliscope is licensed under the BSD 2-Clause license.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

caliscope-0.9.0.tar.gz (422.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

caliscope-0.9.0-py3-none-any.whl (355.1 kB view details)

Uploaded Python 3

File details

Details for the file caliscope-0.9.0.tar.gz.

File metadata

  • Download URL: caliscope-0.9.0.tar.gz
  • Upload date:
  • Size: 422.7 kB
  • Tags: Source
  • Uploaded using 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}

File hashes

Hashes for caliscope-0.9.0.tar.gz
Algorithm Hash digest
SHA256 be9de27e07caff0abfc1fbf5727c3508d0017705640b91790545e62c31db7041
MD5 2314cdfe6ad5596a627cb0a63e0497db
BLAKE2b-256 50375de369458243d9f1c4ad703afc2f0c92018ed991dea888735c275d7c3967

See more details on using hashes here.

File details

Details for the file caliscope-0.9.0-py3-none-any.whl.

File metadata

  • Download URL: caliscope-0.9.0-py3-none-any.whl
  • Upload date:
  • Size: 355.1 kB
  • Tags: Python 3
  • Uploaded using 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}

File hashes

Hashes for caliscope-0.9.0-py3-none-any.whl
Algorithm Hash digest
SHA256 4050257a94fe0c91f73ed96d9e3f968b1ebc780cb9b663c3a58d9e3f7c24ed73
MD5 f9cbbd4d9d0860c6b958c54144715536
BLAKE2b-256 21c9d44a790d168041df8c89d85791920d3abcf197dfc792a775e623d14c846d

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page