Caliscope
Caliscope: GUI Based Multicamera Calibration and Motion Tracking - Published in JOSS (2024)
Science Score: 93.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
○CITATION.cff file
-
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
✓DOI references
Found 1 DOI reference(s) in JOSS metadata -
○Academic publication links
-
○Committers with academic emails
-
○Institutional organization owner
-
✓JOSS paper metadata
Published in Journal of Open Source Software
Keywords
Keywords from Contributors
Scientific Fields
Repository
Multicamera Calibration + Pose Estimation --> Open Source Motion Capture
Basic Info
- Host: GitHub
- Owner: mprib
- License: bsd-2-clause
- Language: Python
- Default Branch: main
- Homepage: https://mprib.github.io/caliscope/
- Size: 775 MB
Statistics
- Stars: 304
- Watchers: 11
- Forks: 32
- Open Issues: 30
- Releases: 3
Topics
Metadata Files
README.md
About
Caliscope is a GUI-based multicamera calibration package. When the intrinsic (focal length, optical center, and distortion) as well as extrinsic (relative rotation and translation) properties of a set of cameras are known, synchronized frames from those cameras can be used to triangulate landmarks identified across their multiple points of view. With more cameras, this 3D tracking becomes more robust to occlusion and the inevitable errors in 2D landmark tracking and camera property estimates.
While OpenCV provides straightforward functions for the estimation of single camera intrinsic properties as well as estimates of the extrinsic properties of two cameras, there is no straightforward way to estimate extrinsic properties for more than two cameras. Performing this requires bundle adjustment, which demands an extensive series of computational steps and intermediate data tracking.
Caliscope automates this more complex calibration function along with providing visual feedback regarding parameter estimates at each stage of processing. Additionally, there are sample implementations of a Tracker class using Google's Mediapipe that demonstrate the capacity to integrate the full calibration results with landmark tracking tools to achieve 3D pose estimation. While Mediapipe pose estimation has limitations regarding accuracy and precision, it demonstrates a data processing pipeline that can easily integrate more powerful tracking tools as they emerge.
This README provides a general overview and quick guide to install Caliscope on your system. For a more detailed description of the calibration process and workflow, please see our docs.
For a quick sense of how the calibration process works, check out the video walk through of the sample project.
Demo Animation
https://github.com/mprib/caliscope/assets/31831778/803a4ce8-4012-4da1-87b9-66c5e6b31c59
Caliscope was used to calibrate the cameras used in the above recordings (both intrinsic and extrinsic parameters), run 2D landmark estimation across all the videos using Holistic Mediapipe pose estimation, then triangulate the 3D landmark positions based on the camera system calibration.
The animation was created in Blender based on these 3D landmark estimates using a companion project called Rigmarole.
The concurrent video was recorded with a 7 year old t440p laptop, 4 webcams (~$25 each) and another project called MultiWebCam.
Quick Start
Basic installation instructions can be found here. Please note that given the size of some core dependencies (OpenCV, Mediapipe, and PySide6 are among them) installation and initial launch can take a while.
For a basic overview of the entire workflow, please see the sample project for an example dataset and a video demonstration of the complete workflow.
Key Features
Calibration board creation
- Easy creation of
pngfiles for ChArUco calibration boards - board definition can be changed across intrinsic and extrinsic calibration allowing greater flexibiltiy
Intrinsic Camera Calibration
Automated calculation of camera intrinsic properties from input video
- Optical Center
- Focal Length
- Lens Distortion
Visualization of distortion model to ensure reasonableness
Extrinsic Camera Calibration
- Automated bundle adjustment to estimate 6 DoF relative position of cameras
- Visualizer to inspect the estimates from the bundle adjustment
- Setting of the World Origin within the visualizer to simplify data processing
3D Tracking
- Tracker API for integrating alternate tracking methods
- 3 sample implementations with Google Mediapipe (Hands/Pose/Holistic)
- Automated application of landmark tracking to synchronized videos
- Triangulation of 3D landmark position based on calibrated cameras
- Gap-filling and butterworth filtering to smooth trajectory estimates
Trajectory Output
- output to
.trcfile format for use in biomechanical modelling - output to tidy
.csvformat with well-labelled headers for straightforward integration with other workflows - companion project Rigmarole in development to facilitate creation of animated rigs in Blender
NOTE: Currently only using Mediapipe
Google's Mediapipe provides a relatively easy and efficient method for human subject tracking, though for many uses it is limiting. Caliscope has a general Tracker base class that is implemented in a few versions (Pose/Hands/Holistic). This has provided a proof of concept implementation of markerless tracking, though for more robust use the roadmap calls for integration with more powerful tools such as MMPose and DeepLabCut.
Reporting Issues and Requesting Features
To report a bug or request a feature, please open an issue. Please keep in mind that this is an open-source project supported by volunteer effort, so your patience is appreciated.
General Questions and Conversation
Post any questions in the Discussions section of the repo.
Acknowledgments
This project was inspired by FreeMoCap (FMC), which is spearheaded by Jon Matthis, PhD of the HuMoN Research Lab. The FMC calibration and triangulation system is built upon Anipose, created by Lili Karushchek, PhD. Caliscope was originally envisioned as an alternative calibration tool to Anipose that would allow more granular estimation of intrinsics as well as visual feedback during the calibration process. Several lines of of the original Anipose triangulation code are used in this code base, though otherwise it was written from the ground up. I'm grateful to Dr. Matthis for his time developing FreeMoCap, discussing it with me, pointing out important code considerations, and providing a great deal of information regarding open-source project management.
License
Caliscope is licensed under the permissive BSD 2-Clause license. The triangulation function was adapted from the Anipose code base which is also licensed under the BSD-2 Clause. A primary dependency of this project is PySide6 which provides the GUI front end. PySide6 is licensed under the LGPLv3. Caliscope does not modify the underlying source code of PySide6 which is available via PyPI.
Owner
- Login: mprib
- Kind: user
- Repositories: 2
- Profile: https://github.com/mprib
JOSS Publication
Caliscope: GUI Based Multicamera Calibration and Motion Tracking
Tags
camera calibration motion captureGitHub Events
Total
- Create event: 16
- Release event: 2
- Issues event: 54
- Watch event: 96
- Delete event: 8
- Issue comment event: 65
- Push event: 84
- Pull request event: 27
- Fork event: 19
Last Year
- Create event: 16
- Release event: 2
- Issues event: 56
- Watch event: 96
- Delete event: 8
- Issue comment event: 65
- Push event: 86
- Pull request event: 29
- Fork event: 19
Committers
Last synced: 7 months ago
Top Committers
| Name | Commits | |
|---|---|---|
| mprib | p****e@g****m | 3,063 |
| dependabot[bot] | 4****] | 3 |
| Ryan Govostes | r****t@g****m | 2 |
| Rohan | d****2@g****m | 1 |
| Jaeseung Han | t****o@g****m | 1 |
Issues and Pull Requests
Last synced: 4 months ago
All Time
- Total issues: 69
- Total pull requests: 57
- Average time to close issues: about 1 month
- Average time to close pull requests: about 10 hours
- Total issue authors: 24
- Total pull request authors: 3
- Average comments per issue: 1.03
- Average comments per pull request: 0.07
- Merged pull requests: 53
- Bot issues: 0
- Bot pull requests: 0
Past Year
- Issues: 45
- Pull requests: 37
- Average time to close issues: 7 days
- Average time to close pull requests: about 1 hour
- Issue authors: 15
- Pull request authors: 1
- Average comments per issue: 1.04
- Average comments per pull request: 0.03
- Merged pull requests: 33
- Bot issues: 0
- Bot pull requests: 0
Top Authors
Issue Authors
- mprib (41)
- kgyb (3)
- wanghlsara (2)
- seyed-mohammadreza-mousavi (2)
- charisoudis (2)
- keniel123 (1)
- RohanBhattacharyya (1)
- calcoloergosum (1)
- mssc89 (1)
- ChristianNSchmitz (1)
- maxbatt22 (1)
- jschoch (1)
- Gnarlywhale (1)
- DEVECLOVER (1)
- carlosedubarreto (1)
Pull Request Authors
- mprib (55)
- RohanBhattacharyya (1)
- calcoloergosum (1)
Top Labels
Issue Labels
Pull Request Labels
Packages
- Total packages: 1
-
Total downloads:
- pypi 1,148 last-month
- Total dependent packages: 0
- Total dependent repositories: 0
- Total versions: 15
- Total maintainers: 1
pypi.org: caliscope
GUI based multicamera calibration that integrates with 2D landmark tracking to triangulate 3D landmark positions
- Documentation: https://caliscope.readthedocs.io/
- License: BSD-2-Clause
-
Latest release: 0.6.7
published 4 months ago
Rankings
Maintainers (1)
Dependencies
- numpy *
- opencv-contrib-python *
- pandas *
- pyopengl *
- pyqt6 *
- pyqtgraph *
- scipy *
- seaborn *
- toml *
- actions/checkout v4 composite
- actions/upload-artifact v1 composite
- openjournals/openjournals-draft-action master composite
- actions/cache v2 composite
- actions/checkout v3 composite
- actions/setup-python v4 composite
- actions/checkout v2 composite
- actions/setup-python v2 composite
- 105 dependencies
