Releases: mprib/caliscope
v0.8.1
What's Changed
- Switched from
opencv-contrib-pythontoopencv-python— The ArUco/Charuco modules moved into mainline OpenCV as of 4.7, so the contrib extras are no longer needed. This reduces install footprint by dropping unused modules (xfeatures2d, ximgproc, etc.).
Full Changelog: v0.8.0...v0.8.1
v0.8.0: Lighter and Scriptable
Scripting API
The base install (uv pip install caliscope) now exposes intrinsic and extrinsic calibration as Python functions. You can calibrate cameras from a script without installing the desktop app just by configuring your calibration board and passing in video paths.
For a demo of the API see demo_api.py.
The [gui] extra is now required only for the desktop app.
The base install is pure calibration logic with no Qt or rendering dependencies.
Lighter Install
Some large dependencies are gone even on the GUI version:
- Mediapipe
- VTK
- numba
3D visualization is now done in Qt3D to align with the use of PySide6 for front-end work. This has significantly reduced processor load, particularly at idle where it's now negligible.
Faster Processing
Two major improvements to speed up processing:
- more efficient frame reading
- faster charuco detection through better threshold defaults
Sample Project
A 3-camera lab recording is attached to this release (83 MB zip).
This project data uses a chessboard for intrinsic calibration and a single Aruco marker for extrinsic calibration.
Both of these are there to demonstrate the flexibility of the system. I would still generally recommend use of a charuco for better corner recognition and lower reprojection RMSE.
The sample project walkthrough uses this data.
v0.7.2
ONNX Tracker Support
Five RTMPose Halpe26 model cards now ship with the package (tiny through xlarge). On first launch, model cards are seeded to your local models directory. Weights can be downloaded in-app with license confirmation — no manual file management needed.
Bug Fix
Resolved a CharucoTracker crash caused by a breaking API change in OpenCV 4.8+ (cv2.aruco.detectMarkers removal). Charuco board detection now uses the current CharucoDetector API.
v0.7.0: Ship of Theseus
Caliscope v0.7.0: Ship of Theseus
This is a substantial update from the last formal release (March 2025). While cosmetic changes to the GUI may be the most immediately apparent difference, major improvements have been made to almost every facet of the project.
Some key elements:
- Extrinsic calibration can be performed with a single aruco marker to allow larger volumes to be calibrated using a printed sheet of paper.
- Scale accuracy is locked in during the world origin setting and reported across frames (corner-to-corner distances on the calibration target).
- A "coverage heatmap" shows overlap between fields of view across cameras and can flag poor input data prior to attempting an extrinsic calibration.
- The automated intrinsic calibration board selection is now far more robust. Checks are made to ensure selected frames exhibit a variety of tilts and broad coverage of the field of view.
- Calibration landmark tracking can be expedited by only processing every nth frame.
- A proper back end task manager allows clean stop/restart of long-running calculations while providing better visual feedback about the rate of completion.
- 3D visualization is now done with VTK rather than pyqtgraph, which helped simplify and harden some backend setup.
- A "model card" framework has been created to allow integration of ONNX models.
- A camera calibration file in the format of
aniposelibis created to facilitate integration with other tools in the open source motion capture ecosystem.
The above are all changes that I think may be apparent to a user of the tool, but alongside them have been refinements to the backend domain model that are more hidden. These backend improvements make adding new capabilities much less painful. I can see a path to a completely markerless calibration.
mprib
(data for the minimalist project demonstrated on the README is below)
Significant Speed Ups in Calibration
There were some pandas data manipulations at a few stages of the calibration process which were quite inefficient, with exponential increases in processing time as camera count increased. With 5 or 6 cameras, it was manageable, but with 10+ was clearly not practical.
This pandas code was refactored (hat tip to claude) and is now substantially faster. If someone had issues with slow calibrations in the past, my hope is that v0.6 will be a much better experience.
Mediapipe Version Updated
Mediapipe 0.10.1 is no longer available via PyPI it seems. I have updated the pinned version to the most recent available patch (0.10.20) which tests successfully across Windows/Linux/MacOS.
My recollection is that there were patches of Mediapipe 0.9 that failed on MacOS (some worked, some did not). Uneasiness about this led me to pin to a specific patch that I knew worked.
JOSS Release
v0.5.1 Update README.md