crisp

Camera-to-IMU calibration and synchronization toolbox

https://github.com/hovren/crisp

Science Score: 18.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
  • .zenodo.json file
  • DOI references
  • Academic publication links
  • Committers with academic emails
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (14.1%) to scientific vocabulary
Last synced: 11 months ago · JSON representation ·

Repository

Camera-to-IMU calibration and synchronization toolbox

Basic Info
  • Host: GitHub
  • Owner: hovren
  • License: gpl-3.0
  • Language: Python
  • Default Branch: master
  • Size: 107 KB
Statistics
  • Stars: 216
  • Watchers: 15
  • Forks: 74
  • Open Issues: 5
  • Releases: 0
Created over 12 years ago · Last pushed almost 9 years ago
Metadata Files
Readme License Citation

README.md

Camera-to-IMU calibration toolbox

This toolbox provides a python library to perform joint calibration of a rolling shutter camera-gyroscope system.

Given gyroscope and video data, this library can find the following parameters

  • True gyroscope rate
  • Time offset
  • Rotation between camera and gyroscope coordinate frames
  • Gyroscope measurement bias

If you use the package for your work, please cite the following paper

Ovrén, H and Forssén, P.-E. "Gyroscope-based video stabilisation with auto-calibration." In 2015 IEEE International Conference on Robotics and Automation (ICRA) (pp. 2090–2097). Seattle, WA

Can I use these methods for my application?

The calibration methods in this package assumes the following

  • Your camera is calibrated, including known readout time
  • The camera frame rate is constant, and known
  • The gyroscope frame rate is constant, and approximately known (within a few Hz, or percent)

If the video and gyroscope data are not uniformly sampled, but you have access to somewhat reliable timestamps, then you can still use the method if you resample the data to be uniform. By "reliable" we mean timestamps without drift, and no (or negligble) jitter.

Changes from 1.0

The 2.0 version of crisp features a new fully automatic calibrator. This means that there is no compelling reason to use the semi-manual methods in the previous version of crisp. Therefore the old example scripts have been removed, and the old functions are not imported into the module namespace. No old functions have been removed, so if you want to use them they are still available in submodules.

Installation

To use the package you need the following Python packages:

  • NumPy
  • SciPy
  • OpenCV
  • matplotlib

The easiest way is to install from PyPI:

$ pip install crisp

If you want to build the package from source, you also need the Cython package. To build and install the crisp module just run the following commands:

$ python setup.py build
$ python setup.py install

For a user-only installation add --user to the install command.

Usage

The gyroscope and video data are first loaded into a stream object (GyroStream, and a subclass of VideoStream respectively). To be able to understand how points are mapped from the real world to the image, the video stream also need a CameraModel (-subclass) instance.

import crisp

gyro = crisp.GyroStream.from_data(some_data_array)
camera_model = crisp.AtanCameraModel(...) # One specific choice of camera model
video = crisp.VideoStream.from_file(camera_model, video_file_path)

We then tie the streams together using a AutoCalibrator instance. Since the calibration proces need to have estimates of the time offset and relative rotation, these are first estimated using the initialize() member. This initialization only requires that you give an approximate gyroscope sample rate (in Hz).

calibrator = crisp.AutoCalibrator(video, gyro)
calibrator.initialize(guessed_gyro_rate)
result = calibrator.calibrate() # Dict of calibrated parameters

Initialization and calibration errors can be caught by handling InitializationError and CalibrationError.

Example scripts

We bundle one example script gopro_dataset_example.py which shows how to use the library with the data in our dataset (http://www.cvl.isy.liu.se/research/datasets/gopro-gyro-dataset/). This is the same dataset that was used to produce the above mentioned ICRA 2015 paper.

Feedback

  • For any questions regarding the method and paper, please send an e-mail to hannes.ovren@liu.se.
  • For issues about the code, you are welcome to either use the tools (issue reporting, etc.) provided by GitHub, or send an e-mail.

License

All code in this repository is licensed under the GPL version 3.

Owner

  • Name: Hannes Ovrén
  • Login: hovren
  • Kind: user
  • Location: Linköping, Sweden

Citation (CITATION)

To cite this software please use the following BibTex information

@inproceedings{Ovren2015,
title = {{Gyroscope-based video stabilisation with auto-calibration}},
author = {Ovrén, Hannes and Forssén, Per-Erik},
booktitle = {2015 IEEE International Conference on Robotics and Automation (ICRA)},
year = {2015},
month = may,
address = {Seattle, WA},
pages = {2090--2097},
doi = {10.1109/ICRA.2015.7139474},
}

GitHub Events

Total
  • Watch event: 12
Last Year
  • Watch event: 12

Committers

Last synced: over 2 years ago

All Time
  • Total Commits: 64
  • Total Committers: 2
  • Avg Commits per committer: 32.0
  • Development Distribution Score (DDS): 0.016
Past Year
  • Commits: 0
  • Committers: 0
  • Avg Commits per committer: 0.0
  • Development Distribution Score (DDS): 0.0
Top Committers
Name Email Commits
Hannes Ovrén h****n@l****e 63
Hannes Ovrén h****s@o****e 1
Committer Domains (Top 20 + Academic)

Issues and Pull Requests

Last synced: about 1 year ago

All Time
  • Total issues: 15
  • Total pull requests: 1
  • Average time to close issues: about 1 month
  • Average time to close pull requests: about 23 hours
  • Total issue authors: 14
  • Total pull request authors: 1
  • Average comments per issue: 2.73
  • Average comments per pull request: 2.0
  • Merged pull requests: 0
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 0
  • Pull requests: 0
  • Average time to close issues: N/A
  • Average time to close pull requests: N/A
  • Issue authors: 0
  • Pull request authors: 0
  • Average comments per issue: 0
  • Average comments per pull request: 0
  • Merged pull requests: 0
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • mppcasc (2)
  • roschachJoke (1)
  • youruncleda (1)
  • sergiud (1)
  • ayumizll (1)
  • agnivsen (1)
  • brunocannavina (1)
  • yang778 (1)
  • Severn-Vergil (1)
  • goldbattle (1)
  • mattangus (1)
  • hovren (1)
  • Jigyasu (1)
  • nesnes (1)
Pull Request Authors
  • sergiud (1)
Top Labels
Issue Labels
bug (1)
Pull Request Labels

Packages

  • Total packages: 1
  • Total downloads:
    • pypi 109 last-month
  • Total dependent packages: 0
  • Total dependent repositories: 4
  • Total versions: 5
  • Total maintainers: 1
pypi.org: crisp

Camera-to-IMU calibration and synchronization toolkit

  • Versions: 5
  • Dependent Packages: 0
  • Dependent Repositories: 4
  • Downloads: 109 Last month
Rankings
Stargazers count: 5.0%
Forks count: 5.0%
Dependent packages count: 7.3%
Dependent repos count: 7.7%
Average: 9.4%
Downloads: 22.1%
Maintainers (1)
Last synced: 12 months ago